<?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>236099</bug_id>
          
          <creation_ts>2022-02-03 13:07:55 -0800</creation_ts>
          <short_desc>Introduce a RemoteMediaSampleProxy to represent captured video frames used in Media Streams and present in GPUP</short_desc>
          <delta_ts>2022-02-11 08:10:10 -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 Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236467</dependson>
          <blocked>236356</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837067</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-03 13:07:55 -0800</bug_when>
    <thetext>Introduce a RemoteMediaSampleProxy to represent captured video frames used in Media Streams and present in GPUP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837069</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-03 13:08:22 -0800</bug_when>
    <thetext>&lt;rdar://88260597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837080</commentid>
    <comment_count>2</comment_count>
      <attachid>450810</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-03 13:25:55 -0800</bug_when>
    <thetext>Created attachment 450810
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837317</commentid>
    <comment_count>3</comment_count>
      <attachid>450810</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-04 02:13:28 -0800</bug_when>
    <thetext>Comment on attachment 450810
WIP

Quickly glancing at it, the WebKit part of it looks great to me.
At some point, we will need to be able to read remote video frame proxy pixels from WebProcess but this should be easy to add using SharedVideoFrameReader/Writer.
I am less sure about the integration with MediaSample.
Could you take a look at these bits in https://bugs.webkit.org/show_bug.cgi?id=236131 and tell me what you think.
I am in particular wondering whether we could not have VideoFrame being a wrapper around a Variant&lt;CVPixelBufferRef, WebRTCBuffer, RemoteVideoFrameProxy&gt;.

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

&gt; Source/WebCore/platform/MediaSample.h:53
&gt; +        RemoteVideoFrameProxyType, // FIXME: To be removed when VideoFrame is not MediaSample.

Normally, if we add RemoteVideoFrameProxyType, we should probably add a new type in the union below.
In https://bugs.webkit.org/show_bug.cgi?id=236131, I am introducing VideoFrameType as a member and VideoFrame* as a member of the union.
Ideally, VideoFrame would be able to encapsulate the RemoteVideoFrameProxyType case.

&gt; Source/WebCore/platform/MediaSample.h:114
&gt; +    virtual RefPtr&lt;ImageBuffer&gt; imageBuffer() const { return nullptr; }

I would be tempted to move imageBuffer() to RemoteVideoFrameProxyType branch code if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837349</commentid>
    <comment_count>4</comment_count>
      <attachid>450890</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-04 06:44:13 -0800</bug_when>
    <thetext>Created attachment 450890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837379</commentid>
    <comment_count>5</comment_count>
      <attachid>450894</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-04 07:27:36 -0800</bug_when>
    <thetext>Created attachment 450894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837380</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-04 07:29:31 -0800</bug_when>
    <thetext>&gt; Normally, if we add RemoteVideoFrameProxyType, we should probably add a new type in the union below.

No, the union is pointless in this scenario.
The type is just used to identify that RemoteVideoFrameProxy is not a MediaSourceAVFObjC.

When VideoFrame is not a MediaSource, there will not be a union or variant, as all the instances are normal subclasses (like ImageBuffers and other abstractions)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838161</commentid>
    <comment_count>7</comment_count>
      <attachid>451102</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-07 08:10:12 -0800</bug_when>
    <thetext>Created attachment 451102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838163</commentid>
    <comment_count>8</comment_count>
      <attachid>451103</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-07 08:14:39 -0800</bug_when>
    <thetext>Created attachment 451103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838168</commentid>
    <comment_count>9</comment_count>
      <attachid>451106</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-07 08:20:24 -0800</bug_when>
    <thetext>Created attachment 451106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838206</commentid>
    <comment_count>10</comment_count>
      <attachid>451106</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-07 09:28:02 -0800</bug_when>
    <thetext>Comment on attachment 451106
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        currently are currently typed as:

s/currently are currently typed/currently are typed/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838556</commentid>
    <comment_count>11</comment_count>
      <attachid>451217</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-08 01:01:26 -0800</bug_when>
    <thetext>Created attachment 451217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838628</commentid>
    <comment_count>12</comment_count>
      <attachid>451217</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-08 05:22:54 -0800</bug_when>
    <thetext>Comment on attachment 451217
Patch

After reading most of the patch, I know better understand it so there might be questions at the beginning that might not be needed.
Anyway, my main question is if we could stick to the model where:
- GPUProcess creates an IOSurface
- GPUProcess sends it to WebProcess (as an ID)
- WebProcess creates a MediaSample/VideoFrame based on the ID.
This model is what we use for libwebrtc and video capture, it should also be applicable to canvas capture.

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        RemoteVideoFrameProxy can be sent to the GPUP and the the SampleBufferDisplayLayer. So

s/the the/the/

&gt; Source/WebKit/ChangeLog:21
&gt; +        map to normal MediaSampleAVFObjC.

It would make more sense to do a direct RemoteVideoFrameIdentifier -&gt; IOSurface. WebProcess will need the other information (rotation, size, timestamps) but may not need the IOSurface raw bytes.

&gt; Source/WebKit/ChangeLog:32
&gt; +        received.

I am not sure how this applies to the typical webrtc case which is: a new video frame is created in GPUProcess, let&apos;s send an IPC to WebProcess.
The basic flow I had in mind was something like the following:
- At the moment we want to send it to WebProcess, we register the IOSurface in a map which provides us an Identifier. As part of the IPC message, we send the identifier.
- The map refs the IOSurface and will only release it when WebProcess asks to release it or when WebProcess crashes.
This way of doing things makes things very easy to integrate with existing code paths, it is very similar to MachSendRight.
It also allows if we think this is useful to have per-source or per-use maps.

The potential issues with this model are:
- If WebProcess does not process the message, we could leak the surface. We need to make sure we always decode IPC messages that contain such IDs (LibWebRTCCodecs and RemoteCaptureSampleManager guarantee this).
- When WebProcess releases the IOSurface, we need to make sure we correctly handle the race conditions between sinks wanting to access the IOSurface and the WebProcess message to release the IOSurface. One way of doing this would be to use AsyncReply, the completion handler in WebProcess holding a ref to the WebProcess object. Or we could use a BinarySemaphore to let WebProcess be notified when it is ok to unref the WebProcess object.

On WebRTC side, we also need to send MediaSample from WebProcess to GPUProcess (to HW encoders say).
The frames might not always be remote-IOSurface but in memory as well.
So it is best if we can use the existing IPC messages like LibWebRTCCodecsProxy::EncodeFrame with both kind of frames.

&gt; Source/WebKit/ChangeLog:46
&gt; +            &quot;End the life-time of identifier 1, version 32 when all 77 reads have completed. Create version = 33&quot;

What is the use case for version?
In the typical case, what we do is create-read-remove.
It makes sense to deal with read/remove concurrency but version seems to have another purpose.

&gt; Source/WebCore/platform/VideoFrame.h:45
&gt; +    // FIXME: These are not intended to be used for these objects.

I think it would be good to separate between APIs that will be needed to the final VideoFrame object and MediaSample specific methods that we do not care.
presentationSize() for instance is used in WebProcess.
Patch in https://bugs.webkit.org/attachment.cgi?id=450881&amp;action=review is trying to highlight this separation.

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:958
&gt; +

not needed

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:130
&gt; +    auto mediaSample = RemoteVideoFrameProxy::create(*m_gpuProcessConnection);

Ah ok, now I see why you are doing it this way.
WebProcess is asking a MediaSample, so let&apos;s create one now in WebProcess then let GPUProcess deal with filling it at some point.
For Canvas Capture, we can change the synchronous call to an async call with a completion handler.
That way we could write something like:
void RemoteGraphicsContextGLProxy::paintCompositedResultsToMediaSample(CompletionHandler&lt;void(RefPtr&lt;MediaSample&gt;&amp;&amp;)&gt;&amp;&amp; callback)
{
    sendWithAsyncReply(Messages::RemoteGraphicsContextGL::PaintCompositedResultsToMediaSample(), WTFMove(callback));
}

This would simplify the logic by always making GPUProcess responsible for creating the IOSurface, the IDs...
I am not sure we have a use case for creating a synchronous MediaSample that would be later filled by GPUProcess data.
If so, maybe we could treat this using a dedicated sync IPC for now and see how we can move away from sync IPC as a follow-up?

&gt; Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:146
&gt; +        return;

Why do we need this check? It might probably be racy anyway given this happens in a background thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839052</commentid>
    <comment_count>13</comment_count>
      <attachid>451346</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-09 01:12:08 -0800</bug_when>
    <thetext>Created attachment 451346
WIP with CaptureSampleManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839073</commentid>
    <comment_count>14</comment_count>
      <attachid>451217</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-09 03:10:18 -0800</bug_when>
    <thetext>Comment on attachment 451217
Patch

OK, let&apos;s go with this version. I think we will want to move ID creation mostly or solely in GPUProcess which will allow simplifying things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839076</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 03:24:36 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 451217 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839282</commentid>
    <comment_count>16</comment_count>
      <attachid>451405</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-09 10:50:01 -0800</bug_when>
    <thetext>Created attachment 451405
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839576</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 02:37:37 -0800</bug_when>
    <thetext>Committed r289525 (247056@main): &lt;https://commits.webkit.org/247056@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451405.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840007</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-02-10 15:47:12 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 236467</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840275</commentid>
    <comment_count>19</comment_count>
      <attachid>451662</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 02:43:47 -0800</bug_when>
    <thetext>Created attachment 451662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840278</commentid>
    <comment_count>20</comment_count>
      <attachid>451663</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 02:51:04 -0800</bug_when>
    <thetext>Created attachment 451663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840284</commentid>
    <comment_count>21</comment_count>
      <attachid>451667</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 03:00:41 -0800</bug_when>
    <thetext>Created attachment 451667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840287</commentid>
    <comment_count>22</comment_count>
      <attachid>451669</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 03:36:30 -0800</bug_when>
    <thetext>Created attachment 451669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840310</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 05:37:31 -0800</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840313</commentid>
    <comment_count>24</comment_count>
      <attachid>451682</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-11 05:58:26 -0800</bug_when>
    <thetext>Created attachment 451682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840366</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 08:10:01 -0800</bug_when>
    <thetext>Committed r289622 (247133@main): &lt;https://commits.webkit.org/247133@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451682.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450810</attachid>
            <date>2022-02-03 13:25:55 -0800</date>
            <delta_ts>2022-02-04 06:44:00 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236099-20220203232553.patch</filename>
            <type>text/plain</type>
            <size>120737</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIzYzMwNmQ2NzY4ZTM4
NDhkZTQzMTY1ZjVmM2I5ODI4ZDUxMWQ0NC4uYzUyYmEyOWI2NTFmMTlmZGVhNTdkNGE2NDQ5MjJi
MzBlNWRmMjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAyLTAzICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKworICAgICAgICBBZGQgTWVk
aWFTYW1wbGU6OmltYWdlQnVmZmVyKCksIG1ha2UgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDIHVzZSBpdC4KKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDIG5lZWRzIHRvIGJlIGFibGUgdG8gcGFpbnQgdGhlIFJlbW90ZVZpZGVvRnJhbWVQcm94
eXMuCisgICAgICAgIFRoZXNlIHdpbGwgcmV0dXJuIGEgR1BVUCBmcmllbmRseSBJbWFnZUJ1ZmZl
ci4KKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIG5lZWRzIHRv
IGJlIGFibGUgdG8gcGFpbnQgaW4tcHJvY2VzcyBNZWRpYVNhbXBsZUFWRk9iakNzLgorICAgICAg
ICBUaGVzZSB3aWxsIHJldHVybiBXUCBOYXRpdmVJbWFnZS4KKworICAgICAgICBBZGQgVmlkZW9G
cmFtZSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4gQ3VycmVudGx5
IGluaGVyaXRzCisgICAgICAgIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3aWxsIHJlbW92
ZSB0aGUgTWVkaWFTYW1wbGUuCisKKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgor
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjppbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjp0cmFja0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnBy
ZXNlbnRhdGlvblNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zm
c2V0VGltZXN0YW1wc0J5KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVz
dGFtcHMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvRnJhbWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OmJ5dGVSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1l
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWVucXVl
dWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZy
YW1lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvRnJhbWVGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAo
aXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3Qp
OgorCiAyMDIyLTAyLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLIG1ha2UgZGlzdGNoZWNrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDhiYzczNWM1MDQwN2UyOTMwNjM5Zjk0NWE2YWJjMWJjYzgyOTYzZjIuLmE0M2YxMzNlZWEy
Yjc0ZjVlZTIwMWNmMmM3ZDZjMzllNWExMTY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBA
CisyMDIyLTAyLTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2Fw
dHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBH
UFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYw
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAK
KworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3M6CisgICAgICAgIEFkZCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAg
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorICAgICAg
ICBNaXNzaW5nOiBJbnN0YW50aWF0ZSBzdWNoIGEgSW1hZ2VCdWZmZXIgdGhhdCBpdCBjYW4gYmUg
ZmlsbGVkIHdpdGggdGhlCisgICAgICAgIFZpZGVvRnJhbWUgSU9TdXJmYWNlIGluIEdQVVAuCisK
KyAgICAgICAgR1BVUDoKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBt
YXBwaW5nCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxl
LiBDdXJyZW50bHkgYWxsIG9iamVjdHMKKyAgICAgICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBs
ZUFWRk9iakMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9i
amVjdEhlYXAgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZEltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBBZGRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1l
c3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwQ29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRl
VmlkZW9GcmFtZUNWKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1
ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRl
TGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAo
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICogU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3RhdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhl
bEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndhaXRGb3JXYXNJbml0aWFsaXplZCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
d2FzSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAgIChpc1R5cGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
UmVtb3RlVmlkZW9GcmFtZVByb3h5Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklm
TmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmg6CisKIDIwMjItMDItMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNhbXBsZUJ1ZmZlckRpcGxheUxheWVyIHNob3VsZCBub3QgbmVlZCB0
byBjcmVhdGUgSU9TdXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZjhmZjNlNjE2YzMwMTgz
MjY4YWE1ZTUyODJkMTVhZTBjMTZjNzZmZi4uNmM2OTNiMjM0ZGFjYWQxNDliOWQ5NzhlZTVlZDc2
NWEwYjE2NWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQxLDYgKzEzNDEsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vVXNlckFnZW50
LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0
Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBw
bGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0
YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNTFiZmFiODg4MGI5ZDY4OTZiMzA3OGIwOTMwZGJlNzYzNzExZmUwOS4uMTc2OGYyZGYxMzRi
YTUyNDk2Y2Y5MjY3ZTQ2MjI3MDllMTI3OWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5MjYsNiAr
MTkyNiw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAK
K3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3Bp
ZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3JtL1dpZGdldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxMDczMzIyNDM2ZjRlYzI1MjgxZWExOGJmN2QxODEwYmIzN2Q5MzBiLi45OGUxMjE5
NjhhNWY1ODExMzI4ZjRlZmYwNWQwYmY0MjIyODRkN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDAyLDYgKzI0MDIsNyBA
QAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5
NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9G
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0
NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEzREFGMjdBQkY4
QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5
NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8q
IEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTExNTA0LDYgKzExNTA1LDggQEAKIAkJN0IxNjE5MTAyNzE5ODgw
RTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRp
YVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQx
MEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvRnJhbWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcg
LyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Zy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJF
OTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2
MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxMjEsNiArMzAxMjQs
OCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJ
CQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxl
LmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICov
LAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJ
NDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovLAogCQkJ
CTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJ
CQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5j
cHAgKi8sCkBAIC0zNzc4Nyw2ICszNzc5Miw3IEBACiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3
QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAx
MDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBW
aWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFD
NTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2
MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uODY2N2IyZGE4ODhlMjAxYzg0NDM4M2Vm
ZmQwNThjNWJjNzQ0Y2Y1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBA
IC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3Jp
cHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1vY2tTYW1wbGVCb3g7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogc3RydWN0IFBsYXRmb3Jt
U2FtcGxlIHsKICAgICBlbnVtIHsKQEAgLTQ5LDkgKzUwLDEwIEBAIHN0cnVjdCBQbGF0Zm9ybVNh
bXBsZSB7CiAgICAgICAgIENNU2FtcGxlQnVmZmVyVHlwZSwKICAgICAgICAgR1N0cmVhbWVyU2Ft
cGxlVHlwZSwKICAgICAgICAgQnl0ZVJhbmdlU2FtcGxlVHlwZSwKKyAgICAgICAgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5VHlwZSwgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgd2hlbiBWaWRlb0ZyYW1l
IGlzIG5vdCBNZWRpYVNhbXBsZS4KICAgICB9IHR5cGU7CiAgICAgdW5pb24gewotICAgICAgICBN
b2NrU2FtcGxlQm94KiBtb2NrU2FtcGxlQm94OworICAgICAgICBjb25zdCBNb2NrU2FtcGxlQm94
KiBtb2NrU2FtcGxlQm94OwogICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBjbVNhbXBsZUJ1ZmZl
cjsKICAgICAgICAgR3N0U2FtcGxlKiBnc3RTYW1wbGU7CiAgICAgICAgIHN0ZDo6cGFpcjxNVFBs
dWdpbkJ5dGVTb3VyY2VSZWYsIENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGJ5dGVSYW5nZVNhbXBs
ZTsKQEAgLTY2LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29k
ZVRpbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHBy
ZXNlbnRhdGlvblNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSA9IDA7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgSGFzU3luY0luZm8gPSAxIDw8IDMsCiAgICAgfTsKICAgICB2aXJ0dWFsIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0ID0gMDsKIAogICAgIHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAgICBzaXpl
X3QgYnl0ZU9mZnNldCB7IDAgfTsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU8pICYmIEVOQUJMRV9WSURFTwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH07CiAjZW5kaWYKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGlzU3lu
YygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlz
cGxheWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlODE2ZWNkMDhj
Yjk1NTI0ZDZhYTJkNzFhZmNiOWYwYjkxNzg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlkZW9GcmFt
ZTo6VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworVmlkZW9GcmFtZTo6flZpZGVvRnJhbWUoKSA9
IGRlZmF1bHQ7CisKK01lZGlhVGltZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitNZWRpYVRp
bWUgVmlkZW9GcmFtZTo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiB7IH07Cit9CisKK0F0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJhY2tJ
RCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsK
K30KKworc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2ViQ29yZTo6RmxvYXRTaXpl
IFZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6b2Zmc2V0
VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiti
b29sIFZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6cGFpcjxSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBWaWRlb0ZyYW1l
OjpkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiwgVXNlRW5kVGltZSkKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07Cit9CisKK1JlZjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdAoreworICAgIENSQVNIKCk7Cit9CisKK01lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBW
aWRlb0ZyYW1lOjpmbGFncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpTYW1w
bGVGbGFnczo6Tm9uZTsKK30KKworc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdl
PiBWaWRlb0ZyYW1lOjpieXRlUmFuZ2UoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1vdmUg
ZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFZpZGVvRnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdAoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIyZDk1MDEwZDM2ZWI2MmI5ZWFlMWI5OTgzN2I4NDc3MTQxZTA1ZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgYSB2aWRlbyBmcmFtZSBmcm9tIGEg
ZGVjb2RlciwgY2FwdHVyZSBzb3VyY2UsIG9yIHNpbWlsYXIuCisvLyBGSVhNRTogQ3VycmVudGx5
IGZvciBpbXBsZW1lbnRhdGlvbiBwdXJwb3NlcyBpbmhlcnRzIGZyb20gTWVkaWFTYW1wbGUgdW50
aWwgY2FwdHVyZSBjb2RlCisvLyBzdG9wcyByZWZlcnJpbmcgdG8gTWVkaWFTYW1wbGUKK2NsYXNz
IFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVkaWFTYW1wbGUgeworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBW
aWRlb0ZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBub3QgaW50
ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0cy4KKyAgICAvLyBXZWJDb3JlOjpNZWRp
YVNhbXBsZSBvdmVycmlkZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGRlY29kZVRp
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRpb24o
KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0VGlt
ZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGl2aXNhYmxlKCkgY29uc3QgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxN
ZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFVz
ZUVuZFRpbWUgPSBVc2VFbmRUaW1lOjpEb05vdFVzZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVS
YW5nZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0IGZpbmFsOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKaW5kZXggNTE2ZGNkYTk2ODY3Zjc1OWZhYzVlMjA0MDkyNzVjYzA4OWMwYjMxOC4uYWM4
ZGY1ZTBkZDMzZWYxNTk1Yzk3ZGY2M2ZiMWU5NTEwYzZmYTlhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgKQEAgLTI3LDEwICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkg
JiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNs
dWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2lu
Y2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorI2luY2x1ZGUgPHZhcmlhbnQ+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgpAQCAtMTg3LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBE
aXNwbGF5TW9kZSBjdXJyZW50RGlzcGxheU1vZGUoKSBjb25zdDsKICAgICBib29sIHVwZGF0ZURp
c3BsYXlNb2RlKCk7CisKICAgICB2b2lkIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAg
ICBlbnVtIGNsYXNzIFBsYXliYWNrU3RhdGUgewpAQCAtMjI1LDYgKzIyOSw4IEBAIHByaXZhdGU6
CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYWN0aXZlVmlkZW9UcmFjaygpIGNvbnN0
OwogCisgICAgdm9pZCBzZXRTYW1wbGUoUmVmUHRyPE1lZGlhU2FtcGxlPiYmKTsKKwogICAgIE1l
ZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Q
cml2YXRlPiBtX21lZGlhU3RyZWFtUHJpdmF0ZTsKICAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbT4gbV9hY3RpdmVWaWRlb1RyYWNrOwpAQCAtMjMyLDE1ICsyMzgsMTIgQEAg
cHJpdmF0ZToKICAgICBNZWRpYVRpbWUgbV9zdGFydFRpbWU7CiAgICAgTWVkaWFUaW1lIG1fcGF1
c2VkVGltZTsKIAotICAgIHN0cnVjdCBDdXJyZW50RnJhbWVQYWludGVyIHsKLSAgICAgICAgQ3Vy
cmVudEZyYW1lUGFpbnRlcigpID0gZGVmYXVsdDsKLSAgICAgICAgdm9pZCByZXNldCgpOwotCi0g
ICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2dJbWFnZTsKLSAgICAgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtZWRpYVNhbXBsZTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y+IHBpeGVsQnVmZmVyQ29uZm9ybWVyOwotICAgIH07Ci0gICAgQ3VycmVudEZy
YW1lUGFpbnRlciBtX2ltYWdlUGFpbnRlcjsKKyAgICAvLyBTYW1wbGUgY3VycmVudGx5IGFjdGl2
ZSBpbiBET00sIG1haW4gdGhyZWFkLgorICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9tZWRpYVNh
bXBsZTsKKyAgICAvLyBOYXRpdmVJbWFnZSBpcyBiZWluZyBwaGFzZWQgb3V0LgorICAgIHVzaW5n
IE1lZGlhU2FtcGxlSW1hZ2VWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bW9ub3N0YXRlLCBS
ZWY8SW1hZ2VCdWZmZXI+LCBSZWY8TmF0aXZlSW1hZ2U+PjsKKyAgICBNZWRpYVNhbXBsZUltYWdl
VmFyaWFudCBtX21lZGlhU2FtcGxlSW1hZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAKICAgICBIYXNoTWFwPFN0
cmluZywgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX2F1ZGlvVHJhY2tNYXA7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4g
bV92aWRlb1RyYWNrTWFwOwpAQCAtMjcxLDYgKzI3NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXRh
aW5QdHI8V2ViUm9vdFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0No
YW5nZUxpc3RlbmVyOwogCisgICAgLy8gUGVuZGluZyBzYW1wbGUgZnJvbSBkZWNvZGluZyB0aHJl
YWQuCiAgICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7CiAgICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJk
NmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1ZWUyN2M3OGEyMGQ1OTU1Li5hMmRkYmNjZGY3YzU2ODViOGIw
NmYwNzRkNWI2ZDA0ODJmMWI0OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0y
MzAsMTMgKzIzMCw2IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAKIHN0YXRpYyBpbmxpbmUg
Q0dBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNhbXBsZSYg
c2FtcGxlKQogewotICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKLSAgICBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNh
bXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZUJ1ZmZlcikpOwotICAgIHNpemVfdCB3aWR0
aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcik7Ci0gICAgc2l6ZV90IGhlaWdo
dCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpOwotICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7Ci0K
ICAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwog
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQogICAgICAgICB2aWRlb1RyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUodmlkZW9UcmFuc2Zvcm0sIC0xLCAxKTsKQEAgLTI4Mywx
MCArMjc2LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpy
ZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsK
IAotICAgIGlmICghbV9jdXJyZW50VmlkZW9TYW1wbGUgJiYgIW1faW1hZ2VQYWludGVyLm1lZGlh
U2FtcGxlKQorICAgIGlmICghbV9jdXJyZW50VmlkZW9TYW1wbGUgJiYgIW1fbWVkaWFTYW1wbGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVWaWRlb1NhbXBsZShtX2N1cnJlbnRWaWRl
b1NhbXBsZSA/ICptX2N1cnJlbnRWaWRlb1NhbXBsZSA6ICptX2ltYWdlUGFpbnRlci5tZWRpYVNh
bXBsZSk7CisgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKG1fY3VycmVudFZpZGVvU2FtcGxlID8gKm1f
Y3VycmVudFZpZGVvU2FtcGxlIDogKm1fbWVkaWFTYW1wbGUpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEsIFNlY29uZHMgcHJl
c2VudGF0aW9uVGltZSkKQEAgLTMxNiw5ICszMDksOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBz
YQogICAgIGlmICghbV9hY3RpdmVWaWRlb1RyYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgPSAmc2FtcGxlOwot
ICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fbWVk
aWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFnZSkgeworICAgICAgICBzZXRT
YW1wbGUoJnNhbXBsZSk7CiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGEpCiAgICAgICAgICAgICB1cGRhdGVSZWFkeVN0YXRl
KCk7CiAgICAgfQpAQCAtMzU3LDggKzM0OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgaWYg
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT5kaWRGYWlsKCkpIHsKICAgICAgICAgZmx1c2hSZW5kZXJlcnMoKTsKLSAgICAgICAgaWYgKG1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxl
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAgICAgIGlmIChtX21lZGlhU2FtcGxl
KQorICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX21lZGlhU2FtcGxlKTsKICAgICAg
ICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKICAgICB9CiB9CkBAIC02NzgsNyArNjcwLDcgQEAgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjdXJyZW50UmVhZHlTdGF0ZSgKICAgICBpZiAoIW1fbWVkaWFTdHJlYW1Qcml2YXRlIHx8ICFt
X21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlKCkgfHwgIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5o
YXNUcmFja3MoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
Tm90aGluZzsKIAotICAgIGJvb2wgd2FpdGluZ0ZvckltYWdlID0gYWN0aXZlVmlkZW9UcmFjaygp
ICYmICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZTsKKyAgICBib29sIHdhaXRpbmdGb3JJbWFn
ZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9tZWRpYVNhbXBsZTsKICAgICBpZiAod2FpdGlu
Z0ZvckltYWdlICYmICghbV9oYXZlU2Vlbk1ldGFkYXRhIHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1h
Z2UpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5n
OwogCkBAIC04MDYsNyArNzk4LDE0IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdl
KCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFp
bnRlci5jZ0ltYWdlID8gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDog
bnVsbHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSA9IHN0ZDo6dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbXSAoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSB7CisgICAgICAgIHJl
dHVybiBpbWFnZUJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoKTsKKyAgICB9LCBbXSAoTmF0aXZlSW1h
Z2UmIGltYWdlKSB7CisgICAgICAgIHJldHVybiBSZWZQdHIgeyAmaW1hZ2UgfTsKKyAgICB9LCBb
XSAoc3RkOjptb25vc3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxOYXRpdmVJbWFnZT4g
eyB9OworICAgIH0pLCBtX21lZGlhU2FtcGxlSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFn
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgaW1hZ2UgPyBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVs
bHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCkBAIC04ODIsNyArODgxLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0
ZWRWaWRlb1RyYWNrKCkKICAgICB9CiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2FjdGl2
ZVZpZGVvVHJhY2spIHsKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIucmVzZXQoKTsKKyAgICAgICAg
c2V0U2FtcGxlKG51bGxwdHIpOwogICAgICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBOb25lKQog
ICAgICAgICAgICAgbV93YWl0aW5nRm9yRmlyc3RJbWFnZSA9IHRydWU7CiAgICAgfQpAQCAtOTg0
LDE4ICs5ODMsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKIHsK
LSAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpCisgICAgaWYgKCFtX21lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX2ltYWdl
UGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25m
b3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcg
KilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVf
MzJCR1JBKSB9KTsKLQotICAgIEFTU0VSVChtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZv
cm1lcik7Ci0gICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKKyAg
ICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8c3RkOjptb25vc3RhdGU+KG1fbWVkaWFTYW1w
bGVJbWFnZSkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0
aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZm
ZXIobV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNt
U2FtcGxlQnVmZmVyKSk7Ci0gICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdl
RnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX21lZGlhU2FtcGxlLT5pbWFnZUJ1ZmZlcigpKSB7CisgICAgICAgIG1fbWVkaWFTYW1wbGVJ
bWFnZSA9IFJlZiB7ICppbWFnZUJ1ZmZlciB9OworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZv
cm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9y
bWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKKyAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fbWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxl
LmNtU2FtcGxlQnVmZmVyKSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
cGl4ZWxCdWZmZXIpKTsKKyAgICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgIG1fbWVkaWFTYW1w
bGVJbWFnZSA9IFJlZiB7ICpuYXRpdmVJbWFnZSB9OworICAgIHJldHVybjsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKQEAgLTEwMDMsMjQgKzEwMDUsMjcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBp
ZiAobV9kaXNwbGF5TW9kZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNw
bGF5TW9kZSAhPSBQYWludEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0g
ICAgICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0g
UGFpbnRJdEJsYWNrKSB7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBJbnRTaXplKGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpKSksIENvbG9y
OjpibGFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpZiAoIW1faW1hZ2VQYWlu
dGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7Ci0gICAgRmxv
YXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUoKSB9Owot
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25N
YXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKLSAgICBGbG9hdFJlY3QgdHJhbnNm
b3JtZWREZXN0UmVjdCA9IHZhbHVlT3JEZWZhdWx0KHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKSku
bWFwUmVjdChkZXN0UmVjdCk7Ci0gICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0p
OwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICB1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpOworICAgIHN0ZDo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0gKEltYWdlQnVmZmVy
JiBpbWFnZUJ1ZmZlcikgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisgICAgICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyB7IH0sIGltYWdl
QnVmZmVyLmxvZ2ljYWxTaXplKCkgfTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9tZWRpYVNhbXBsZSk7CisgICAg
ICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmFsdWVPckRlZmF1bHQodmlkZW9U
cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKKyAgICAgICAgY29udGV4dC5j
b25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlciwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICB9LCBb
Jl0gKE5hdGl2ZUltYWdlJiBpbWFnZSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBG
bG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlLnNpemUoKSB9OworICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX21lZGlhU2Ft
cGxlKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2YWx1ZU9yRGVm
YXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoZGVzdFJlY3QpOworICAgICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0
LCBpbWFnZVJlY3QpOworICAgIH0sIFtdIChzdGQ6Om1vbm9zdGF0ZSkgeworICAgIH0pLCBtX21l
ZGlhU2FtcGxlSW1hZ2UpOwogfQogCiBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlVmlkZW9GcmFt
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoKQpAQCAtMTAyOSwxNSArMTAzNCwyMSBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2Ft
cGxlVmlkZW9GcmFtZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
bwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChtX2Rpc3BsYXlNb2RlID09
IFBhaW50SXRCbGFjaykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAgIGlmICghbV9tZWRpYVNhbXBsZSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUtPnZpZGVvRnJhbWUoKTsKKyAgICByZXR1cm4gbV9tZWRpYVNhbXBsZS0+dmlkZW9GcmFt
ZSgpOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKIHsKICAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFn
ZSgpOwotICAgIHJldHVybiBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID8gbV9pbWFnZVBhaW50ZXIu
Y2dJbWFnZS0+Y29sb3JTcGFjZSgpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cisg
ICAgcmV0dXJuIHN0ZDo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXSAoY29uc3QgSW1hZ2VCdWZm
ZXImIGltYWdlQnVmZmVyKSB7CisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci5jb2xvclNwYWNl
KCk7CisgICAgfSwgW10gKGNvbnN0IE5hdGl2ZUltYWdlJiBpbWFnZSkgeworICAgICAgICByZXR1
cm4gaW1hZ2UuY29sb3JTcGFjZSgpOworICAgIH0sIFtdIChzdGQ6Om1vbm9zdGF0ZSkgeworICAg
ICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CisgICAgfSksIG1fbWVk
aWFTYW1wbGVJbWFnZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjp1cGRhdGVMYXllcnNBc05lZWRlZCgpCkBAIC0xMTAyLDEzICsxMTEzLDYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRU
YXNrKEZ1bmN0aW9uPHZvaWQgKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OkN1cnJlbnRGcmFtZVBhaW50ZXI6OnJlc2V0KCkKLXsKLSAg
ICBjZ0ltYWdlID0gbnVsbHB0cjsKLSAgICBtZWRpYVNhbXBsZSA9IG51bGxwdHI7Ci0gICAgcGl4
ZWxCdWZmZXJDb25mb3JtZXIgPSBudWxscHRyOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKCkKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrIH07CkBAIC0xMTQz
LDYgKzExNDcsMTQgQEAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lTWV0YWRhdGE+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9GcmEKICAgICByZXR1cm4gbWV0YWRh
dGE7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRT
YW1wbGUoUmVmUHRyPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlKQoreworICAgIG1fbWVkaWFT
YW1wbGUgPSBXVEZNb3ZlKG1lZGlhU2FtcGxlKTsKKyAgICBtX21lZGlhU2FtcGxlSW1hZ2UgPSB7
IH07CisgICAgaWYgKCFtX21lZGlhU2FtcGxlKQorICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyID0gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggOTAwN2RjY2E5ZGVlMTBlZWJjM2IzMWQ2MzM4MDYw
ZDdlOTIzNzA1Ni4uNzBmOGZiYTY4OGRmMzVlYzg2YmFlZWE0MWVjMjdmNGQ4YjM2ZTE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTU0LDEzICs1
NCwxMiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lk
OyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9p
ZCA9IGlkOyB9CiAKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU2Ft
cGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0
IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtOTcsMyArOTYsNyBAQCBwcm90ZWN0ZWQ6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1w
bGVCdWZmZXJUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggNGEwZmFjNjFlYjFlZjYw
MzNlZDI5NzQzNWRhYTkyNmU5ZWRlYWNkNy4uZTYxZjUwNmU0YTBmYjJiY2E0N2RhYzI2MzNhM2Q5
YWE3NWEyZmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTUzLDcgKzE1Myw3IEBAIHNpemVfdCBNZWRpYVNhbXBsZUFWRk9iakM6OnNpemVJ
bkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFRvdGFsU2Ft
cGxlU2l6ZShtX3NhbXBsZS5nZXQoKSk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxl
QVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxl
ID0geyBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlLCB7IC5jbVNhbXBsZUJ1ZmZl
ciA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKaW5kZXggOWU3YzA4OTYwNmE3YjEzOWE5YTYyMzhlNTFk
ZjhmMGZkZWQ3ZDMzNy4uMjdmOTc5NWVhNGRhOGE3NDgyMDY5MzdkNDIzZDY4YmI1NjM1YmQwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNyArMjM1LDcg
QEAgdm9pZCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0KQogICAgIH0KIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVk
aWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1T
YW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZSwgeyAu
Z3N0U2FtcGxlID0gbV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDFkNzFhMzM5NjljZmJjNjc1ZGVlY2Vh
NzhlNjRmMmQ2ODk5ZTQxZWIuLjNiNWE2OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0ZjkxMGIw
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw2IEBA
IHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZHRzOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fdHJhY2tJZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJp
bmcmIHRyYWNrSWQpIG92ZXJyaWRlIHsgbV90cmFja0lkID0gdHJhY2tJZDsgfQogICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcmVz
ZW50YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJikgb3ZlcnJpZGU7CkBAIC02Miw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8
UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1l
ZGlhVGltZSYsIFVzZUVuZFRpbWUpIG92ZXJyaWRlICB7IHJldHVybiB7IG51bGxwdHIsIG51bGxw
dHIgfTsgfQogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92
ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRS
R0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwCmluZGV4IDVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIu
LjRhYzY5YWNkOWEwMGNmNmUxOTlhMzNhYWM0NzNkOGNkODVkYzVlNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC01OCwxMCArNTgsOSBAQCBwcml2YXRlOgog
ICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gu
ZGVjb2RlVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChj
b25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogICAgIHNpemVfdCBzaXpl
SW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBT
YW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1w
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUo
KTsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODcs
NyArODYsNyBAQCBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgTW9ja01lZGlhU2FtcGxlOjpmbGFn
cygpIGNvbnN0CiAgICAgcmV0dXJuIFNhbXBsZUZsYWdzKGZsYWdzKTsKIH0KIAotUGxhdGZvcm1T
YW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBN
b2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNh
bXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpNb2NrU2FtcGxlQm94VHlwZSwgeyAmbV9i
b3ggfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTZkYTg4
YjQ1ZjcwNDJmNDIzYjczNGM3NjRlNjU2NmQ0NDZlZmFmLi40OTZmYzljNWQ1OTVkZjdkZTdlNDU1
ZDg1MjQyYjRiNGIwYmQ2NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTE3Niw3ICsxNzYsNyBA
QCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcgogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFT
b3VyY2VQcm94eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyUHJveHkKLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Cisg
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94ec+ACiAKICAgICBHUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eQogICAgIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcgpA
QCAtMjc1LDYgKzI3NSw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZQogICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHkKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXIKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCA0YzY2MjIwY2YxMjJhNTNiNzQ2OWQ0NDAwYzdjZGRiMjM1YzhiNzQ5Li5iOWJmMjUyNjUw
YzViMWFhMmFjYTUwMmMwYTZkYjFiOTQzYTI2YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC02Nyw2ICs2Nyw3IEBAICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTg5LDYgKzE5MCw3
IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGUzYjU1ODQwYWUxZWFmNTdmNWViZjc1NDJlNWUxZmQ0MGU1
ZGQ0ZDEuLjQwMGRmZGUyMGY4NDk5YzY0MWI4NWNkYTNkM2Q4M2YzNjAyZTU3Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzgxLDYg
KzM4MSwxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1Jl
bW90ZVRleHR1cmVNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZp
ZXdNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVW
aWRlb0ZyYW1lUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZp
ZGVvVHJhY2tQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3YWQ0OWUzNzM1ZjRiNDc4YzQxNmQ5Mjk1YzEzOWJl
OThmZDZjZTRhLi4zMzhkYjRkZmNjM2ZmZDY3Y2RlMTc3ODU5Yjc1Yjk5NmI3ZTYwYWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xOTksNiArMTk5LDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyIFwK
IAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKKwlXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1Jl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCkBAIC0yOTUsNiArMjk2LDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5IFwKIAlHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExp
c3RlbmVyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDRkNTI0ZThiODY3OWE4MzBjNDVlYjZiNWJjMTA0Yjc1NDEwNGI2
M2UuLjU3ODNmY2UwMDdlNGZiNGVhYWFjYTkyY2U1NDlhNDAwNzU3MmM2YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTE0MSw2ICsxNDEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2VuZGlmCiAKQEAgLTI1Nyw2ICsyNTgsOSBAQCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nl
c3MmIGdwdVByb2Nlc3MsIFdlYgogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBI
QVZFKEFWQVVESU9fUk9VVElOR19BUkJJVEVSKQogICAgIGdwdVByb2Nlc3MuYXVkaW9TZXNzaW9u
TWFuYWdlcigpLnNlc3Npb24oKS5zZXRSb3V0aW5nQXJiaXRyYXRpb25DbGllbnQobV9yb3V0aW5n
QXJiaXRyYXRvci5nZXQoKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3Jl
YXRlKCp0aGlzKTsKKyNlbmRpZgogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkKICAgICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHBh
cmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMpOwpAQCAtMzAwLDcgKzMwNCw5IEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQogICAgICAgICBtX2F1ZGlvU2Vzc2lvblByb3h5ID0gbnVsbHB0cjsKICAgICB9CiAjZW5k
aWYKLQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1f
dmlkZW9GcmFtZU9iamVjdEhlYXAgPSBudWxscHRyOworI2VuZGlmCiAgICAgLy8gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCBvYmplY3RzIHJlZiB0aGVpciBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlCiAgICAgLy8gdG8gYnJlYWsgdGhlIHJlZmVyZW5jZSBj
eWNsZSBieSBkZXN0cm95aW5nIHRoZW0uCiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
LmNsZWFyKCk7CkBAIC05NDEsOCArOTQ3LDE1IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q2FwdHVyZUF0dHJpYnV0aW9uU3RyaW5nKCkgY29uc3QKIHsKIH0KICNlbmRpZgor
CitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAqbV92aWRlb0ZyYW1l
T2JqZWN0SGVhcDsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKwogI2lm
IFBMQVRGT1JNKE1BQykKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGxheUNv
bmZpZ3VyYXRpb25DaGFuZ2VkKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1t
YXJ5RmxhZ3MgZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2MjRlM2ZhMzUxY2YwYjAzNWUyZTEzYTkz
MzI1ZGRkNGMzNDJiMTQ5Li42MzMwZDZiMGJkMzlkOTI2NzQ5ZTNhYmZjYmM4ZjNiNjI1ZDgyNWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAgc3RydWN0IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBSZW1vdGVXQ0xheWVyVHJlZUhvc3Q7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDsKKyNlbmRpZgorCisKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MK
ICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHVibGljIFdlYkNvcmU6
Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQKQEAgLTE0MSw2ICsxNDYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhbGxvd3NBdWRpb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0F1ZGlv
Q2FwdHVyZTsgfQogICAgIGJvb2wgYWxsb3dzVmlkZW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd3NWaWRlb0NhcHR1cmU7IH0KICAgICBib29sIGFsbG93c0Rpc3BsYXlDYXB0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZTsgfQorICAgIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwJiB2aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGNvbnN0OwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTMwNSw2ICsz
MTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NBdWRpb0NhcHR1cmUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9hbGxvd3NWaWRlb0NhcHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
bGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogI2VuZGlmCiAjaWYgSEFWRShB
VURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJlc2VudGlu
Z0FwcGxpY2F0aW9uQXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGVj
YjRiNTc2N2NjOWE4ZTI2ODY0NmRjZTM5ZDI2NjJjMzQyYzMzYjYuLjFlNjVjYTBkMDJlZjE1Nzll
ZmM0MjZjMzY4ZjgwZjhiY2JiMGU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAt
NDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQ1YuaD4K
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY4LDYgKzcyLDkgQEAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUMKICAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b246OmNyZWF0ZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92
ZShzdHJlYW0pLCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpKSkKICAg
ICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKICAgICAsIG1fcmVuZGVyaW5nQmFja2VuZChyZW5kZXJpbmdCYWNrZW5kKQorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKKyNlbmRpZgogICAgICwg
bV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0KFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdDo6YWNxdWlyZSgpKQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcihncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiB7CkBAIC0yMjMsNiAr
MjMwLDEyIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhc1dpdGhRdWFsaWZpZWRJZGVudGlmCiAgICAgcGFpbnRQaXhlbEJ1ZmZlclRv
SW1hZ2VCdWZmZXIobV9jb250ZXh0LT5yZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygp
LCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGFzc2VydElz
Q3VycmVudChtX3N0cmVhbVRocmVhZCk7CisgICAgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+YWRk
KGlkZW50aWZpZXIsIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUoKSk7Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZm
ZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4
ZWxCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0YXJnZXQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBl
YjIwZDE2YzM3N2Y1ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li5jMDAyM2ZlYmZiYjY1ZWFj
ODJiM2Y2NWJlNDE0ZTYyY2ZjMTE4YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTQs
NiArNTQsMTAgQEAKICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2Ug
V1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC02MSw2ICs2NSw5IEBAIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAKIC8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KQEAgLTEw
OCw2ICsxMTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50
MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisjZW5kaWYKICAg
ICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
ciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAKQEAgLTEzMCw2ICsxNDAs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0w+IG1f
Y29udGV4dCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKICAgICBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7CiAgICAg
UmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyNlbmRpZgogICAgIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q7CiAgICAgTk9fVU5JUVVF
X0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1fc3RyZWFtVGhyZWFkOwogICAgIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2ViMzdh
MGMyOTg5OGUzMDJiMi4uYjJiMGI2NjVlZmM1NmU1YWEzZmMyNmZkMjBiNTE0NjExNjczMDRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIs
OSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0
cmVhbSB7CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3Vz
CiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAg
IHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNz
KSBTeW5jaHJvbm91cworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBQYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0
aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmcg
ZXZlbnQpCiAKICAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChi
b29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWU3OTc4M2VmZTY3ZTQ0NWIxZDkxMTA2ZGNiMmJlNGY1ZTY4NzQ4OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKworLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1fY29u
bmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQoreworICAg
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIDAsICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpCit7CisgICAgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgMCk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZChSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1w
bGU+JiYgc2FtcGxlKQoreworICAgIGF1dG8gd2FzTmV3ID0gYWRkSW1wbChpZGVudGlmaWVyLCBX
VEZNb3ZlKHNhbXBsZSkpOworICAgIEFTU0VSVF9VTlVTRUQod2FzTmV3LCB3YXNOZXcpOworfQor
Citib29sIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGRJbXBsKFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBz
YW1wbGUpCit7CisgICAgLy8gRklYTUU6IFByb2JhYmx5IHRvbyBoYXJkIGdldCBjb3JyZWN0LCBt
YXliZSBtYWtlIHNhbXBsZSBSZWY8Pi4KKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllczsKKyAgICBpZiAoc2FtcGxlKQorICAgICAg
ICBwcm9wZXJ0aWVzID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKCpzYW1wbGUp
OworCisgICAgYm9vbCB3YXNOZXcgPSBmYWxzZTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3JlbW90ZUZyYW1lc0xvY2sgfTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlbW90
ZUZyYW1lcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgd2FzTmV3
ID0gcmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorICAgIGlmICh3YXNOZXcpCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZChXVEZNb3ZlKHByb3BlcnRpZXMpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICByZXR1cm4gd2FzTmV3OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpy
ZW1vdmUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9yZW1vdGVGcmFtZXNMb2NrIH07CisgICAgbV9yZW1vdGVGcmFtZXMucmVt
b3ZlKGlkZW50aWZpZXIpOworfQorCitSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpnZXQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsgLy8gVGhl
IGluc3RhbmNlcyBjYW4gYmUgdXNlZCBvbmx5IGluIHRoZSBjb25zdW1lciB0aHJlYWQgZm9yIG5v
dy4KKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZW1vdGVGcmFtZXNMb2NrIH07CisgICAgcmV0dXJu
IG1fcmVtb3RlRnJhbWVzLmdldChpZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6aW1hZ2VCdWZmZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVh
ZCk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IGdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIW1l
ZGlhU2FtcGxlKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFtZWRpYVNhbXBsZSk7Cit9
CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXNzZXJ0SXNDdXJy
ZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDc0ZTg2ZDIzMTExYWEz
ZTJiNjgwY2FhZDg5NjhiNDlmMzI5MWE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUHJvY2Vzc0lkZW50aXR5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJl
bmNlcyB0byBhbGwgVmlkZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGJldHdlZW4g
dHdvIHByb2Nlc3Nlcy4KKy8vIERpc3BhdGNoZXMgdGhlIFZpZGVvRnJhbWUgbWV0aG9kcyB0byB0
aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhhdCB1c2VzIHRo
ZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIgdGhyZWFkLCB0
aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVvRnJhbWUgaW5zdGFuY2Vz
IGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7Cisg
ICAgdm9pZCBhZGQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpN
ZWRpYVNhbXBsZT4mJik7CisgICAgdm9pZCByZW1vdmUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIpOworCisgICAgLy8gVmFsaWQgZnJvbSBjb25zdW1lIHRocmVhZCBvbmx5LgorICAgIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gZ2V0KFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsK
K3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIGJvb2wgYWRkSW1wbChSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CisK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICBi
b29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisj
aWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2b2lkIGNyZWF0ZVZpZGVvRnJhbWVDVihSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisjZW5k
aWYKKyAgICB2b2lkIGltYWdlQnVmZmVyKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAgIGNv
bnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBMb2NrIG1fcmVtb3Rl
RnJhbWVzTG9jazsKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBtX3JlbW90ZUZyYW1lcyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fcmVtb3RlRnJhbWVzTG9jayk7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRo
cmVhZCBOT19VTklRVUVfQUREUkVTUzsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYTA2NDRhMTFjNDM3ZDgwYzli
YjEzOTNkOGI0MGFlZWU5MmYyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK21lc3NhZ2VzIC0+
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgeworI2lmIFVTRShBVkZP
VU5EQVRJT04pCisgICAgQ3JlYXRlVmlkZW9GcmFtZUNWKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgdmlkZW9G
cmFtZSkKKyNlbmRpZgorICAgIEltYWdlQnVmZmVyKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlc3VsdCkgLT4gKCkgU3luY2hyb25vdXMKKyAgICBSZWxlYXNlVmlkZW9GcmFtZShXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit9CisjZW5kaWYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvY29jb2EvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NjhmZmJhMGMwNWQwYTJiNDhiMWM4ZjU2ZjVkYmM3N2I0
ODI0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
Y29jb2EvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBDb2NvYS5tbQpAQCAtMCwwICsxLDYzIEBA
CisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKyNpbmNsdWRlIDxXZWJDb3JlL0NW
VXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CisKKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6Y3JlYXRlVmlkZW9GcmFtZUNWKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgdmlkZW9GcmFtZSkKK3sKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBhdXRvJiBpZGVudGl0eSA9
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHkoKTsKKyAgICBp
ZiAoaWRlbnRpdHkpCisgICAgICAgIHZpZGVvRnJhbWUuc2V0T3duZXJzaGlwSWRlbnRpdHkoaWRl
bnRpdHkpOworICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgYmUgZG9uZSBkaWZmZXJlbnRseSB3aGVu
IFJlbW92ZVZpZGVvU2FtcGxlIGlzIHJlbW92ZWQuCisgICAgYXV0byBpbWFnZVRyYW5zZmVyU2Vz
c2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnZpZGVvRm9y
bWF0KCkpOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBpbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CisgICAgaWYgKCFtZWRpYVNhbXBs
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChpczxXZWJDb3JlOjpNZWRpYVNhbXBsZUFW
Rk9iakM+KCptZWRpYVNhbXBsZSkpOworICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbWVkaWFTYW1w
bGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOworICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlQnVmZmVyKSk7CisgICAgaWYgKGlkZW50aXR5KQorICAg
ICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGlk
ZW50aXR5KTsKKworICAgIC8vIFRoaXMgaXMgdW50cnVzdGVkIGNvbnRleHQsIHNvIHdlIGRvbid0
IGV4cGVjdCB0aGUgY3JlYXRlIG5lY2Nlc3NhcmlseSBzdWNjZWVkIHdpdGggYSBuZXcgZW50cnku
CisgICAgKHZvaWQpIGFkZEltcGwoaWRlbnRpZmllciwgV1RGTW92ZShtZWRpYVNhbXBsZSkpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4
IDIxN2RiOTdhM2NlNGM4MzAwNDhhZmFjODI4ZWZiZGJiZDUxOGU3YTAuLjVkZGEwMGE3MzY0MjFh
ZDU2MDc0YzU0N2Q3ODMwOTU4MGQyZTczYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgpA
QCAtMzcsMTQgKzM4LDE1IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
PiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAg
IGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1v
dmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcihncHVDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAg
ICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5
ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVD
b25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgq
dGhpcykpCiB7CkBAIC0xMTMsNyArMTE1LDIxIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNl
KCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsK
KyAgICBhdXRvIG1lZGlhU2FtcGxlID0gbV9ncHVDb25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RI
ZWFwKCkuZ2V0KGlkZW50aWZpZXIpOworICAgIEFTU0VSVChtZWRpYVNhbXBsZSk7CisgICAgaWYg
KCFtZWRpYVNhbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghaXM8TWVkaWFTYW1wbGVB
VkZPYmpDPihtZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBhdmZNZWRp
YVNhbXBsZSA9IGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oKm1lZGlhU2FtcGxlKTsKKyAg
ICBNZWRpYVNhbXBsZUFWRk9iakM6OnNldEFzRGlzcGxheUltbWVkaWF0ZWx5KGF2Zk1lZGlhU2Ft
cGxlKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShhdmZN
ZWRpYVNhbXBsZSk7Cit9CisKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUp
CiB7CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CiAgICAgaWYgKCFyZW1vdGVTYW1w
bGUuc3VyZmFjZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA3MjVi
M2QyNmI3MWM3ODg2ZGM0ODg4MjdkMGE2ZjdkMjUyYWE3YTBkLi44M2NjNTVhYWNmZTUxOGM2YTBj
ODAyNDBlOGU2NjIzMzc5MTMwNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
QEAgLTMwLDEwICszMCwxMiBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFt
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CiAjaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7CkBA
IC00MiwxMSArNDQsMTIgQEAgY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiB9OwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKIGNsYXNzIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2lu
ZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rv
cnk7CkBAIC02MSw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsK
KyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJ
ZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNl
KCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYp
OworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAg
ICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVv
RnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTg1LDEyICs4
OSwxNSBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWls
KCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VU
cmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3No
YXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVh
ZCBOT19VTklRVUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhj
ZGMzN2Q2MjE2ZjdlY2RmLi5lMTViYTQ0MWRjMzJmMjY5M2UxZWE0YjU1Mzg1NzQwNzZlOGU2Y2Nm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpA
QCAtMzIsNyArMzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJv
dW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAg
Rmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2Vi
Q29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNW
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2Ft
cGxlcygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVk
MDNmNjMzNGI1ZDE1MS4uMzkxNGQ5MGI3YzEzZmE1Y2M5NjUwODU5NjMzOGE0MTc4ZmY0NmVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisKIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykK
ICAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQogICAgICwgbV9jb25uZWN0aW9uKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpKQpAQCAtODEsNyArODIsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwg
V2ViQ29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29w
eVJlZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25u
ZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVy
OwogICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXll
cklkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RG
TW92ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMzM2ZDM2ODdmN2VjZGQxN2U4ZTdlYmQxY2Q5ZDcu
LjZiYjE5ZjM5YzlhMjg5N2E0MmMwYTRjYzlkNzMwNTI4YzRkZTg2OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQyLDYgKzM0Miw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNv
dXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50
aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxl
Qnl0ZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKaW5kZXggNGRlMWQwZWQyYTdiZTQ5ZTNjYmJiOTVl
Mzc3ZjU0NTA5ZmFjMDdhZC4uNzhmNzMxMzRjZTZhN2EyMTRjZGM5ZGUwNWM0NzUzNzJlMTdjOWEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCkBAIC02Niw3ICs2Niw3
IEBAIEF0b21TdHJpbmcgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnRyYWNrSUQoKSBjb25zdAogICAg
IHJldHVybiBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFja0lEKTsKIH0KIAotUGxhdGZvcm1TYW1w
bGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxl
IE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHsKICAgICAgICAgUGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIx
ZWY5NjJiNDA0OTdlM2RjMzEuLmY4MzM2YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9ieXRlUmFuZ2U7IH0KIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgp
IGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUm
KSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRmMGEyMzU0NDFiMmUxYzBjY2Nj
MTQwZGNjNTBmMjZmMDA0NDNjYTAuLmVkOWI2M2ZiZWE2ODM3YjdmYTRhMDk3YzUxOWU2ZDJkN2I5
ZDM4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVt
b3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmNwcApAQCAtNzM2LDYgKzczNyw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUuY3BwCkBAIC04NzAsNiArODcyLDggQEAgUmVtb3RlRGV2aWNlTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVt
b3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90
ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0
TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
ZW1vdGVRdWV1ZU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBm
NTdkODUzZmZiZjRjMjgzNzRkZjhiMWY3NjczNzc2ZWQzZjhlZDRjLi5lZmY5OGQyOGFjMmFmYzIw
NGM0NmU4OTQ1MWY1NzA2YWYyYmU3OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC03NCw2
ICs3NCw3IEBAIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5j
cHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCiBHUFVQ
cm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQorR1BVUHJv
Y2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcENvY29hLm1tCiBHUFVQ
cm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5jcHAKIEdQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIEBuby11bmlmeQogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTFhZDAyMDdiMzAxMjdkMzBjMDIxZTY2ZGJjNGE2OGE3OGNiZDAzMC4uMDZi
Y2JjMDVlMGYxNWFlNjJiOWQ3N2U1MTkyYjZkOGEwODljNzAyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDc3LDYgKzUwNzcsMTMg
QEAKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAv
KiBJUENUZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREExMjdB
N0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVB
M0RBMzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjVBM0RCRTI3QUM2Q0RCMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2
QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8q
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NzUyLDYgKzY3NTksMTAgQEAKIAkJCQlDRDgyNTJEMTI1RDQ2NEFC
MDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi8sCiAJCQkJQ0Q4MjUy
RDMyNUQ0NjRCRjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdl
cy5pbiAqLywKIAkJCQlDRDgyNTJENDI1RDQ2NTEwMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVySWRlbnRpZmllci5oICovLAorCQkJCTdCNUEzREEwMjdBN0RDMUEwMDZDNkY5
NyAvKiBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oICovLAorCQkJCTdCNUEzREEzMjdBN0RD
NkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovLAorCQkJCTdCNUEzREEy
MjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCAqLywKKwkJCQk3QjVB
M0RBMTI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmlu
ICovLAogCQkJCTFERDJBNjNBMjU1REU2RDEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmNwcCAqLywKIAkJCQkxREQyQTYzOTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTFERDJBNjZGMjU2MjJGMTEwMEZGN0I2RiAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLApAQCAtNjg0Miw2ICs2ODUz
LDggQEAKIAkJCQkxREQyQTY2NjI1NjFFRDA0MDBGRjdCNkYgLyogUmVtb3RlU291cmNlQnVmZmVy
UHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDdFMTlGMDcyM0Q0REM4ODAwOTRGRkI0IC8qIFJl
bW90ZVRleHRUcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwN0UxOUYwNjIzRDREQzg4MDA5NEZGQjQg
LyogUmVtb3RlVGV4dFRyYWNrUHJveHkuaCAqLywKKwkJCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZG
OTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwICovLAorCQkJCTdCNUEzREE3MjdB
N0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovLAogCQkJCTA3
MUJDNTg0MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwICovLAog
CQkJCTA3MUJDNTg1MjNDQzJDMDkwMDY4MEQ3QyAvKiBSZW1vdGVWaWRlb1RyYWNrUHJveHkuaCAq
LywKIAkJCQkwN0UxOUYwNTIzRDREQzg4MDA5NEZGQjQgLyogVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTc5MTksNiArNzkzMiw3IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFEMEVDRUFBMjNGQzg1ODQwMEQxNzJGNiAvKiBS
ZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0gKi8sCisJCQkJN0I1QTNEQkUyN0FDNkNEQjAw
NkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwQ29jb2EubW0gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDljYWRmYzAyZjRhYjZjOGJjMTYz
NTg5MjI1NzNmOTk3ZmZjNDg4OWUuLmY5ZWZhMWQxN2JhYzY2ZDRjNmFhMjJiYTlmOGU0YzQ1NjVh
MThkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAt
MzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIyLDIxIEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0
cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRM
b3N0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbik7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKG1lZGlhU2FtcGxlLT5pZGVu
dGlmaWVyKCkpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRM
b3N0KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbWVkaWFT
YW1wbGU7Cit9CisjZW5kaWYKKwogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xP
YmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggNGFjMTgwOGU2NTRmNTc5
YjUxMzdkNGIxOTYyY2Q0Zjk0YWI4MTFjNC4uMzY0MTVkOWEzM2QzYTFlY2UwMjcxZGMwNzkzMjgx
MjE3MmJlZDk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAg
LTY1LDYgKzY1LDkgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CisjZW5kaWYKICAgICB2b2lkIHN5bnRoZXNpemVH
TEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZp
bmFsOwogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXIm
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXgg
MWJlY2RiMTYwNjJjYjRkZWMyMmE4ODJmMjM1MGFhZGIzMTgyYjRlOS4uZjFhN2Y5YjhiYWMwZjc5
YTU1MmMwMzFiZWY4NDU2YTNhMDQ3YWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFj
ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTksOSAr
OTgsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSBmaW5hbDsKLSNlbmRpZgogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIDogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywg
cmVuZGVyaW5nQmFja2VuZCkKQEAgLTExNCwyMCArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkKLXsKLSAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCi0gICAgYXV0byBz
dXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxh
eUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpKTsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1
ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6
OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKLX0KLSNlbmRp
ZgotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRp
c3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA3N2RmMDQ3NmEyYzNhMzNiZmQ3NDM1N2Q3MzNmMjIyYjc1
OGNjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTUzZTI2MzA2YTk5
YTQxOGIzZGIyY2QzMjI0MDZmNDVlZmNjZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0w
LDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1JlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNz
Q29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpKTsKK30K
KworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpj
cmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0aWVzJiYgcHJvcGVydGllcykK
K3sKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0gYWRvcHRSZWYobmV3IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgaWRlbnRpZmllcikpOworICAgIG1lZGlhU2FtcGxl
LT53YXNJbml0aWFsaXplZChXVEZNb3ZlKHByb3BlcnRpZXMpKTsKKyAgICByZXR1cm4gbWVkaWFT
YW1wbGU7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKQoreworICAgIEFTU0VSVChtZWRpYVNhbXBsZS5mbGFncygpID09IFNhbXBsZUZsYWdz
OjpOb25lKTsKKyAgICByZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVk
aWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5h
ZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkK
KyAgICA6IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24obnVsbHB0cikKKyAgICAsIG1faWRlbnRpZmll
cihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKK3sKK30KKworUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKK3sKKyAgICBkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faWRlbnRpZmllcjsKK30KKworTWVkaWFUaW1lIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJl
c2VudGF0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXpl
ZCgpOworICAgIHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7Cit9CisKK1dlYkNvcmU6OlBsYXRm
b3JtU2FtcGxlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAor
eworICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1l
UHJveHlUeXBlLCB7IH0gfTsKK30KKworTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uKCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2Fp
dEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fdmlkZW9Sb3RhdGlvbjsKK30KKwor
Ym9vbCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25zdAoreworICAg
ICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92aWRlb0lzTWly
cm9yZWQ7Cit9CisKK3VpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNz
LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Ojp2aWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aW1hZ2VCdWZmZXIo
KSBjb25zdAoreworI2lmIDAKKyAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6SW1hZ2VCdWZmZXIobV9pZGVudGlmaWVyLCAu
Li4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdAor
eworICAgIGlmIChhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkgeworICAgICAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24t
Pm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICAgICAgaWYgKG1fd2FzSW5pdGlhbGl6ZWQpCisgICAgICAgICAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjpSZWxlYXNlVmlkZW9GcmFtZShtX2lkZW50aWZpZXIpLCAwLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgfQorfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0lu
aXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAg
aWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFs
aXplZD4obV9pZGVudGlmaWVyLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRl
ZCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikKK3sKKyAgICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3RkOjpv
cHRpb25hbDxQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCit7CisgICAgbV93YXNJbml0aWFsaXpl
ZCA9IHRydWU7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisgICAgbV9w
cmVzZW50YXRpb25UaW1lID0gcHJvcGVydGllcy0+cHJlc2VudGF0aW9uVGltZTsKKyAgICBtX3Zp
ZGVvSXNNaXJyb3JlZCA9IHByb3BlcnRpZXMtPnZpZGVvSXNNaXJyb3JlZDsKKyAgICBtX3ZpZGVv
Um90YXRpb24gPSBwcm9wZXJ0aWVzLT52aWRlb1JvdGF0aW9uOworfQorCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3OWRjODU4YzRiZjY5Nzg3NTYxNjM2ZDc2MjE4
NjFlMWM1MmMzZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWUsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVtb3RlVmlkZW9GcmFtZVByb3h5KTsKK3B1YmxpYzoKKyAgICAvLyBDcmVhdGVzIGEgcHJv
bWlzZSBvZiBhIE1lZGlhU2FtcGxlIHRoYXQgZXhpc3RzIGluIEdQVSBwcm9jZXNzLiBUaGUgb2Jq
ZWN0IGNhbiBiZSB1c2VkIGFzIG91dCBwYXJhbWV0ZXIgb2YgdGhlIGNyZWF0aW9uIG1lc3NhZ2Uu
CisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYpOworCisgICAgc3RydWN0IFByb3BlcnRpZXMgeworICAgICAgICBNZWRp
YVRpbWUgcHJlc2VudGF0aW9uVGltZTsKKyAgICAgICAgYm9vbCB2aWRlb0lzTWlycm9yZWQgeyBm
YWxzZSB9OworICAgICAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24geyBWaWRlb1JvdGF0
aW9uOjpOb25lIH07CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAg
IH07CisgICAgLy8gQ3JlYXRlcyBhbiBhZG9wdGVkIE1lZGlhU2FtcGxlIHNlbnQgZnJvbSB0aGUg
R1BVIHByb2Nlc3MuCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNy
ZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBQ
cm9wZXJ0aWVzJiYpOworCisgICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZp
bmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgLy8gV2ViQ29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1l
IHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOworICAgIFZpZGVvUm90YXRpb24gdmlk
ZW9Sb3RhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0
IGZpbmFsOworICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFt
ZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIoKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7Cisg
ICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KCk7CisgICAgdm9pZCBkaXNjb25uZWN0R1BVUHJvY2Vz
c0lmTmVlZGVkKCkgY29uc3Q7CisgICAgYm9vbCB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKSBjb25z
dCBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVy
cmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQg
b3ZlcnJpZGVzLgorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisgICAgdm9pZCB3YXNJ
bml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYpOworICAgIHN0YXRpYyBpbmxp
bmUgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworCisgICAgbXV0YWJsZSBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiB7IG51bGxwdHIgfTsKKyAg
ICBjb25zdCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgbXV0
YWJsZSBib29sIG1fd2FzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIE1lZGlhVGltZSBtX3By
ZXNlbnRhdGlvblRpbWU7CisgICAgYm9vbCBtX3ZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07Cisg
ICAgVmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IHZpZGVvSXNNaXJyb3JlZAor
ICAgICAgICA8PCB2aWRlb1JvdGF0aW9uOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0aW9uVGltZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVv
Um90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1l
CisgICAgICAgID4+IHZpZGVvSXNNaXJyb3JlZAorICAgICAgICA+PiB2aWRlb1JvdGF0aW9uOwor
ICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKnZp
ZGVvSXNNaXJyb3JlZCwgKnZpZGVvUm90YXRpb24gfTsKK30KKworfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJl
dHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZv
cm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9G
cmFtZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUm
IG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUg
PT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjkzMDA2NGE2MWM4ZTYzZTU2YzJlMzY2
NjZjN2M1OTc0MDIxNWU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKK21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVQcm94eSBOb3RSZWZD
b3VudGVkIHsKKyAgICBXYXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2NvY29hL1JlbW90ZVZpZGVvRnJhbWVQcm94eUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYjI5
NGEwOWY0ZjFkOTkzMGUwOWU2MjFhNWVhZWY3YmQyMzBiYTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eUNvY29hLm1tCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9TYW1wbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybUNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAgICBpZiAo
aXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKKyAgICAgICAgLy8gT25jZSBS
ZW1vdGVWaWRlb1NhbXBsZSBpcyBub3QgdXNlZCBhbnltb3JlLCBtb3ZlIHRoZSBjb25zdHJ1Y3Rv
ciBjb2RlIGhlcmUuCisgICAgICAgIGF1dG8gcmVtb3RlTWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGRhdGEgPSBSZW1vdGVWaWRlb1Nh
bXBsZTo6Y3JlYXRlKG1lZGlhU2FtcGxlKTsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpD
cmVhdGVNZWRpYVNhbXBsZUNWKHJlbW90ZU1lZGlhU2FtcGxlLT5pZGVudGlmaWVyKCksIGRhdGEu
cm90YXRpb24oKSwgZGF0YS0+c3VyZmFjZSgpLT5jcmVhdGVTZW5kUmlnaHQoKSwgZGF0YS50aW1l
KCksIGRhdGEubWlycm9yZWQoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlbW90ZU1lZGlh
U2FtcGxlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCAyMTlhNTVkZjFjMjlmZDFjNmY5MzM2MTFh
MjkyNWI1YzNjMDZlMTcwLi45ODQzY2IzMTg2ZTIzYjViNTliZGUyYzNlZGQ3YTIxMDc2NWU1NDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFn
ZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50JiBjbGllbnQpCiAg
ICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQorICAgICwgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV9jb25u
ZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRo
aXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRD
bGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlh
bGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYgbG9nSWRlbnRpZmllcikK
IAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0
aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VMYXllciB7IG1faWRlbnRpZmll
ciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnJlbW92ZUxh
eWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTMgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9w
YXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1w
bGUpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyByZW1vdGVT
YW1wbGUuaWRlbnRpZmllcigpIH0sIG1faWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
c2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsK
ICAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBAIC0xNDgsNyArMTU3LDcgQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZSB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQpAQCAtMTcwLDExICsx
NzksMTggQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldERpZEZhaWwoYm9vbCB2
YWx1ZSkKIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0
aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogeworICAgIGRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJT
dGF0dXNEaWRGYWlsKCk7CiB9CiAKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNj
b25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdw
dVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LCBudWxscHRyKSkKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgq
dGhpcyk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4
IDU2MzY5YWRkZjBhYmYzNDZiMGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5
NDQzMjExMTNlNjlkMjZiMTJiMjU1YmZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
CkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyCiAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwg
V2ViQ29yZTo6SW50U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CkBAIC03Niw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwog
ICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBH
UFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRy
PFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDcwMTk4MzJlMDZiMzU3MDA5MGFkZTA1ZDU5ZDZiMmZmYjQx
YjAxOS4uNzJiMjJlOWIxZDc2Mjg3NTQ4NmY5MjAwNmQ2MDBhNzg2OGQ1ZmQwNCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAyLTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2Fw
dHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBH
UFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYw
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0wMyAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHVzaW5nIFNUSVggVHdvIGlu
IGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDMwZjdmZDgyYjMz
MWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIxODEuLmQ0MTViZGJiODQzNmNmOWE0OTA5MWU1Yjcz
OTNmZWM3MGJlNmVlZTMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTk0LDcgKzk0
LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
U3RyZWFtIHt7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVh
bUVuY29kYWJsZVJlcGx5CiAjZW5kaWYKLSNpZiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKEdS
QVBISUNTX0xBWUVSX1dDKQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXI+IGNvbnRlbnRCdWZmZXIp
IFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1JBUEhJ
Q1NfTEFZRVJfV0MpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9u
b3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVu
c2lvbikKQEAgLTEwNCw2ICsxMDcsOSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVm
ZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikg
LT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVF
dmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50
Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpAQCAtMjMyLDcgKzIzOCw3IEBAIGRlZiBjcmVhdGVf
Y3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9uYWxbY3BwX3R5cGVf
Y29udGFpbmVyXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBjb250YWluZXJfbmFtZSA9IG1b
MV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJlIGNvbnRhaW5lcnMgZXhjZXB0IHRoZXNlIGJlbG93
LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZiddOgorICAgIGlmIGNv
bnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZicsICdSZXRhaW5QdHInLCAnc3RkOjpvcHRp
b25hbCddOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRlbXBsYXRlcyA9IG1bMl0KICAgICBh
cml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYsMTMgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJv
eHlfaW1wbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNfdHlwZSA9IHdlYmtp
dF9pcGNfdHlwZXNbby50eXBlXQogICAgICAgICAgICAgICAgIGFzc2VydChpc2luc3RhbmNlKHdl
YmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKICAgICAgICAgICAgICAgICB2ID0g
Y3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCi0gICAgICAgICAgICAg
ICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07
Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3Ry
KHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
IyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRlcyBhIGRhbmdsaW5nIHJlZmVyZW5jZSBzcGFuPGlu
dCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisgICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4OQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfSB7
eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2NwcF9l
eHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1p
Y19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHBy
KGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCBkMTQ2Y2Vj
NGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4Li5jNDVjNjdhMzE2NmJmZmI5ODc3YmMw
ZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFU
aW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZVRpbWU7IH0KICAg
ICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2R1cmF0aW9uOyB9
CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0lE
OyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgdHJhY2tJRCkgZmluYWwgeyBt
X3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXplOyB9CiAgICAgdm9p
ZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIGZpbmFsIHsgbV9w
cmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsgbV9kZWNvZGVUaW1lICs9IG9mZnNldDsgfQpAQCAt
NzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUobV9wcmVzZW50YXRp
b25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVyYXRpb24sIHN0YXRpY19jYXN0PFNhbXBsZUZsYWdz
PihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5nKSk7CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZs
YWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwg
e251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwgeyBudWxscHRyIH0gfTsgfQog
ICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
IGZpbmFsIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450890</attachid>
            <date>2022-02-04 06:44:13 -0800</date>
            <delta_ts>2022-02-04 07:51:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220204164411.patch</filename>
            <type>text/plain</type>
            <size>100278</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIzYzMwNmQ2NzY4ZTM4
NDhkZTQzMTY1ZjVmM2I5ODI4ZDUxMWQ0NC4uOGU0YjNjZTJmMzRkNmFlODcxMjM5MGQ2ZTM0ZDE2
NThhMjk3NTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTAz
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggR1RLIG1ha2UgZGlzdGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiYzczNWM1MDQw
N2UyOTMwNjM5Zjk0NWE2YWJjMWJjYzgyOTYzZjIuLjMzZDg3ZDg2ZmVkOWFmZDdhNjJiY2Q2MGM2
Y2U2NTc5YTRkOGE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIyLTAyLTA0ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJh
bWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2Vz
czoKKyAgICAgICAgQWRkIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5LCBXZWJDb250ZW50
IHByb2Nlc3Mgc2lkZSBwcm94eSBvYmplY3QgdGhhdAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgY2FuIHVzZS4KKyAgICAgICAgTWlzc2luZzog
UmVtb3RlVmlkZW9GcmFtZVByb3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhl
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRl
bnQgc2hvd3MgaW4gY29tcG9zaXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LiBBdCB0aGUgbW9t
ZW50CisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW5ub3Qg
cGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1bWVudCBDU1Mg
cGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisgICAgICAgIEdQ
VVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFwcGluZworICAg
ICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4gQ3VycmVudGx5
IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVBVkZPYmpDLgor
CisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEgcmVtb3RlIE1l
ZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA6OmFkZEltcGwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW46IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyOjpjcmVhdGVMYXllcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
U2FtcGxlQnl0ZVJhbmdlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3Rl
VmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQ
VVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDMgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBsZUJ1ZmZlckRpcGxheUxheWVy
IHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggZjhmZjNlNjE2YzMwMTgzMjY4YWE1ZTUyODJkMTVhZTBjMTZjNzZmZi4uNmM2OTNiMjM0ZGFj
YWQxNDliOWQ5NzhlZTVlZDc2NWEwYjE2NWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQx
LDYgKzEzNDEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9W
aWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRm
b3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2Vy
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNTFiZmFiODg4MGI5ZDY4OTZiMzA3OGIwOTMwZGJlNzYzNzEx
ZmUwOS4uMTc2OGYyZGYxMzRiYTUyNDk2Y2Y5MjY3ZTQ2MjI3MDllMTI3OWEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE5MjYsNiArMTkyNiw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3Jt
L1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJD
b3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAK
IHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMDczMzIyNDM2ZjRlYzI1MjgxZWExOGJmN2QxODEw
YmIzN2Q5MzBiLi45OGUxMjE5NjhhNWY1ODExMzI4ZjRlZmYwNWQwYmY0MjIyODRkN2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNDAyLDYgKzI0MDIsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5
RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8q
IE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlk
ZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZG
OTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYy
NTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8q
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTA0LDYgKzExNTA1LDggQEAK
IAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThG
QzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVB
VkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZD
NkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RB
RDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzAxMjEsNiArMzAxMjQsOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBV
c2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAv
KiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8q
IFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRl
b0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVN
ZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBs
ZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0zNzc4Nyw2ICszNzc5Miw3IEBACiAJCQkJMEYx
QTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8q
IFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3
NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcx
OUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcx
NjU3OWZmOGU3ZmMzNDBkODdjYzg5MmYxYmJiNGIwZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVNhbXBsZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUg
ewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5
cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJh
bWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBu
b3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1Nh
bXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9j
a1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAg
ICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5C
eXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBA
IC02Niw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1l
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBz
QnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFn
cyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5
dGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEyZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJh
bWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVj
b2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5n
IFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K1dlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lk
IFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFt
cHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6
OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVs
bHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0
ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgpOworfQorCitNZWRpYVNh
bXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVy
biBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVk
aWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1l
OjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFi
OTk4MzdiODQ3NzE0MWUwNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBs
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEg
dmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgor
Ly8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBm
cm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRv
IE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1F
OiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisg
ICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JU
IE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
TWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRv
bVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6
RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJs
ZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVk
aWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBw
cmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9u
RGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFk
NzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxl
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBw
bGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGltcGxlbWVudGVkLgorICAg
IGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBs
ZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyBy
ZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRj
YjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2
NTYyZTMxMTA0NWM0MWFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2
ICs5ODcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8
fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IEZJWE1FOiBEb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
CisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNh
bXBsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxC
dWZmZXJDb25mb3JtZXIpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9y
bWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWVi
YzNiMzFkNjMzODA2MGQ3ZTkyMzcwNTYuLjcwZjhmYmE2ODhkZjM1ZWM4NmJhZWVhNDFlYzI3ZjRk
OGIzNmUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
CkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBv
dmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZv
cm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJv
dGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVy
biBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDRh
MGZhYzYxZWIxZWY2MDMzZWQyOTc0MzVkYWE5MjZlOWVkZWFjZDcuLmU2MWY1MDZlNGEwZmIyYmNh
NDdkYWMyNjMzYTNkOWFhNzVhMmZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVB
VkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZm
ZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3Jt
U2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAu
Y21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2Ix
MzlhOWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2
OGJiNTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAt
MjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFt
cHNCeShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRm
b3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9y
bVNhbXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewog
ICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNh
bXBsZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4g
c2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5
Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMx
ZmIyMzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAt
NTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7
IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Np
emU7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5
KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRp
dmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBu
dWxscHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3
Njc5YjFhZWJkNjViLi40YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkg
QEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQogICAgIEF0b21T
dHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lk
IHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9i
b3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRl
UmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRp
YVNhbXBsZTo6ZmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9
CiAKLVBsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxh
dGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAg
ICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJv
eFR5cGUsIHsgJm1fYm94IH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
aW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZi4uN2U4YmM2MGY1
MzNkNDQzYmNjNzY0OTZkOTJlZTI5ODQ0MjE5OTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0y
NzUsNiArMjc1LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDRjNjYyMjBjZjEyMmE1M2I3NDY5ZDQ0MDBjN2NkZGIyMzVjOGI3NDkuLmI5YmYyNTI2NTBjNWIx
YWEyYWNhNTAyYzBhNmRiMWI5NDNhMjZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3LDcgQEAgJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0xODksNiArMTkwLDcgQEAg
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
bWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlYWY1N2Y1ZWJmNzU0MmU1ZTFmZDQwZTVkZDRk
MS4uNDAwZGZkZTIwZjg0OTljNjQxYjg1Y2RhM2QzZDgzZjM2MDJlNTdjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODEsNiArMzgx
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVv
RnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9U
cmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNGI0NzhjNDE2ZDkyOTVjMTM5YmU5OGZk
NmNlNGEuLjMzOGRiNGRmY2MzZmZkNjdjZGUxNzc4NTliNzViOTk2YjdlNjBhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5OSw2ICsxOTksNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAog
CVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyIFwKQEAgLTI5NSw2ICsyOTYsNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwK
IAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAogCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFT
b3VyY2VQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWViNmI1YmMxMDRiNzU0MTA0YjYzZS4u
NGEzMTJlZTNkMzNiNjcyYWJlYzMzZDg3MzgwN2Q1Y2Q2OTJhNTU2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApA
QCAtMTQxLDYgKzE0MSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjZW5kaWYKIApAQCAtMjU3LDYgKzI1OCw5IEBAIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYg
Z3B1UHJvY2VzcywgV2ViCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUo
QVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgZ3B1UHJvY2Vzcy5hdWRpb1Nlc3Npb25NYW5h
Z2VyKCkuc2Vzc2lvbigpLnNldFJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudChtX3JvdXRpbmdBcmJp
dHJhdG9yLmdldCgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUo
KnRoaXMpOworI2VuZGlmCiAKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMu
aXNFbXB0eSgpKQogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFyYW1l
dGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CkBAIC0zMDAsNyArMzA0LDkgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgot
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnJl
c2V0KCk7CisjZW5kaWYKICAgICAvLyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG9iamVjdHMgcmVm
IHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUK
ICAgICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJ5IGRlc3Ryb3lpbmcgdGhlbS4K
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xlYXIoKTsKQEAgLTk0MSw4ICs5NDcs
MTUgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlQXR0cmlidXRp
b25TdHJpbmcoKSBjb25zdAogewogfQogI2VuZGlmCisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICptX3ZpZGVvRnJhbWVPYmplY3RIZWFwLmdldCgpOworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorCiAjaWYgUExBVEZPUk0oTUFDKQogdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQo
Q0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IDYyNGUzZmEzNTFjZjBiMDM1ZTJlMTNhOTMzMjVkZGQ0YzM0MmIxNDkuLjEx
YWNjMDBjNzRlYjVkMTJmODI4MmQ0NDY2Mzk3ZDg3ZDdlOTc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTA2
LDYgKzEwNiwxMSBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVyczsKIGNsYXNzIFJlbW90ZVdDTGF5ZXJUcmVlSG9zdDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlm
CisKKwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6
OkNsaWVudApAQCAtMTQxLDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlv
Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9v
bCBhbGxvd3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVy
ZTsgfQogICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93c0Rpc3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZp
ZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93
c1ZpZGVvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJl
IHsgZmFsc2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYK
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
bV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uMWU2NWNh
MGQwMmVmMTU3OWVmYzQyNmMzNjhmODBmOGJjYmIwZTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xDVi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tl
bmQpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2Vu
ZGlmCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsK
QEAgLTIyMyw2ICsyMzAsMTIgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBp
eGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0Zv
clBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwLT5hZGQoaWRlbnRpZmllciwgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpKTsKK30KKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmMwMDIz
ZmViZmJiNjVlYWM4MmIzZjY1YmU0MTRlNjJjZmMxMThiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY1LDkgQEAg
Y2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7Cisj
ZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2Vp
dmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVz
IHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3Nh
Z2VzLgpAQCAtMTA4LDYgKzExNSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVH
TEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsK
KyNlbmRpZgogICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3Qg
bGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsKIApAQCAt
MTMwLDYgKzE0MCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8UGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTD4gbV9jb250ZXh0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJlYW1UaHJlYWQpOwog
ICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcjsKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5k
OworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAgICAgU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKICAg
ICBOT19VTklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CiAgICAg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0
MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi5iMmIwYjY2NWVmYzU2ZTVhYTNmYzI2ZmQyMGI1MTQ2
MTE2NzMwNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBA
IC00Miw2ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJl
ZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkg
U3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNo
cm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChi
b29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVF
dmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50
Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZDliMWQ1ZDdkYWM0YTQzNjkwZmZlMTI1ODY2OTkwODdiY2I0
MTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCwwICsxLDExMyBAQAorCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvblRvV2ViUHJvY2VzcykpOwor
fQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVjdGlvblRvV2ViUHJvY2VzcykK
KyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rp
b24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkKK3sKKyAgICBBU1NF
UlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OmFkZChSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVy
LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYgc2FtcGxlKQoreworICAgIGF1dG8gd2Fz
TmV3ID0gYWRkSW1wbChpZGVudGlmaWVyLCBXVEZNb3ZlKHNhbXBsZSkpOworICAgIEFTU0VSVF9V
TlVTRUQod2FzTmV3LCB3YXNOZXcpOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjphZGRJbXBsKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0
cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiBzYW1wbGUpCit7CisgICAgLy8gRklYTUU6IFByb2Jh
Ymx5IHRvbyBoYXJkIGdldCBjb3JyZWN0LCBtYXliZSBtYWtlIHNhbXBsZSBSZWY8Pi4KKyAgICBz
dGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGll
czsKKyAgICBpZiAoc2FtcGxlKQorICAgICAgICBwcm9wZXJ0aWVzID0gUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojpwcm9wZXJ0aWVzKCpzYW1wbGUpOworCisgICAgYm9vbCB3YXNOZXcgPSBmYWxzZTsK
KyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlbW90ZUZyYW1lc0xvY2sgfTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtX3JlbW90ZUZyYW1lcy5hZGQoaWRlbnRpZmllciwgV1RGTW92
ZShzYW1wbGUpKTsKKyAgICAgICAgd2FzTmV3ID0gcmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQor
ICAgIGlmICh3YXNOZXcpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZChXVEZNb3ZlKHByb3BlcnRpZXMpKSwg
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICByZXR1cm4gd2FzTmV3OworfQorCit2b2lkIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZW1vdmUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZW1vdGVGcmFtZXNMb2Nr
IH07CisgICAgbV9yZW1vdGVGcmFtZXMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCitSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpnZXQoUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9yZW1vdGVGcmFtZXNMb2NrIH07CisgICAgcmV0dXJuIG1fcmVtb3RlRnJhbWVzLmdldChp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6c3RvcExp
c3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNv
bm5lY3Rpb24pCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAg
aWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbnVsbHB0cikpIHsKKyAgICAgICAgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKTsKKyAgICAgICAgLy8gQ2xpZW50cyBtaWdodCBob2xkIG9uIHRvIHRoZSByZWYgYWZ0ZXIg
dGhpcyBoYXBwZW5zLiBUaGV5IHNob3VsZCBhbHNvIHN0b3AgdGhlbXNlbHZlcywgYnV0IGlmIHRo
ZXkgZG8gbm90LAorICAgICAgICAvLyBhdm9pZCBiaWcgbWVtb3J5IGxlYWtzIGJ5IGNsZWFyaW5n
IHRoZSBmcmFtZXMuIFRoZSBjbGllbnRzIHNob3VsZCBmYWlsIGdyYWNlZnVsbHkgKGRvIG5vdGhp
bmcpIGluIGNhc2UgdGhleSBmYWlsIHRvIGxvb2sgdXAKKyAgICAgICAgLy8gZnJhbWVzLgorICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZW1vdGVGcmFtZXNMb2NrIH07CisgICAgICAgIG1fcmVt
b3RlRnJhbWVzLmNsZWFyKCk7CisgICAgICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVy
IHN0b3BwaW5nLgorICAgIH0KK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6
cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICByZW1vdmUoaWRl
bnRpZmllcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE5OTE3MDAyZjUzNDkzMjhkMWE2YjgyMTBlNTVkZjRmNTQ0OTViNGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
U2FtcGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpdHkuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5j
bHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKEFW
Rk9VTkRBVElPTikKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OworCisvLyBIb2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1lIGluc3RhbmNlcyB0aGF0
IGFyZSBtYXBwZWQgYmV0d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gQXMgY3VycmVudGx5IHRoZXJl
IGlzIG5vIHNwZWNpYWwgc3RhdGUgZm9yIFJlbW90ZVZpZGVvRnJhbWUsIHRoZSBvYmplY3QgaGVh
cCBzdG9yZXMgVmlkZW9GcmFtZSBpbnN0YW5jZXMgKE1lZGlhU2FtcGxlKS4KKy8vIEFzIGN1cnJl
bnRseSB0aGVyZSBpcyBubyBSZW1vdGVWaWRlb0ZyYW1lLCByZXNwb25zaWJsZSBmb3IgZGlzcGF0
Y2hpbmcgdGhlIFZpZGVvRnJhbWUgbWV0aG9kcyB0byB0aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUg
dGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhhdCB1c2VzIHRoZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0
aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIgdGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhN
RTogY3VycmVudGx5IFZpZGVvRnJhbWUgaW5zdGFuY2VzIGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5j
ZXMuCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAg
flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CisgICAgdm9pZCBhZGQoUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJik7CisgICAgdm9p
ZCByZW1vdmUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworCisgICAgUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlPiBnZXQoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworCisgICAg
dm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4m
JiByZWZGcm9tQ29ubmVjdGlvbik7Citwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICBib29sIGFkZEltcGwoUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJikg
V0FSTl9VTlVTRURfUkVUVVJOOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VWaWRl
b0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKworICAgIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOworICAgIExvY2sgbV9yZW1vdGVGcmFtZXNMb2NrOworICAgIEhhc2hNYXA8UmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+IG1f
cmVtb3RlRnJhbWVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZW1vdGVGcmFtZXNMb2NrKTsKKyAg
ICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworfTsK
KworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzYzZDFkMTUzZDUzMTM3MGRkZTIzZjY5ZGM3NzEwZjA4MGZkN2QwYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAg
Tm90UmVmQ291bnRlZCB7CisgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorfQorI2VuZGlmClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IDIxN2Ri
OTdhM2NlNGM4MzAwNDhhZmFjODI4ZWZiZGJiZDUxOGU3YTAuLmQxMjI4MGVjZDdmNDIyOGY2NTE2
NGJmODEyZWMxMWM2ODBmMDg3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgpAQCAtMzcs
MTYgKzM4LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8g
bGF5ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihu
ZXcgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29u
bmVjdGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihn
cHVDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0
dXJuIGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDog
bnVsbHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0
aW9uKGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAs
IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykp
CisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1l
T2JqZWN0SGVhcCgpKQogewogICAgIEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7
CiB9CkBAIC0xMTMsNyArMTE2LDIwIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9
CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cC0+Z2V0KGlkZW50aWZpZXIpOworICAgIEFTU0VSVChtZWRpYVNhbXBsZSk7CisgICAgaWYgKCFt
ZWRpYVNhbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZP
YmpDPihtZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvJiBhdmZNZWRpYVNh
bXBsZSA9IGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oKm1lZGlhU2FtcGxlKTsKKyAgICBN
ZWRpYVNhbXBsZUFWRk9iakM6OnNldEFzRGlzcGxheUltbWVkaWF0ZWx5KGF2Zk1lZGlhU2FtcGxl
KTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShhdmZNZWRp
YVNhbXBsZSk7Cit9CisKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1
ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCiB7
CiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUu
c3VyZmFjZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA3MjViM2Qy
NmI3MWM3ODg2ZGM0ODg4MjdkMGE2ZjdkMjUyYWE3YTBkLi5iZjdmZTVjNDUzMTY1NmI2NGQ1OTJl
OGM0MjE3M2ZlNWNlZDQ2NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAg
LTMwLDEwICszMCwxMiBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7CkBAIC00
MiwxMSArNDQsMTMgQEAgY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiB9OwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDsKIAogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIDogcHVibGljIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50LCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogICAgIH5SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Q2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKQEAgLTYxLDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50
aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICB2b2lkIHNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYpOwpAQCAt
NzMsNyArNzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpOwog
ICAgIHZvaWQgcGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGVucXVldWVTYW1w
bGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxl
KFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVDVihX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1w
bGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBo
b3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZhdGU6CiAgICAgLy8g
V2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAgICB2b2lkIHNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAorICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
Y29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsK
ICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAg
ICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7
CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsK
KwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdl
cy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2ZjdlY2RmLi5lMTVi
YTQ0MWRjMzJmMjY5M2UxZWE0YjU1Mzg1NzQwNzZlOGU2Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsOCBAQCBtZXNz
YWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAg
ICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5k
UmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCiAgICAgUGxheSgpCiAg
ICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5j
cHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMzNGI1ZDE1MS4uMzkxNGQ5
MGI3YzEzZmE1Y2M5NjUwODU5NjMzOGE0MTc4ZmY0NmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCisKIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6
OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICA6IG1fY29ubmVjdGlvblRv
V2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICwgbV9jb25uZWN0aW9u
KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKQpAQCAtODEsNyArODIsNyBA
QCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSBzaXpl
LCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBjYWxsT25NYWluUnVu
TG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGhp
ZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgYXV0
byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKG1fY29ubmVj
dGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAg
ICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwogICAgICAgICBsYXllclJlZmVy
ZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmll
ciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklkKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBs
YXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92ZShsYXllcklkKV0oKSBtdXRh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZh
NTE2YjUwMzM2ZDM2ODdmN2VjZGQxN2U4ZTdlYmQxY2Q5ZDcuLjZiYjE5ZjM5YzlhMjg5N2E0MmMw
YTRjYzlkNzMwNTI4YzRkZTg2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMzQyLDYgKzM0Miw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5jcHAKaW5kZXggNGRlMWQwZWQyYTdiZTQ5ZTNjYmJiOTVlMzc3ZjU0NTA5ZmFjMDdhZC4uNzhm
NzMxMzRjZTZhN2EyMTRjZGM5ZGUwNWM0NzUzNzJlMTdjOWEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEF0b21TdHJpbmcgTWVkaWFT
YW1wbGVCeXRlUmFuZ2U6OnRyYWNrSUQoKSBjb25zdAogICAgIHJldHVybiBBdG9tU3RyaW5nOjpu
dW1iZXIobV90cmFja0lEKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFu
Z2U6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdl
OjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgUGxhdGZv
cm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVS
YW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLmY4
MzM2YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ieXRl
UmFuZ2U7IH0KIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOwotICAgIFdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7CisgICAgV2ViQ29y
ZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNl
dFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDRmMGEyMzU0NDFiMmUxYzBjY2NjMTQwZGNjNTBmMjZmMDA0NDNjYTAu
LmVkOWI2M2ZiZWE2ODM3YjdmYTRhMDk3YzUxOWU2ZDJkN2I5ZDM4ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtNzAsNiArNzAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAt
NzM2LDYgKzczNyw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC04
NzAsNiArODcyLDggQEAgUmVtb3RlRGV2aWNlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVRdWV1ZU1lc3NhZ2VSZWNl
aXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGExYWQwMjA3YjMwMTI3ZDMwYzAyMWU2NmRiYzRhNjhhNzhjYmQwMzAuLmExNTVh
ODhkZTBjYjgxZDIzNzEyYzVhNGNmNmQ4YjJhODJkNWIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA3Nyw2ICs1MDc3LDEyIEBA
CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk3RjI3NzFGNkNFMDAzREFBQzQgLyog
SVBDVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElQQ1Rlc3Rlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTgwMjc3MUY2Q0YwMDNEQUFDNCAvKiBJUENUZXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSVBDVGVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREEwMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMTI3QTdE
QzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90
ZVZpZGVvRnJhbWVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNE
QTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyog
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2
NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1
Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NTIsNiArNjc1OCwxMCBAQAogCQkJ
CUNEODI1MkQxMjVENDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
aCAqLywKIAkJCQlDRDgyNTJEMzI1RDQ2NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLm1lc3NhZ2VzLmluICovLAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAv
KiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNE
QTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJ
CQkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAg
Ki8sCisJCQkJN0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oICovLAorCQkJCTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZG
N0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYy
MkYxMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8s
CkBAIC02ODQyLDYgKzY4NTIsOCBAQAogCQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDRE
Qzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2
MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEz
REE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8s
CisJCQkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmggKi8sCiAJCQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJh
Y2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZp
ZGVvVHJhY2tQcm94eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggOWNhZGZjMDJmNGFiNmM4YmMxNjM1ODkyMjU3
M2Y5OTdmZmM0ODg5ZS4uZjllZmExZDE3YmFjNjZkNGM2YWEyMmJhOWY4ZTRjNDU2NWExOGQ2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0zNSw2ICsz
NSwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
QnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTExOCw2ICsxMjIsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXImIGIKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6Y3JlYXRlKCptX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUobWVkaWFTYW1wbGUtPmlkZW50aWZpZXIo
KSkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBtZWRpYVNhbXBsZTsK
K30KKyNlbmRpZgorCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0
dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA0YWMxODA4ZTY1NGY1NzliNTEzN2Q0
YjE5NjJjZDRmOTRhYjgxMWM0Li4zNjQxNWQ5YTMzZDNhMWVjZTAyNzFkYzA3OTMyODEyMTcyYmVk
OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNjUsNiAr
NjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdl
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUoKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3Io
R0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CiAg
ICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIFBsYXRm
b3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxYmVjZGIx
NjA2MmNiNGRlYzIyYTg4MmYyMzUwYWFkYjMxODJiNGU5Li5mMWE3ZjliOGJhYzBmNzlhNTUyYzAz
MWJlZjg0NTZhM2EwNDdhYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05OSw5ICs5OCw2IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFs
OwotI2VuZGlmCiBwcml2YXRlOgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgOiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJp
bmdCYWNrZW5kKQpAQCAtMTE0LDIwICsxMTAsNiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi1SZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQotewot
ICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KLSAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVy
LmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1
cmZhY2UtPnN1cmZhY2UoKSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRl
SW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFW
Rk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwotfQotI2VuZGlmCi0KIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MDc3ZGYwNDc2YTJjM2EzM2JmZDc0MzU3ZDczM2YyMjJiNzU4Y2MxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2lu
ZyBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTYzZTQwY2QwNzk0NWY3YmVl
Y2Q4OGQ4ZmFhYjc3MDNiZDcyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTAsMCArMSwx
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVh
dGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkpOworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAgICBy
ZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAgICAg
IG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9S
b3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMp
OworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKKyAgICA6IG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24obnVsbHB0cikKKyAgICAsIG1faWRlbnRpZmllcihSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKK3sKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5
Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKK3sKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lm
TmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsK
K30KKworTWVkaWFUaW1lIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJlc2VudGF0aW9uVGltZSgp
IGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAgIHJldHVy
biBtX3ByZXNlbnRhdGlvblRpbWU7Cit9CisKK1dlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIFJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAoreworICAgIHJldHVybiB7
IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCB7IH0g
fTsKK30KKworTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gUmVtb3RlVmlkZW9GcmFtZVByb3h5
Ojp2aWRlb1JvdGF0aW9uKCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRpYWxp
emVkKCk7CisgICAgcmV0dXJuIG1fdmlkZW9Sb3RhdGlvbjsKK30KKworYm9vbCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25zdAoreworICAgICh2b2lkKSB3YWl0Rm9y
V2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92aWRlb0lzTWlycm9yZWQ7Cit9CisKK3Vp
bnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpKSB7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9u
LT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgICAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKG1faWRlbnRpZmllciksIDAsIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YWl0Rm9yV2FzSW5pdGlh
bGl6ZWQoKSBjb25zdAoreworICAgIGlmIChtX3dhc0luaXRpYWxpemVkKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgeworICAgICAgICBpZiAo
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRpYWxpemVk
PihtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQor
eworICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1v
dmVDbGllbnQoKnRoaXMpOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2
ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9
CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZChzdGQ6Om9wdGlv
bmFsPFByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKK3sKKyAgICBtX3dhc0luaXRpYWxpemVkID0g
dHJ1ZTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ByZXNl
bnRhdGlvblRpbWUgPSBwcm9wZXJ0aWVzLT5wcmVzZW50YXRpb25UaW1lOworICAgIG1fdmlkZW9J
c01pcnJvcmVkID0gcHJvcGVydGllcy0+dmlkZW9Jc01pcnJvcmVkOworICAgIG1fdmlkZW9Sb3Rh
dGlvbiA9IHByb3BlcnRpZXMtPnZpZGVvUm90YXRpb247Cit9CisKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZiN2ZiY2FjNTdiZDIzMTQxNTBlM2JiM2ZlNjgyOTFj
YjVhMGU5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWUuaD4KKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworCitjbGFzcyBSZW1vdGVWaWRlb0Zy
YW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GcmFtZSwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIC8vIENyZWF0ZXMgYSBwcm9taXNl
IG9mIGEgTWVkaWFTYW1wbGUgdGhhdCBleGlzdHMgaW4gR1BVIHByb2Nlc3MuIFRoZSBvYmplY3Qg
Y2FuIGJlIHVzZWQgYXMgb3V0IHBhcmFtZXRlciBvZiB0aGUgY3JlYXRpb24gbWVzc2FnZS4KKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3ND
b25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3QgUHJvcGVydGllcyB7CisgICAgICAgIE1lZGlhVGlt
ZSBwcmVzZW50YXRpb25UaW1lOworICAgICAgICBib29sIHZpZGVvSXNNaXJyb3JlZCB7IGZhbHNl
IH07CisgICAgICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246
Ok5vbmUgfTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsK
KworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFT
YW1wbGUmKTsKKworICAgIH5SZW1vdGVWaWRlb0ZyYW1lUHJveHkoKSBmaW5hbDsKKworICAgIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdDsKKworICAgIC8vIFdl
YkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25U
aW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBj
b25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNh
bXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2Ft
cGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhl
bEZvcm1hdCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsK
KyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9j
ZXNzSWZOZWVkZWQoKSBjb25zdDsKKyAgICBib29sIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNv
bnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92
ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCBvdmVycmlkZXMuCisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdh
c0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4mJik7CisgICAgc3RhdGljIGlu
bGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisKKyAgICBtdXRhYmxlIEdQ
VVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9Owor
ICAgIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBt
dXRhYmxlIGJvb2wgbV93YXNJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAgTWVkaWFUaW1lIG1f
cHJlc2VudGF0aW9uVGltZTsKKyAgICBib29sIG1fdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsK
KyAgICBWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUg
fTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPDwgdmlkZW9Jc01pcnJvcmVk
CisgICAgICAgIDw8IHZpZGVvUm90YXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gdmlkZW9Jc01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRp
bWUKKyAgICAgICAgPj4gdmlkZW9Jc01pcnJvcmVkCisgICAgICAgID4+IHZpZGVvUm90YXRpb247
CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAq
dmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiB9OworfQorCit9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsg
cmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0
Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRl
b0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsg
fQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUz
NjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJl
ZkNvdW50ZWQgeworICAgIFdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggMjE5YTU1ZGYxYzI5ZmQxYzZmOTMz
NjExYTI5MjViNWMzYzA2ZTE3MC4uOTg0M2NiMzE4NmUyM2I1YjU5YmRlMmMzZWRkN2EyMTA3NjVl
NTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAi
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTQ5LDEyICs1MCwxMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbAogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBt
YW5hZ2VyLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYgY2xpZW50
KQogICAgIDogV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAgICAs
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkpCiAgICAgLCBtX21hbmFnZXIobWFuYWdlcikKLSAgICAsIG1f
Y29ubmVjdGlvbihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkpCiAgICAgLCBtX2lkZW50aWZpZXIoU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKIHsKICAgICBtYW5hZ2VyLmFkZExheWVy
KCp0aGlzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+
YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Omlu
aXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmIGxvZ0lkZW50aWZp
ZXIpCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29u
bmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpSZWxlYXNlTGF5ZXIgeyBtX2lkZW50
aWZpZXIgfSwgMCk7CiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5yZW1v
dmVMYXllcigqdGhpcyk7CkBAIC0xNDAsNiArMTQyLDEzIEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgaWYg
KG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
c2FtcGxlKSkgeworICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVW
aWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVt
b3RlU2FtcGxlLmlkZW50aWZpZXIoKSB9LCBtX2lkZW50aWZpZXIpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3Jl
YXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpO
byk7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkgewpAQCAtMTQ4LDcgKzE1Nyw3
IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVl
dWVTYW1wbGUgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVl
dWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKQEAgLTE3MCwx
MSArMTc5LDE4IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXREaWRGYWlsKGJv
b2wgdmFsdWUpCiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29u
bmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKKyAgICBkaXNjb25uZWN0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIG1fZGlkRmFpbCA9IHRydWU7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyU3RhdHVzRGlkRmFpbCgpOwogfQogCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIGlmIChhdXRv
KiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVj
dGlvbiwgbnVsbHB0cikpCisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGll
bnQoKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCA1NjM2OWFkZGYwYWJmMzQ2YjBkMjFjODUwNmQ2OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4
NjI3OTQ0MzIxMTEzZTY5ZDI2YjEyYjI1NWJmYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImLCBXZWJDb3Jl
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYpOworICAgIHZvaWQgZGlzY29ubmVj
dEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKIAogICAgIC8vIFdlYkNvcmU6OlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIFdlYkNvcmU6OkludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwpAQCAtNzYsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGlkRmFpbChib29s
KTsKICAgICBib29sIGNvcHlTaGFyZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCisg
ICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vh
a1B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ3MDE5ODMyZTA2YjM1NzAwOTBhZGUwNWQ1OWQ2YjJm
ZmI0MWIwMTkuLjEyMTNiMmVkZDhiYzU5OGNjMjg0NTgxZDIzZGYxZmIxZDkzNDExOGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wMi0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50
IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQg
aW4gR1BVUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHA6CisKIDIwMjItMDItMDMgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB1c2luZyBTVElYIFR3
byBpbiBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4
MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi5kNDE1YmRiYjg0MzZjZjlhNDkwOTFl
NWI3MzkzZmVjNzBiZTZlZWUzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3
ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RT
dHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVT
RShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVm
ZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdS
QVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5j
aHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBl
eHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZm
ZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwg
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIFNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRF
dmVudEZvclRlc3RpbmcgZXZlbnQpCiB7fQogfX0KQEAgLTIzMiw3ICsyMzgsNyBAQCBkZWYgY3Jl
YXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90
eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUg
PSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVzIGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBi
ZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBp
ZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6
b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAg
ICAgYXJpdHkgPSBOb25lCkBAIC02NDAsNyArNjQ2LDEzIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3Bw
X3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3
ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KICAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5j
ZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAg
diA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQotICAgICAgICAg
ICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFt
ZSl9OyJdCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0g
e3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICMgRklYTUU6IExpa2VseSB0aGlzIGNyZWF0ZXMgYSBkYW5nbGluZyByZWZlcmVuY2Ugc3Bh
bjxpbnQsIDI+IGFSZXBseSA9IHsgeyB9IH07LgorICAgICAgICAgICAgICAgICAgICAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4ODkKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1l
KX0ge3sge3sgfX0gfX07Il0KKwogICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtj
cHBfZXhwcih2LnR5cGUsIHYubmFtZSldCiAgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5
bmFtaWNfc3BhbigpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBf
ZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0
NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0OGQyODgxNTdhZGZkYzFiOC4uYzQ1YzY3YTMxNjZiZmZiOTg3
N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIE1l
ZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9
CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlv
bjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJh
Y2tJRDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSUQpIGZpbmFs
IHsgbV90cmFja0lEID0gdHJhY2tJRDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAg
IHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBmaW5hbCB7
IG1fcHJlc2VudGF0aW9uVGltZSArPSBvZmZzZXQ7IG1fZGVjb2RlVGltZSArPSBvZmZzZXQ7IH0K
QEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3JlYXRlKG1fcHJlc2Vu
dGF0aW9uVGltZSwgbV9kZWNvZGVUaW1lLCBtX2R1cmF0aW9uLCBzdGF0aWNfY2FzdDxTYW1wbGVG
bGFncz4obV9mbGFncyB8IElzTm9uRGlzcGxheWluZykpOwogICAgIH0KICAgICBTYW1wbGVGbGFn
cyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5v
bmUsIHtudWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07
IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdCBmaW5hbCB7IH0K
</data>
<flag name="commit-queue"
          id="477422"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450894</attachid>
            <date>2022-02-04 07:27:36 -0800</date>
            <delta_ts>2022-02-07 08:10:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220204172733.patch</filename>
            <type>text/plain</type>
            <size>100017</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDIzYzMwNmQ2NzY4ZTM4
NDhkZTQzMTY1ZjVmM2I5ODI4ZDUxMWQ0NC4uOGU0YjNjZTJmMzRkNmFlODcxMjM5MGQ2ZTM0ZDE2
NThhMjk3NTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTAz
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBGaXggR1RLIG1ha2UgZGlzdGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiYzczNWM1MDQw
N2UyOTMwNjM5Zjk0NWE2YWJjMWJjYzgyOTYzZjIuLjMzZDg3ZDg2ZmVkOWFmZDdhNjJiY2Q2MGM2
Y2U2NTc5YTRkOGE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIyLTAyLTA0ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJh
bWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2Vz
czoKKyAgICAgICAgQWRkIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5LCBXZWJDb250ZW50
IHByb2Nlc3Mgc2lkZSBwcm94eSBvYmplY3QgdGhhdAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgY2FuIHVzZS4KKyAgICAgICAgTWlzc2luZzog
UmVtb3RlVmlkZW9GcmFtZVByb3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhl
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRl
bnQgc2hvd3MgaW4gY29tcG9zaXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LiBBdCB0aGUgbW9t
ZW50CisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW5ub3Qg
cGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1bWVudCBDU1Mg
cGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisgICAgICAgIEdQ
VVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFwcGluZworICAg
ICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4gQ3VycmVudGx5
IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVBVkZPYmpDLgor
CisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEgcmVtb3RlIE1l
ZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA6OmFkZEltcGwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW46IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyOjpjcmVhdGVMYXllcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
U2FtcGxlQnl0ZVJhbmdlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3Rl
VmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQ
VVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDMgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBsZUJ1ZmZlckRpcGxheUxheWVy
IHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggZjhmZjNlNjE2YzMwMTgzMjY4YWE1ZTUyODJkMTVhZTBjMTZjNzZmZi4uNmM2OTNiMjM0ZGFj
YWQxNDliOWQ5NzhlZTVlZDc2NWEwYjE2NWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQx
LDYgKzEzNDEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9W
aWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRm
b3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2Vy
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNTFiZmFiODg4MGI5ZDY4OTZiMzA3OGIwOTMwZGJlNzYzNzEx
ZmUwOS4uMTc2OGYyZGYxMzRiYTUyNDk2Y2Y5MjY3ZTQ2MjI3MDllMTI3OWEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE5MjYsNiArMTkyNiw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3Jt
L1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJD
b3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAK
IHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMDczMzIyNDM2ZjRlYzI1MjgxZWExOGJmN2QxODEw
YmIzN2Q5MzBiLi45OGUxMjE5NjhhNWY1ODExMzI4ZjRlZmYwNWQwYmY0MjIyODRkN2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNDAyLDYgKzI0MDIsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5
RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8q
IE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlk
ZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZG
OTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYy
NTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8q
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTA0LDYgKzExNTA1LDggQEAK
IAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThG
QzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVB
VkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZD
NkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RB
RDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzAxMjEsNiArMzAxMjQsOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBV
c2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAv
KiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8q
IFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRl
b0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVN
ZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBs
ZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0zNzc4Nyw2ICszNzc5Miw3IEBACiAJCQkJMEYx
QTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8q
IFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3
NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcx
OUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcx
NjU3OWZmOGU3ZmMzNDBkODdjYzg5MmYxYmJiNGIwZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVNhbXBsZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUg
ewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5
cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJh
bWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBu
b3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1Nh
bXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9j
a1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAg
ICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5C
eXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBA
IC02Niw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1l
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBz
QnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFn
cyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5
dGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEyZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJh
bWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVj
b2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5n
IFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K1dlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lk
IFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFt
cHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6
OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVs
bHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0
ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgpOworfQorCitNZWRpYVNh
bXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVy
biBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVk
aWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1l
OjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFi
OTk4MzdiODQ3NzE0MWUwNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBs
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEg
dmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgor
Ly8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBm
cm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRv
IE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1F
OiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisg
ICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JU
IE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
TWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRv
bVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90
IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6
RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJs
ZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVk
aWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBw
cmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9u
RGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFk
NzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxl
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBw
bGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGltcGxlbWVudGVkLgorICAg
IGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBs
ZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyBy
ZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRj
YjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2
NTYyZTMxMTA0NWM0MWFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2
ICs5ODcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8
fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IEZJWE1FOiBEb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
CisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNh
bXBsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxC
dWZmZXJDb25mb3JtZXIpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9y
bWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWVi
YzNiMzFkNjMzODA2MGQ3ZTkyMzcwNTYuLjcwZjhmYmE2ODhkZjM1ZWM4NmJhZWVhNDFlYzI3ZjRk
OGIzNmUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
CkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBv
dmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZv
cm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJv
dGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVy
biBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1T
YW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDRh
MGZhYzYxZWIxZWY2MDMzZWQyOTc0MzVkYWE5MjZlOWVkZWFjZDcuLmU2MWY1MDZlNGEwZmIyYmNh
NDdkYWMyNjMzYTNkOWFhNzVhMmZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVB
VkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZm
ZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3Jt
U2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAu
Y21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2Ix
MzlhOWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2
OGJiNTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAt
MjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFt
cHNCeShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRm
b3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9y
bVNhbXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewog
ICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNh
bXBsZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4g
c2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5
Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMx
ZmIyMzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAt
NTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7
IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Np
emU7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5
KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRp
dmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBu
dWxscHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3
Njc5YjFhZWJkNjViLi40YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkg
QEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQogICAgIEF0b21T
dHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lk
IHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9i
b3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxl
IHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRl
UmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRp
YVNhbXBsZTo6ZmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9
CiAKLVBsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxh
dGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAg
ICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJv
eFR5cGUsIHsgJm1fYm94IH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
aW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZi4uN2U4YmM2MGY1
MzNkNDQzYmNjNzY0OTZkOTJlZTI5ODQ0MjE5OTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0y
NzUsNiArMjc1LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDRjNjYyMjBjZjEyMmE1M2I3NDY5ZDQ0MDBjN2NkZGIyMzVjOGI3NDkuLmI5YmYyNTI2NTBjNWIx
YWEyYWNhNTAyYzBhNmRiMWI5NDNhMjZhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3LDcgQEAgJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0xODksNiArMTkwLDcgQEAg
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
bWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggZTNiNTU4NDBhZTFlYWY1N2Y1ZWJmNzU0MmU1ZTFmZDQwZTVkZDRk
MS4uNDAwZGZkZTIwZjg0OTljNjQxYjg1Y2RhM2QzZDgzZjM2MDJlNTdjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODEsNiArMzgx
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3Rl
VGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVv
RnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9U
cmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDdhZDQ5ZTM3MzVmNGI0NzhjNDE2ZDkyOTVjMTM5YmU5OGZk
NmNlNGEuLjMzOGRiNGRmY2MzZmZkNjdjZGUxNzc4NTliNzViOTk2YjdlNjBhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5OSw2ICsxOTksNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAog
CVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIgXAogCVdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyIFwKQEAgLTI5NSw2ICsyOTYsNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwK
IAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAogCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFT
b3VyY2VQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWViNmI1YmMxMDRiNzU0MTA0YjYzZS4u
NGEzMTJlZTNkMzNiNjcyYWJlYzMzZDg3MzgwN2Q1Y2Q2OTJhNTU2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApA
QCAtMTQxLDYgKzE0MSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjZW5kaWYKIApAQCAtMjU3LDYgKzI1OCw5IEBAIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYg
Z3B1UHJvY2VzcywgV2ViCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUo
QVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgZ3B1UHJvY2Vzcy5hdWRpb1Nlc3Npb25NYW5h
Z2VyKCkuc2Vzc2lvbigpLnNldFJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudChtX3JvdXRpbmdBcmJp
dHJhdG9yLmdldCgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUo
KnRoaXMpOworI2VuZGlmCiAKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFnZXMu
aXNFbXB0eSgpKQogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFyYW1l
dGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CkBAIC0zMDAsNyArMzA0LDkgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgot
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnJl
c2V0KCk7CisjZW5kaWYKICAgICAvLyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG9iamVjdHMgcmVm
IHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUK
ICAgICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJ5IGRlc3Ryb3lpbmcgdGhlbS4K
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xlYXIoKTsKQEAgLTk0MSw4ICs5NDcs
MTUgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlQXR0cmlidXRp
b25TdHJpbmcoKSBjb25zdAogewogfQogI2VuZGlmCisKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICptX3ZpZGVvRnJhbWVPYmplY3RIZWFwLmdldCgpOworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorCiAjaWYgUExBVEZPUk0oTUFDKQogdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQo
Q0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IDYyNGUzZmEzNTFjZjBiMDM1ZTJlMTNhOTMzMjVkZGQ0YzM0MmIxNDkuLjEx
YWNjMDBjNzRlYjVkMTJmODI4MmQ0NDY2Mzk3ZDg3ZDdlOTc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTA2
LDYgKzEwNiwxMSBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVyczsKIGNsYXNzIFJlbW90ZVdDTGF5ZXJUcmVlSG9zdDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlm
CisKKwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6
OkNsaWVudApAQCAtMTQxLDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlv
Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9v
bCBhbGxvd3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVy
ZTsgfQogICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93c0Rpc3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZp
ZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93
c1ZpZGVvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJl
IHsgZmFsc2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYK
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
bV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uNjE5ZmYz
ZmNhYzNkZjIzNmY2YTc2NDY2NmY1ZDc4NTEyNzcyOTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xDVi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tl
bmQpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhl
YXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2Vu
ZGlmCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsK
QEAgLTIyMyw2ICsyMzAsMTQgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBp
eGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0Zv
clBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJl
YWQpOworICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZChpZGVudGlmaWVyLCBtX2NvbnRl
eHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkpOworfQorI2VuZGlmCisK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQo
bV9zdHJlYW1UaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBlYjIwZDE2YzM3N2Y1
ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li5jMDAyM2ZlYmZiYjY1ZWFjODJiM2Y2NWJlNDE0
ZTYyY2ZjMTE4YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTQsNiArNTQsMTAgQEAK
ICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIu
aCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IE1hY2hTZW5kUmlnaHQ7CkBAIC02MSw2ICs2NSw5IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2Ns
YXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAKIC8vIEdQVSBwcm9jZXNz
IHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFw
aGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdM
IGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KQEAgLTEwOCw2ICsxMTUsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcik7
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcik7CisjZW5kaWYKICAgICB2b2lkIGNvcHlU
ZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3Qg
dGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAKQEAgLTEzMCw2ICsxNDAsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmUHRyPFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0w+IG1fY29udGV4dCBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKICAgICBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI7CiAgICAgUmVmPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcDsKKyNlbmRpZgogICAgIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q7CiAgICAgTk9fVU5JUVVFX0FERFJFU1MgVGhy
ZWFkQXNzZXJ0aW9uIG1fc3RyZWFtVGhyZWFkOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KaW5kZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2ViMzdhMGMyOTg5OGUzMDJi
Mi4uYjJiMGI2NjVlZmM1NmU1YWEzZmMyNmZkMjBiNTE0NjExNjczMDRlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIsOSBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAg
dm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQ
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQ29weVRl
eHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMy
X3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91
cworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAKICAg
ICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZh
bHVlKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q5
YjFkNWQ3ZGFjNGE0MzY5MGZmZTEyNTg2Njk5MDg3YmNiNDEwMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoJmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGQoUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPiYmIHNhbXBsZSkKK3sKKyAgICBhdXRvIHdhc05ldyA9IGFkZEltcGwoaWRlbnRpZmll
ciwgV1RGTW92ZShzYW1wbGUpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc05ldywgd2FzTmV3KTsK
K30KKworYm9vbCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkSW1wbChSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+
JiYgc2FtcGxlKQoreworICAgIC8vIEZJWE1FOiBQcm9iYWJseSB0b28gaGFyZCBnZXQgY29ycmVj
dCwgbWF5YmUgbWFrZSBzYW1wbGUgUmVmPD4uCisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXM7CisgICAgaWYgKHNhbXBsZSkKKyAg
ICAgICAgcHJvcGVydGllcyA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcygqc2Ft
cGxlKTsKKworICAgIGJvb2wgd2FzTmV3ID0gZmFsc2U7CisgICAgeworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9yZW1vdGVGcmFtZXNMb2NrIH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9y
ZW1vdGVGcmFtZXMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgIHdh
c05ldyA9IHJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKyAgICBpZiAod2FzTmV3KQorICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2Fz
SW5pdGlhbGl6ZWQoV1RGTW92ZShwcm9wZXJ0aWVzKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgcmV0dXJuIHdhc05ldzsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6cmVtb3ZlKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRnJhbWVzTG9jayB9OworICAgIG1fcmVtb3RlRnJhbWVz
LnJlbW92ZShpZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Z2V0KFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVtb3RlRnJhbWVzTG9jayB9
OworICAgIHJldHVybiBtX3JlbW90ZUZyYW1lcy5nZXQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2Vy
dElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8vIENsaWVu
dHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhleSBzaG91
bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAgICAgLy8g
YXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50
cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0
byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cmVtb3RlRnJhbWVzTG9jayB9OworICAgICAgICBtX3JlbW90ZUZyYW1lcy5jbGVhcigpOworICAg
ICAgICAvLyBUT0RPOiBhZGQgY2FuIGhhcHBlbiBhZnRlciBzdG9wcGluZy4KKyAgICB9Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50
KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTkxNzAwMmY1MzQ5MzI4ZDFh
NmI4MjEwZTU1ZGY0ZjU0NDk1YjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aXR5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworI2lmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVkZSA8
V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNl
cyB0byBhbGwgVmlkZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGJldHdlZW4gdHdv
IHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVjaWFsIHN0YXRlIGZv
ciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZpZGVvRnJhbWUgaW5z
dGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUgaXMgbm8gUmVtb3Rl
VmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBWaWRlb0ZyYW1lIG1l
dGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0aGUgdGhyZWFkIHRo
YXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUgbWVkaWEgcGxheWVy
IHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRseSBWaWRlb0ZyYW1l
IGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3MgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCgpOworICAgIHZvaWQgYWRkKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpOworICAgIHZvaWQgcmVtb3ZlKFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyKTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gZ2V0KFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQ
QyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwor
cHJpdmF0ZToKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcChHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJik7CisgICAgYm9vbCBhZGRJbXBsKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAg
Ly8gTWVzc2FnZXMuCisgICAgdm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwor
ICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBMb2NrIG1f
cmVtb3RlRnJhbWVzTG9jazsKKyAgICBIYXNoTWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBtX3JlbW90ZUZyYW1lcyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fcmVtb3RlRnJhbWVzTG9jayk7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29u
c3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2M2QxZDE1M2Q1MzEz
NzBkZGUyM2Y2OWRjNzcxMGYwODBmZDdkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK21lc3Nh
Z2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgeworICAgIFJl
bGVhc2VWaWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCAyMTdkYjk3YTNjZTRjODMwMDQ4YWZhYzgyOGVm
YmRiYmQ1MThlN2EwLi5kMTIyODBlY2Q3ZjQyMjhmNjUxNjRiZjgxMmVjMTFjNjgwZjA4NzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNp
bmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KQEAgLTM3LDE2ICszOCwxOCBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CisgICAgYXV0byBs
YXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+KG5l
dyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29ubmVjdGlvbiwgaWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBsYXllci0+bV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxwdHI7CiB9CiAKLVJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCitS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQorICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAgICBB
U1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpAQCAtMTEzLDcgKzExNiwyMCBA
QCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90
ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlKFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBt
ZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmdldChpZGVudGlmaWVyKTsKKyAg
ICBBU1NFUlQobWVkaWFTYW1wbGUpOworICAgIGlmICghbWVkaWFTYW1wbGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUpKQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNh
bXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRB
c0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3
ZDI1MmFhN2EwZC4uYmY3ZmU1YzQ1MzE2NTZiNjRkNTkyZThjNDIxNzNmZTVjZWQ0NjUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNs
dWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJl
bW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAK
IGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAK
ICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vh
a1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRz
KCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9p
ZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2
b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcik7CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJik7CiAgICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hh
cmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNo
YXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAg
LTg1LDEyICs5MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0
dXNEaWRGYWlsKCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dw
dUNvbm5lY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJl
YWRlciBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBt
X2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZl
ZmFmYjQzZGNhNjA4Y2RjMzdkNjIxNmY3ZWNkZi4uZTE1YmE0NDFkYzMyZjI2OTNlMWVhNGI1NTM4
NTc0MDc2ZThlNmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0
aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uKQogICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1
ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVl
U2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgc2FtcGxlKQorICAgIEVu
cXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgQ2xl
YXJFbnF1ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVjY2Ji
NWFkMDBjZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2RkM2U1
ZTcxOTc1YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXll
ciwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24u
Y29weVJlZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9j
b25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxh
eWVyOwogICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNp
emUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBs
YXllcklkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0g
V1RGTW92ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDdlYmZhNTE2YjUwMzM2ZDM2ODdmN2VjZGQxN2U4ZTdlYmQxY2Q5
ZDcuLjZiYjE5ZjM5YzlhMjg5N2E0MmMwYTRjYzlkNzMwNTI4YzRkZTg2OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQyLDYgKzM0Miw3IEBAIGRlZiB0
eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRp
YVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2Ft
cGxlQnl0ZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKaW5kZXggNGRlMWQwZWQyYTdiZTQ5ZTNjYmJi
OTVlMzc3ZjU0NTA5ZmFjMDdhZC4uNzhmNzMxMzRjZTZhN2EyMTRjZGM5ZGUwNWM0NzUzNzJlMTdj
OWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIEF0b21TdHJpbmcgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnRyYWNrSUQoKSBjb25zdAog
ICAgIHJldHVybiBBdG9tU3RyaW5nOjpudW1iZXIobV90cmFja0lEKTsKIH0KIAotUGxhdGZvcm1T
YW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2Ft
cGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHsKICAgICAgICAgUGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFTYW1wbGVCeXRlUmFuZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5
ZmIxZWY5NjJiNDA0OTdlM2RjMzEuLmY4MzM2YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFj
YTU3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9ieXRlUmFuZ2U7IH0KIAogICAgIEF0b21TdHJpbmcgdHJhY2tJ
RCgpIGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgZmluYWw7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmKSBmaW5hbDsKICAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDRmMGEyMzU0NDFiMmUxYzBj
Y2NjMTQwZGNjNTBmMjZmMDA0NDNjYTAuLmVkOWI2M2ZiZWE2ODM3YjdmYTRhMDk3YzUxOWU2ZDJk
N2I5ZDM4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIu
Y3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
UmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtNzM2LDYgKzczNyw3IEBAIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCkBAIC04NzAsNiArODcyLDggQEAgUmVtb3RlRGV2aWNlTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKK1Jl
bW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5
b3V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVRdWV1ZU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGExYWQwMjA3YjMwMTI3ZDMwYzAyMWU2
NmRiYzRhNjhhNzhjYmQwMzAuLmExNTVhODhkZTBjYjgxZDIzNzEyYzVhNGNmNmQ4YjJhODJkNWIy
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTA3Nyw2ICs1MDc3LDEyIEBACiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjUw
RTk3RjI3NzFGNkNFMDAzREFBQzQgLyogSVBDVGVzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElQQ1Rlc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTgwMjc3
MUY2Q0YwMDNEQUFDNCAvKiBJUENUZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSVBDVGVzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEwMjdBN0RDMUEwMDZDNkY5NyAv
KiBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjVBM0RBMTI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQ
cm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTIy
N0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVv
RnJhbWVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVWaWRlb0ZyYW1lUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVB
M0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3
IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUy
MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY3NTIsNiArNjc1OCwxMCBAQAogCQkJCUNEODI1MkQxMjVENDY0QUIwMDg2MkZEOCAvKiBSZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywKIAkJCQlDRDgyNTJEMzI1RDQ2NEJGMDA4NjJG
RDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLm1lc3NhZ2VzLmluICovLAogCQkJCUNE
ODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVu
dGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8sCisJCQkJN0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3
IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovLAorCQkJCTdCNUEzREExMjdBN0RDMUEwMDZD
NkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUREMkE2
M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwICovLAog
CQkJCTFERDJBNjM5MjU1REU2RDEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmggKi8sCiAJCQkJMUREMkE2NkYyNTYyMkYxMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCkBAIC02ODQyLDYgKzY4NTIsOCBAQAogCQkJCTFERDJB
NjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5p
biAqLywKIAkJCQkwN0UxOUYwNzIzRDREQzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwICovLAogCQkJCTA3RTE5RjA2MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJh
Y2tQcm94eS5oICovLAorCQkJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCisJCQkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8q
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8sCiAJCQkJMDcxQkM1ODQyM0NDMkMwOTAw
NjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1ODUyM0ND
MkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5oICovLAogCQkJCTA3RTE5RjA1
MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggOWNh
ZGZjMDJmNGFiNmM4YmMxNjM1ODkyMjU3M2Y5OTdmZmM0ODg5ZS4uZjllZmExZDE3YmFjNjZkNGM2
YWEyMmJhOWY4ZTRjNDU2NWExOGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTExOCw2ICsxMjIs
MjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImIGIKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7Cisg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBtZWRpYVNhbXBsZSA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKCptX2dwdVByb2Nl
c3NDb25uZWN0aW9uKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
bWVkaWFTYW1wbGUtPmlkZW50aWZpZXIoKSkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHJldHVybiBtZWRpYVNhbXBsZTsKK30KKyNlbmRpZgorCiBib29sIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBs
YXllciwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRl
eCA0YWMxODA4ZTY1NGY1NzliNTEzN2Q0YjE5NjJjZDRmOTRhYjgxMWM0Li4zNjQxNWQ5YTMzZDNh
MWVjZTAyNzFkYzA3OTMyODEyMTcyYmVkOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKKyNlbmRpZgogICAg
IHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xl
bnVtIGdldEVycm9yKCkgZmluYWw7CiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJD
b3JlOjpNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbQppbmRleCAxYmVjZGIxNjA2MmNiNGRlYzIyYTg4MmYyMzUwYWFkYjMxODJiNGU5
Li5mMWE3ZjliOGJhYzBmNzlhNTUyYzAzMWJlZjg0NTZhM2EwNDdhYTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAt
MzQsNyArMzQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSU9TdXJmYWNlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC05OSw5ICs5OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigp
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwotI2VuZGlmCiBwcml2YXRlOgogICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
ICAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQpAQCAtMTE0LDIwICsxMTAsNiBAQCBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Owog
fTsKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1SZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1w
bGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQotewotICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNh
bXBsZS4KLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3Jl
OjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7Ci0gICAgaWYgKCFwaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIp
LCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24s
IHRydWUpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDc3ZGYwNDc2YTJjM2EzM2Jm
ZDc0MzU3ZDczM2YyMjJiNzU4Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciA9IE9i
amVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJjMTYzZTQwY2QwNzk0NWY3YmVlY2Q4OGQ4ZmFhYjc3MDNiZDcyMTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eS5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxl
JiBtZWRpYVNhbXBsZSkKK3sKKyAgICByZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVz
ZW50YXRpb25UaW1lKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAg
ICAgICAgbWVkaWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24p
CisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KCkKKyAgICA6IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24obnVsbHB0cikKKyAgICAsIG1f
aWRlbnRpZmllcihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKK3sKK30K
KworUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKK3sKKyAg
ICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworTWVkaWFUaW1lIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJ
bml0aWFsaXplZCgpOworICAgIHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7Cit9CisKK1dlYkNv
cmU6OlBsYXRmb3JtU2FtcGxlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUo
KSBjb25zdAoreworICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHlUeXBlLCB7IH0gfTsKK30KKworTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uKCkgY29uc3QKK3sKKyAgICAo
dm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fdmlkZW9Sb3RhdGlv
bjsKK30KKworYm9vbCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25z
dAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92
aWRlb0lzTWlycm9yZWQ7Cit9CisKK3VpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlk
ZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBi
YXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQor
CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nl
c3NJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24g
PSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpKSB7CisgICAg
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBpZiAobV93YXNJbml0aWFs
aXplZCkKKyAgICAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1l
KG1faWRlbnRpZmllciksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIGlmIChtX3dhc0lu
aXRpYWxpemVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9ncHVQcm9jZXNzQ29u
bmVjdGlvbikgeworICAgICAgICBpZiAobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6Oldhc0luaXRpYWxpemVkPihtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2Uo
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQoreworICAgIGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24g
PSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpOworICAgIGdw
dVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3
YXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKK3sK
KyAgICBtX3dhc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3ByZXNlbnRhdGlvblRpbWUgPSBwcm9wZXJ0aWVzLT5wcmVzZW50
YXRpb25UaW1lOworICAgIG1fdmlkZW9Jc01pcnJvcmVkID0gcHJvcGVydGllcy0+dmlkZW9Jc01p
cnJvcmVkOworICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHByb3BlcnRpZXMtPnZpZGVvUm90YXRpb247
Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZiN2ZiY2Fj
NTdiZDIzMTQxNTBlM2JiM2ZlNjgyOTFjYjVhMGU5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKQEAg
LTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJh
bWUuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9u
OworCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
VmlkZW9GcmFtZSwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVibGljOgor
ICAgIC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFTYW1wbGUgdGhhdCBleGlzdHMgaW4g
R1BVIHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgb3V0IHBhcmFtZXRlciBvZiB0
aGUgY3JlYXRpb24gbWVzc2FnZS4KKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3QgUHJvcGVy
dGllcyB7CisgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOworICAgICAgICBib29s
IHZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90YXRpb24gdmlkZW9S
b3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmKTsKKworICAgIH5SZW1vdGVWaWRlb0ZyYW1l
UHJveHkoKSBmaW5hbDsKKworICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgorICAg
IE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9Sb3Rh
dGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJvcmVk
KCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZp
ZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hlbiBW
aWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgor
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7
CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworCitwcml2YXRl
OgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdDsKKyAgICBib29sIHdh
aXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gR1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAgICAv
LyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVy
dGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9
IDMwX3M7CisKKyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIGJvb2wgbV93YXNJbml0aWFsaXplZCB7IGZh
bHNlIH07CisgICAgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKKyAgICBib29sIG1fdmlk
ZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICBWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlv
biB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+IHZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByZXNlbnRhdGlvblRpbWUKKyAg
ICAgICAgPDwgdmlkZW9Jc01pcnJvcmVkCisgICAgICAgIDw8IHZpZGVvUm90YXRpb247Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBw
cmVzZW50YXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmlkZW9Jc01pcnJvcmVk
OworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBk
ZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPj4gdmlkZW9Jc01pcnJvcmVkCisg
ICAgICAgID4+IHZpZGVvUm90YXRpb247CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1v
dmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiB9
OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxl
KCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2Ft
cGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVzc2FnZXMgLT4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFdhc0luaXRpYWxpemVkKHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHBy
b3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5k
ZXggMjE5YTU1ZGYxYzI5ZmQxYzZmOTMzNjExYTI5MjViNWMzYzA2ZTE3MC4uOTg0M2NiMzE4NmUy
M2I1YjU5YmRlMmMzZWRkN2EyMTA3NjVlNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKQEAgLTQ5LDEyICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyPiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbAogCiBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OkNsaWVudCYgY2xpZW50KQogICAgIDogV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJldlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkpCiAgICAgLCBtX21h
bmFnZXIobWFuYWdlcikKLSAgICAsIG1fY29ubmVjdGlvbihXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAsIG1fY29u
bmVjdGlvbihtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpCiAgICAgLCBtX2lk
ZW50aWZpZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkK
IHsKICAgICBtYW5hZ2VyLmFkZExheWVyKCp0aGlzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7CisgICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9pZCBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRT
aXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03
OCw3ICs4MCw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRoaXMpOworICAg
IGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
OjpSZWxlYXNlTGF5ZXIgeyBtX2lkZW50aWZpZXIgfSwgMCk7CiAgICAgaWYgKG1fbWFuYWdlcikK
ICAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVMYXllcigqdGhpcyk7CkBAIC0xNDAsNiArMTQyLDEz
IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbGUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CisgICAg
aWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlz
PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgeworICAgICAgICBhdXRvJiByZW1vdGVT
YW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLmlkZW50aWZpZXIoKSB9LCBtX2lkZW50
aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byByZW1vdGVTYW1wbGUg
PSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNo
b3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZh
Y2UoKSkgewpAQCAtMTQ4LDcgKzE1Nyw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRl
bnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5x
dWV1ZWRTYW1wbGVzKCkKQEAgLTE3MCwxMSArMTc5LDE4IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpzZXREaWRGYWlsKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0
aW9uJikKIHsKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwog
ICAgIG1fZGlkRmFpbCA9IHRydWU7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkRmFpbCgpOwogfQogCit2b2lkIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZO
ZWVkZWQoKQoreworICAgIGlmIChhdXRvKiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhj
aGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpCisgICAgICAgIGdwdVByb2Nl
c3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1NjM2OWFkZGYwYWJmMzQ2YjBkMjFjODUwNmQ2
OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4NjI3OTQ0MzIxMTEzZTY5ZDI2YjEyYjI1NWJmYWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXImLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVu
dCYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsK
IAogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgIHZvaWQgaW5p
dGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtNzYsNiArNzcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsKICAgICBib29sIGNvcHlTaGFyZWRWaWRlb0ZyYW1l
KENWUGl4ZWxCdWZmZXJSZWYpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwog
ICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ3MDE5ODMy
ZTA2YjM1NzAwOTBhZGUwNWQ1OWQ2YjJmZmI0MWIwMTkuLjEyMTNiMmVkZDhiYzU5OGNjMjg0NTgx
ZDIzZGYxZmIxZDkzNDExOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNCAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlh
U2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1l
ZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHA6CisKIDIw
MjItMDItMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBbGxvdyB1c2luZyBTVElYIFR3byBpbiBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgx
Li5kNDE1YmRiYjg0MzZjZjlhNDkwOTFlNWI3MzkzZmVjNzBiZTZlZWUzIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5
QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYg
IVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFBy
ZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZm
ZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVF
eHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sK
ICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBD
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIp
CisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiB7fQogfX0KQEAg
LTIzMiw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUg
OiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJldHVybiBO
b25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVzIGFyZSBj
b250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFtZSBpbiBb
J1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdS
ZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJuIE5vbmUK
ICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBAIC02NDAsNyArNjQ2LDEz
IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAg
ICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KICAgICAgICAg
ICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRh
aW5lcikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5h
bWUgKyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yi
e3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgaWYgby50eXBl
LmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0
bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2VseSB0aGlzIGNyZWF0ZXMg
YSBkYW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9IHsgeyB9IH07LgorICAg
ICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7
c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0KKwogICAgICAgICAgICAg
ICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSldCiAgICAgICAg
ICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntv
Lm5hbWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0OGQyODgxNTdhZGZk
YzFiOC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTU3LDcg
KzU3LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25z
dCBTdHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJhY2tJRDsgfQogICAgIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0K
ICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGltZSArPSBvZmZzZXQ7IG1f
ZGVjb2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNvZGVUaW1lLCBtX2R1cmF0
aW9uLCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElzTm9uRGlzcGxheWluZykp
OwogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0
dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1w
bGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4g
Ynl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451102</attachid>
            <date>2022-02-07 08:10:12 -0800</date>
            <delta_ts>2022-02-07 08:14:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220207181009.patch</filename>
            <type>text/plain</type>
            <size>123759</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3Yjc2MjRhZWVjMmFh
MDUxYTM4YWJmYTYyYjM2Y2I0ZDhkYTY1Zi4uMWJiNTRhZjNhY2VlMDk5MzA4Mzk4MDViYTc1NTk2
NWRjMDA0MTIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTA2
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IG5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwZGY4ZjQ0NDIwMTMyYzg5ZmFk
NWJhNjRjZjdlNDg4NDBiZWM2MTYuLjFhNzM0ZDdmOGY3MWUyYzA1OWJjY2QzMzE0YTRjNjE0ZjU2
MmFiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIyLTAyLTA0ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3Rl
TWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQg
aW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2VzczoKKyAgICAg
ICAgQWRkIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5LCBXZWJDb250ZW50IHByb2Nlc3Mg
c2lkZSBwcm94eSBvYmplY3QgdGhhdAorICAgICAgICBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgY2FuIHVzZS4KKyAgICAgICAgTWlzc2luZzogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQgc2hvd3Mg
aW4gY29tcG9zaXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LiBBdCB0aGUgbW9tZW50CisgICAg
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW5ub3QgcGFpbnQgUmVt
b3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1bWVudCBDU1MgcGFpbnRlZCBj
b250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisgICAgICAgIEdQVVA6CisgICAg
ICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFwcGluZworICAgICAgICBSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4gQ3VycmVudGx5IGFsbCBvYmpl
Y3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVBVkZPYmpDLgorCisgICAgICAg
IEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEgcmVtb3RlIE1lZGlhU2FtcGxl
IGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OmFkZEltcGwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmdldCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9w
TGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW46IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1lc3NhZ2VzLmluLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVDVik6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpj
cmVhdGVMYXllcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlIGNvbnN0
KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0
ZVJhbmdlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjppZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVz
ZW50YXRpb25UaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6dmlkZW9Sb3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJ
Zk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
d2FpdEZvcldhc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGll
czo6ZGVjb2RlKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29u
bmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjg2OTM2KTogQ3Jhc2ggaW4gV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlTG9jYWxTdG9y
YWdlRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODIxNjVmZGM4MDhkMDNmNzk5YjAzYWE3ZWY3
MzUyZTA4ODhjZGRlZi4uMjkwMjIxMmJmOTBjNDQzMTAzODQ3NWIyOTI2ZjczMWY3ZDY5MjI4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQ0LDYgKzEzNDQsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0
Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0
aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRl
b0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAg
IHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODE0YWE0ZmRi
OGJkNGVmMWVjNmFmYzA1YjBlODQwY2Y4ZmRlZTMwMy4uZmRjNDZiOTI2ODE0Y2Y1YmFkMjkwNjQ4
YjI2MDIxMjRkNjljOGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5MjcsNiArMTkyNyw3IEBAIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBw
bGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0
Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTc4
ZWE5ZTRkOWRiMTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVkLi5jYWZkOTExMTc3ZmFkOWExYTYw
ZmI0NTE0MWU5ZTQ4OGE1OGE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA0LDYgKzI0MDQsNyBAQAogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZD
NDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAv
KiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQw
MDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0
aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTExNTExLDYgKzExNTEyLDggQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8q
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRl
b0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUw
MDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAv
KiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyog
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxMzYsNiArMzAxMzksOCBAQAogCQkJCUEz
QUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFE
MTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJ
CTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJ
N0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEz
REFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5
QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0
M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTEx
Q0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0z
NzgwNiw2ICszNzgxMSw3IEBACiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9j
aXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8q
IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5
OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVx
dWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5
NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcxNjU3OWZmOGU3ZmMzNDBkODdjYzg5MmYxYmJiNGIw
ZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC00OSw5ICs0OSwx
MCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUs
CiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5
cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSBy
ZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwog
ICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAg
ICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVC
dWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwog
ICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFj
a0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAt
OTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAg
IH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0
ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEy
ZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJh
bWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0Owor
CitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJh
bWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5nIFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVf
dCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1l
OjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0Zy
YW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNv
bnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVk
aWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sK
KyAgICBDUkFTSCgpOworfQorCitNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6
ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5v
bmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFt
ZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJh
c2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFiOTk4MzdiODQ3NzE0MWUwNWZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNh
cHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgorLy8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVt
ZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUg
Y29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1l
IDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+Vmlk
ZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgp
OworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJl
IHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisgICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3Zl
cnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0g
VXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dCBmaW5hbDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcw
NmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2
Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYg
c2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBwbGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihz
YW1wbGUpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5v
dyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5
NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2NTYyZTMxMTA0NWM0MWFjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2ICs5ODcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBp
ZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
CiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBEb2VzIG5vdCBjdXJyZW50bHkgc3Vw
cG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9i
akM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIG1faW1h
Z2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlw
ZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWViYzNiMzFkNjMzODA2MGQ3ZTkyMzcwNTYuLjcwZjhm
YmE2ODhkZjM1ZWM4NmJhZWVhNDFlYzI3ZjRkOGIzNmUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgog
ICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmlu
ZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0
VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNl
bnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVy
cmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVy
cmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFT
YW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgp
LnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDRhMGZhYzYxZWIxZWY2MDMzZWQyOTc0MzVkYWE5MjZl
OWVkZWFjZDcuLmU2MWY1MDZlNGEwZmIyYmNhNDdkYWMyNjMzYTNkOWFhNzVhMmZiOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsx
NTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUu
Z2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3Jt
U2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1w
bGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAuY21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQo
KSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2IxMzlhOWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3
Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2OGJiNTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFt
cE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVy
OjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsg
UGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2Ft
cGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWVi
Li4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVk
aWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAg
IE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Ry
YWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVy
cmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQog
ICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpA
QCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBs
ZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRU
aW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8
TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9
Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
ICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1
Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViLi40YWM2OWFjZDlhMDBjZjZl
MTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZGVj
b2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgp
OyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9i
b3guZHVyYXRpb24oKTsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkg
b3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3Mo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92
ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgTWVkaWFT
YW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRpYVNhbXBsZTo6ZmxhZ3MoKSBjb25zdAogICAgIHJl
dHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQ
bGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJveFR5cGUsIHsgJm1fYm94IH0gfTsKICAgICByZXR1
cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRj
NzY0ZTY1NjZkNDQ2ZWZhZi4uMTc2OTQ0MGIwNDMwYzQ1ZDY4NmIwOGYwMDU4ZmNmOWRkZWQyZTUy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNzcsNiArMTc3LDcgQEAgc2V0KFdlYktpdF9NRVNT
QUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94
eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkK
ICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5CisgICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcAogCiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKQEAgLTI3NSw2
ICsyNzYsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24KICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVBy
b3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
CiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2
NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0OS4uYjliZjI1MjY1MGM1YjFhYTJh
Y2E1MDJjMGE2ZGIxYjk0M2EyNmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNl
QnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTE4OSw2ICsxOTAsNyBAQCAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5tZXNz
YWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVlYmY3NTQyZTVlMWZkNDBlNWRkNGQxLi40
MDBkZmRlMjBmODQ5OWM2NDFiODVjZGEzZDNkODNmMzYwMmU1N2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM4MSw2ICszODEsMTIg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0
dXJlTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2Fn
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVU
ZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVW
aWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFt
ZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNr
UHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzczNWY0YjQ3OGM0MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0
YS4uMzM4ZGI0ZGZjYzNmZmQ2N2NkZTE3Nzg1OWI3NWI5OTZiN2U2MGFhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtMTk5LDYgKzE5OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0g
XAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCiAJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciBcCiAJV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXIgXApAQCAtMjk1LDYgKzI5Niw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0g
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogCUdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclBy
b3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNlLi40YTMx
MmVlM2QzM2I2NzJhYmVjMzNkODczODA3ZDVjZDY5MmE1NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0x
NDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQ
cm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFV
RElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1hbmFnZXIo
KS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0FyYml0cmF0
b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSgqdGhp
cyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcy5pc0Vt
cHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJhbWV0ZXJz
Lm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAg
ICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCi0KKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAucmVzZXQo
KTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhl
aXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQogICAg
IC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVtLgogICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDggKzk0NywxNSBA
QCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1dGlvblN0
cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAm
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0Rp
cmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uMTFhY2Mw
MGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdkN2U5NzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiAr
MTA2LDExIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKwor
CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRo
cmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xp
ZW50CkBAIC0xNDEsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzQXVkaW9DYXB0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBdWRpb0NhcHR1cmU7IH0KICAgICBib29sIGFs
bG93c1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVmlkZW9DYXB0dXJlOyB9
CiAgICAgYm9vbCBhbGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dz
RGlzcGxheUNhcHR1cmU7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYgdmlkZW9G
cmFtZU9iamVjdEhlYXAoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMDUsNiArMzExLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzVmlk
ZW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBm
YWxzZSB9OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKICNlbmRpZgogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3By
ZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApp
bmRleCBlY2I0YjU3NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYyYzM0MmMzM2I2Li45ODAwNTc4YjUy
MDg0MzE3ZTg4NjUyZGZjNTJjNzZjYzFjMmZmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TENWLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02OCw2ICs3Miw5IEBAIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCks
IFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUo
KSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisjZW5kaWYK
ICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIo
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogewpAQCAt
MjIzLDYgKzIzMCwxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXNXaXRoUXVhbGlmaWVkSWRlbnRpZgogICAgIHBhaW50UGl4ZWxC
dWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFp
bnRpbmcoKSwgaW1hZ2VCdWZmZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OworICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZFZpZGVvRnJhbWUoV1RGTW92ZSh3cml0
ZSksIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSk7Cit9
CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZl
clRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhl
bEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRhcmdldCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFzc2Vy
dElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGVi
MjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLjEwYzA2MzYxODY3ZDVlODgz
ZWI5ZDZhODUzMjVjZDkxMGZiZGUzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC01NCw2
ICs1NCwxMCBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXIuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY1LDkgQEAgY2xhc3MgTWFjaFNl
bmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8g
R1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2Vz
IGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhp
Y3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4
LDYgKzExNSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQz
Ml90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyNlbmRp
ZgogICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsKIApAQCAtMTMwLDYg
KzE0MCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8UGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TD4gbV9jb250ZXh0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJlYW1UaHJlYWQpOwogICAgIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsK
ICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAgICAgU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKICAgICBOT19V
TklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CiAgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhhMDNj
ZWIzN2EwYzI5ODk4ZTMwMmIyLi45MDk3YjQyNzBiZjUzZGEyNGMwOTNhNTdlYTNjY2IxN2EyOTA3
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC00Miw2
ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50
ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hy
b25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3Vz
CiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQz
Ml90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50
MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1
Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZv
clRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVz
dGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkg
LT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNmY4OGZjMTY3N2NiOWYyZjQ3Mjg0NmU4M2YzZjI1NGUzYTk5MTVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvblRvV2ViUHJvY2VzcykpOworfQorCitSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1f
Y29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKK3sK
KyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkKK3sKKyAgICBBU1NFUlQoIW1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVU
aHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gc3RkOjpl
eGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG51bGxwdHIpKSB7CisgICAgICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8vIENsaWVudHMgbWlnaHQgaG9sZCBvbiB0byB0
aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhleSBzaG91bGQgYWxzbyBzdG9wIHRoZW1zZWx2
ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAgICAgLy8gYXZvaWQgYmlnIG1lbW9yeSBsZWFr
cyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50cyBzaG91bGQgZmFpbCBncmFjZWZ1
bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0byBsb29rIHVwCisgICAgICAgIC8v
IGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBw
ZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6YWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0
ZSwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZyYW1lKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgaWYg
KGZyYW1lKQorICAgICAgICByZXN1bHQgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRp
ZXMoKmZyYW1lKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQocmVzdWx0KSwgIHdyaXRlLmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICByZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUoZnJhbWUpLCBz
dGQ6Om51bGxvcHQpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxl
YXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sK
KyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICByZXRpcmVSZW1vdmUo
V1RGTW92ZSh3cml0ZSkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MTU5YzgwNDY2ZjVmMTNmOTNiYzQyNTcwOTVkOTFiNDgwZWExNjNiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVGhyZWFk
U2FmZU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBIb2xkcyByZWZlcmVuY2VzIHRvIGFs
bCBWaWRlb0ZyYW1lIGluc3RhbmNlcyB0aGF0IGFyZSBtYXBwZWQgZnJvbSBXZWIgcHJvY2VzcyB0
byBHUFUgcHJvY2VzcyB0d28gcHJvY2Vzc2VzLgorLy8gQXMgY3VycmVudGx5IHRoZXJlIGlzIG5v
IHNwZWNpYWwgc3RhdGUgZm9yIFJlbW90ZVZpZGVvRnJhbWUsIHRoZSBvYmplY3QgaGVhcCBzdG9y
ZXMgVmlkZW9GcmFtZSBpbnN0YW5jZXMgKE1lZGlhU2FtcGxlKS4KKy8vIEFzIGN1cnJlbnRseSB0
aGVyZSBpcyBubyBSZW1vdGVWaWRlb0ZyYW1lLCByZXNwb25zaWJsZSBmb3IgZGlzcGF0Y2hpbmcg
dGhlIFZpZGVvRnJhbWUgbWV0aG9kcyB0byB0aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUgdGhyZWFk
IGlzIHRoZSB0aHJlYWQgdGhhdCB1c2VzIHRoZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0aGlzIGlz
IHRoZSBtZWRpYSBwbGF5ZXIgdGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhNRTogY3Vy
cmVudGx5IFZpZGVvRnJhbWUgaW5zdGFuY2VzIGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5jZXMuCitj
bGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
T2JqZWN0SGVhcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CisK
KyAgICB2b2lkIGFkZFZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYs
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJik7CisKKyAgICB2b2lkIHN0b3BMaXN0ZW5p
bmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0
aW9uKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VWaWRl
b0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9f
VU5JUVVFX0FERFJFU1M7Cit9OworCisKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3OGNlM2QwMzlkYmUxNzMxZDVhZjZj
OGU0OTkxMGEzOTUyYTcxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAtMCww
ICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorbWVzc2FnZXMgLT4gUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRlZCB7CisgICAgUmVsZWFzZVZpZGVv
RnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcikK
K30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcAppbmRleCAyMTdkYjk3YTNjZTRjODMwMDQ4YWZhYzgyOGVmYmRiYmQ1
MThlN2EwLi5iNzJkNjZkMGVlNmE3YWMyMWMzYzgzNzg4MTMzNThmNjViMTE3MjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KQEAgLTM1LDE4ICsz
NywyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQgeyAz
MF9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRvIGxh
eWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVDb25uZWN0aW9uLCBpZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIEFT
U0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTMsNyArMTE5LDIzIEBA
IHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3Rl
U2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1w
bGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBzYW1wbGUpCit7CisgICAgYXV0byBt
ZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNhbXBs
ZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlKSB7CisgICAgICAgIEFT
U0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICgh
aXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKKyAgICAgICAgQVNTRVJUX0lT
X1RFU1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgYXZmTWVk
aWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7Cisg
ICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNh
bXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZm
TWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxl
KQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3RlU2Ft
cGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNzI1
YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkwZmU5ZWI2NjRiYTkz
MjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
CkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJh
bWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwpA
QCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAg
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmKTsK
QEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2Uo
KTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVl
U2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1ZVNh
bXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGVucXVldWVT
YW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFyRW5x
dWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQ
Qzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZhdGU6
CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAgICB2
b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAorICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
PiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5n
Q29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJl
YWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVf
QUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2Zjdl
Y2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIs
OCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291
bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29y
ZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQogICAg
IEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6
OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCiAg
ICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMzNGI1
ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50
aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplIHNp
emUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwg
aGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBh
dXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUobV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsK
ICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVyUmVm
ZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlm
aWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewogICAg
ICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIs
IGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgpIG11
dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2Vi
ZmE1MTZiNTAzMzZkMzY4N2Y3ZWNkZDE3ZThlN2ViZDFjZDlkNy4uYWJjZjI1OTIwMjVjODAwYTUy
MzA4MGRmMTZhNTlkOWRkYThmYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0zNDIsNiArMzQyLDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAgICAgJ1dlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyJywKQEAgLTg3Nyw2ICs4ODAsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0
eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBh
eW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5
bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZl
cmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAnV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdl
c3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdl
c3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyciSWRl
bnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENU
ZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBiYWJh
MGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBkYTU5
NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IFNl
bmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwogICAg
IHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRvbWlj
PHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpAQCAt
MTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rlc3RR
dWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRlc3Rp
bmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlvbiA9
IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZlck5h
bWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5nSVBD
VGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3Rv
cCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwogICAg
IH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZOZWVk
ZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBvbmdv
aW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCmlu
ZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2ZDQz
OTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5o
CkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19URVNU
SU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21p
Yz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIEFT
U0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3RlZCBj
b25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0ZXN0
aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rpb24g
dG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQgSVBD
IHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5kZXJu
ZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7CkBA
IC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxk
U3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wgaXNU
ZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI1N2Q4NDI1YmEwNDM2ZDQ3MzlhOThjNDVlOTIzYTNmMjkx
NzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21pYz4K
KyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUeXBl
IGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVuY2Vz
IHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
KCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlmaWVy
LCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQg
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAg
IHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0gbV9p
ZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KK3ByaXZhdGU6
CisgICAgVCBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVy
ZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoVCBpZGVu
dGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgVCBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3Qg
dmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIE9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIs
IG1fdmVyc2lvbiB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBt
X2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92ZXJzaW9uOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHZlcnNpb247CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAg
ICAgICAgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZSB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqdmVyc2lvbiB9OworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNp
b24geyAwIH07Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAgIE9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZShUIGlkZW50aWZpZXIsIHVpbnQ2NF90IHZlcnNpb24sIHVpbnQ2NF90IHBlbmRp
bmdSZWFkcykKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBt
X3ZlcnNpb24odmVyc2lvbikKKyAgICAgICAgLCBtX3BlbmRpbmdSZWFkcyhwZW5kaW5nUmVhZHMp
CisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
OyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5n
UmVhZHM7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSgpIGNv
bnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQorICAgIE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlKCkgY29uc3QgJiYgeyByZXR1cm4geyBtX2lkZW50
aWZpZXIsIG1fdmVyc2lvbiArIDEgfTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVu
Y29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAg
ICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyV3Jp
dGVSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxUPiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiB2ZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwZW5kaW5nUmVhZHM7
CisKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyCisgICAgICAgICAgICA+PiB2ZXJzaW9u
CisgICAgICAgICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RGTW92ZSgqaWRlbnRpZmllciksICp2
ZXJzaW9uLCAqcGVuZGluZ1JlYWRzIH07CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV9pZGVu
dGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3Bl
bmRpbmdSZWFkcyB7IDAgfTsKK307CisKKy8vIENsYXNzIHRvIGdlbmVyYXRlIHJlYWQgYW5kIHdy
aXRlIHJlZmVyZW5jZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVyLgordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NsYXNzIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik7CitwdWJsaWM6
CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNl
PFQ+OworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2U8VD47CisKKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcihU
IGlkZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgewor
ICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAgICBSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVhZHMrKzsKKyAgICAgICAgcmV0dXJuIHsgbV9p
ZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9CisgICAgLy8gTm90IHRocmVhZCBzYWZlLiBD
bGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQgcmVhZHMgYW55d2F5LgorICAgIFdyaXRl
UmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IG1faWRlbnRp
ZmllciwgbV92ZXJzaW9uKyssIG1fcGVuZGluZ1JlYWRzLmV4Y2hhbmdlKDApIH07CisgICAgfQor
ICAgIFQgaWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pZGVudGlm
aWVyOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVCBtX2lkZW50aWZpZXI7CisgICAgbXV0
YWJsZSBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9wZW5kaW5nUmVhZHMgeyAwIH07CisgICAgbXV0
YWJsZSB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2U8VD4gcmVmZXJlbmNlKQoreworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS5pZGVudGlmaWVy
KCkpOworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJzaW9uKCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCit7Cisg
ICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRp
ZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJu
IHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5j
ZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVy
ZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UudmVy
c2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8
ICJPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmll
cigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS5w
ZW5kaW5nUmVhZHMoKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit9CisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6
Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0czxUPjo6ZW1wdHlWYWx1ZUlzWmVy
bzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6
Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChyZWZlcmVuY2UpOworICAgIH0KKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2U8VD4mIGEsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgYikK
KyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFQ+Ojpz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTI5Yjdl
NDY2YzJjMmI0ZTk4ZmQ1YjUzNmU4Yzk4NjdiM2ZiODBlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAtMCwwICsxLDE5MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUg
Ik9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQ29udGFpbmVyIHRo
YXQgaG9sZHMgaWRlbnRpZmllciAtPiBvYmplY3QgbWFwcGluZyBiZXR3ZWVuIHR3byBwcm9jZXNz
ZXMuCisvLyBVc2VkIGluIHNjZW5hcmlvcyB3aGVyZSB0aGUgaG9sZGVyIHByb2Nlc3MgcHJvY2Vz
c2VzIG1lc3NhZ2VzIHdpdGggdGhlIG9iamVjdCByZWZlcmVuY2VzIGluIG11bHRpcGxlCisvLyB0
aHJlYWRzLiBgVGhyZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNrcyB0aGUgcmVhZCBhbmQgd3JpdGUg
cmVmZXJlbmNlcyB0byB0aGUgY29udGVudCBwb2ludGVkCisvLyBieSBhIHBhcnRpY3VsYXIgaWRl
bnRpZmllci4KKy8vIFBlbmRpbmcgcmVhZHMgbWF5IGJsb2NrIG5ldyB3cml0ZXMuIEFsdGVybmF0
aXZlbHkgbmV3IHdyaXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0aGUgcmVhZHMsCisvLyBmb3IgZXhh
bXBsZSBpbiBjb3B5LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8vIFBlbmRpbmcgd3JpdGVzIGJsb2Nr
IHJlYWRzLgorLy8gQ3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkgZm9yIHJlYWQtb25seSAoY3Jl
YXRlLXJlYWQtZGVzdHJveSkgb3IgY29weS1vbi13cml0ZSB0eXBlcywKKy8vIGUuZy4gbm8gdHdv
LXBoYXNlIGdldCgpIG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK2NsYXNzIFRocmVhZFNh
ZmVPYmplY3RIZWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZFNhZmVPYmpl
Y3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPj4geworcHVibGljOgorICAgIHVzaW5nIFJlYWRS
ZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVu
dGlmaWVyPjo6UmVhZFJlZmVyZW5jZTsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IHR5cGVu
YW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+OjpXcml0ZVJl
ZmVyZW5jZTsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVmZXJlbmNlOworCisgICAgLy8gV2FpdHMg
dW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUg
cmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVy
ZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5zZXJ0cyBhIG5ldyB2ZXJzaW9uIG9m
IHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFuZCB0aGVuIHJldGlyZXMgdGhlIHdy
aXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElmIHRpbWVvdXQgaXMgcGFzc2VkLCB3
YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgorICAgIC8vIEl0IGlzIGEgY2FsbGVy
IGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9sZCBvYmplY3QuCisgICAgdm9pZCBy
ZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBuZXdPYmpl
Y3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisKKyAgICB2b2lkIHJldGlyZVJlbW92
ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xlYXIoKTsKK3ByaXZhdGU6CisgICAg
TG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBtX29iamVjdHNDb25kaXRpb247Cisg
ICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAgdWludDY0X3QgcmV0aXJlZFJlYWRz
IHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaW5hbFJlYWQ7IC8vIFJl
bW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxIZWxk
VHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25lLgorCisgICAgICAgIFJlZmVyZW5j
ZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0ZShIZWxk
VHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJzdG9uZSBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0X3QgZmluYWxSZWFkKQorICAgICAg
ICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9
OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VTdGF0ZT4gbV9vYmplY3RzIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
ZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRUeXBlIFRocmVhZFNhZmVPYmplY3RI
ZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJlYWRSZWZlcmVuY2UmJiByZWFkLCBJ
UEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9j
ayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5maW5kKHJlYWQucmVm
ZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5vYmpl
Y3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1bHQgPSAqc3RhdGUub2JqZWN0Owor
ICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysrOworICAgICAgICAgICAgICAgIGlm
IChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRlLmZp
bmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBUcnVzdGVkIGFzc2VydCBiZWNhdXNl
IHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3NpZ25tZW50LgorICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRlLnJldGlyZWRSZWFkcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGlt
ZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUp
OworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVy
LCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmll
ciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgc3RkOjpvcHRpb25h
bDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0PiB0aW1lb3V0
KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdSZWFkcyA9IHRpbWVvdXQuaGFzX3Zh
bHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7Cisg
ICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0ZS5yZWZlcmVuY2UoKSk7CisgICAg
ICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRl
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCAmJiBzdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IGBmaW5hbFJlYWRgIGlz
IGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uIHdpdGggd3Jp
dGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRp
cmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdy
aXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4gZG9uZSB0aGFuIHRoZSBzZW5kZXIg
Y2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5H
X0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0byB0cnkgdG8gYWRkIGEgbmV3IHJl
ZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qgd2l0aG91dAorICAgICAgICAgICAg
Ly8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUgb2xkIHJlZmVyZW5jZS4KKyAgICAg
ICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICFzdGF0ZS5vYmplY3QgfHwgKnN0
YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJl
YWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0Rm9yUGVuZGluZ1JlYWRzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA8IHdyaXRlLnBlbmRpbmdSZWFk
cygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbFJlYWQgPSB3cml0ZS5wZW5kaW5n
UmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0g
d3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1v
dmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJldGlyZSgp
LCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5p
dGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBX
VEZNb3ZlKCpvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdT
dGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBs
YXk6IHRoZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBh
IHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElO
R19JUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
IXdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAg
ICAgICAvLyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3
cml0ZS5yZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9
KTsKKyAgICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFk
ZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmpl
Y3QpIH0pOworICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh0aW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRp
bWVvdXQtPmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1
ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBl
Pgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGly
ZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sKKyAgICByZXRpcmUoV1RGTW92ZShv
YmplY3QpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0
SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9vYmplY3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5jbGVhcigpOworfQorCit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCmluZGV4IDRkZTFkMGVkMmE3
YmU0OWUzY2JiYjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4ZjczMTM0Y2U2YTdhMjE0Y2RjOWRlMDVj
NDc1MzcyZTE3YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcApA
QCAtNjYsNyArNjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjp0cmFja0lE
KCkgY29uc3QKICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2tJRCk7CiB9CiAK
LVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpCitQ
bGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25z
dAogewogICAgIHJldHVybiB7CiAgICAgICAgIFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1w
bGVUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2
ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMzNmJmMDEzNzIxMDkwZGExOTM3OGZi
NWE0NTNjOGRhY2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVS
YW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJhbmdlOyB9CiAKICAgICBBdG9tU3Ry
aW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1N2VmM2Ix
NGVhZjJjMTA5MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li44ZDUyOWE5OThmMGM4M2FiMDZhZGI3
MmFkMWRjNjBkZmI4ZWZmMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTczNiw2ICs3MzcsNyBAQCBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5p
ZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKK1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODcyLDYgKzg3NCw4IEBAIFJlbW90ZURl
dmljZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2
ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQ
aXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1
NWQ1MTcwNWZjMzlkN2U2NzljOTRjNmEwYWYzLi5kZWM5ZDZhMzJiOGUyOWNiNjAxZjVkNmU1ODM5
YzYyODY1ZWVjYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTUwODIsNiArNTA4MiwxMyBAQAogCQk3QjQ4M0YxRTI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElQ
Q1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMDI3QTdEQzFB
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5NyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE4MjdBN0RD
QkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAv
KiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEwNyw2ICs1MTE0LDcg
QEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzM0YyNzU2
NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUgLyogQXV4aWxp
YXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXhp
bGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjc1OCw2ICs2NzY2LDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYyRkQ4IC8qIFJl
bW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVENDY0QkYwMDg2
MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJ
Q0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZGOTcgLyog
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZG
OTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEyN0E3REMxQTAw
NkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkxREQy
QTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8s
CiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4NDgsNiArNjg2MCw4IEBACiAJCQkJMURE
MkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2Vz
LmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQ
cm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90ZVRleHRU
cmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JDMDA2QzZGOTcg
LyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4NDIzQ0MyQzA5
MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU4NTIz
Q0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDdFMTlG
MDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
LmggKi8sCkBAIC03MTM3LDYgKzcxNTEsOCBAQAogCQkxQUFEREY0QjEwRDgyQUYwMDBEM0Q2M0Qg
LyogU2hhcmVkICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk3QjVBM0RDNTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXIuaCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9i
amVjdEhlYXAuaCAqLywKIAkJCQlCQ0REQjMxNDEyNEVCQ0VGMDA0OEQxM0MgLyogQVBJICovLAog
CQkJCTFBQjFGNzc2MUQxQjMwQTkwMDdDOUJEMSAvKiBBcHBsZVBheSAqLywKIAkJCQk1MThFOEVG
MTE2QjIwOEYwMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb24gKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGU0
OTQ1NDQ4NWVkN2MwZDk1MDUxNzM5ZDE4YWEwMTliMDFmMTI2ZGMuLmFlZDFlNzAxNGI4NGFmNjA1
NWRlOGQxNjlkNTcxNWJiZTJmYWM3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlTWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwCmluZGV4IDljYWRmYzAyZjRhYjZjOGJjMTYzNTg5MjI1NzNmOTk3ZmZjNDg4OWUuLjU3YmRh
MTYzMjBhYjRjZTRlOGNlMjNlMDFjYzU5MDlmNjk1NzEyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC0xMTgsNiArMTIyLDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0
ZSgqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0
KSB7CisgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXIm
IG1lZGlhUGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oCmluZGV4IDRhYzE4MDhlNjU0ZjU3OWI1MTM3ZDRiMTk2MmNkNGY5NGFiODExYzQuLjM2NDE1
ZDlhMzNkM2ExZWNlMDI3MWRjMDc5MzI4MTIxNzJiZWQ5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lk
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZp
bmFsOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2Vu
ZGlmCiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAg
ICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1l
ZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJh
YjcyMjgwOGMuLjBiOGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
Lm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1w
bGVBVkZPYmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENW
KiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kKQogICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzEx
MCw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk7CiB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpN
ZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3Rl
IE1lZGlhU2FtcGxlLgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9
IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBp
ZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhl
bEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBz
aWRlRG93biwgdHJ1ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjUwMjYxNWRh
MjcyYjNiZjQ2Y2Y0NjQ5NjFiN2Y4ZWIyYTFmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllclR5cGUgeyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNl
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0
ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBS
ZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWU2
OTc1M2MzYTNjZDFhMDU3Mjc5MGE2YzU0OTAyNWEwNzFkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHAKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0
aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGdw
dVByb2Nlc3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojpwcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNh
bXBsZSkKK3sKKyAgICByZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVk
aWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBt
X3JlZmVyZW5jZVRyYWNrZXIoaWRlbnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0
aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwg
KnRoaXMpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eSgpCisgICAgOiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKG51bGxwdHIpCisgICAgLCBtX3JlZmVy
ZW5jZVRyYWNrZXIoUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7Cit9
CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7Cisg
ICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRp
YVRpbWUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sK
KyAgICAodm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcHJlc2Vu
dGF0aW9uVGltZTsKK30KKworV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6
UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIHsgfSB9OworfQorCitN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90
YXRpb24oKSBjb25zdAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAg
ICByZXR1cm4gbV92aWRlb1JvdGF0aW9uOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFs
aXplZCgpOworICAgIHJldHVybiBtX3ZpZGVvSXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1w
bGVWaWRlb0ZyYW1lPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdAor
eworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0
byBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVj
dGlvbiwgbnVsbHB0cikpIHsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNs
aWVudCgqdGhpcyk7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2
ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKHdyaXRlKCkpLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgfQorfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldh
c0luaXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0
aWFsaXplZD4oaWRlbnRpZmllcigpLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5l
ZWRlZCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0
aW9uJikKK3sKKyAgICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZSht
X2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlv
bi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3Rk
OjpvcHRpb25hbDxQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCit7CisgICAgbV93YXNJbml0aWFs
aXplZCA9IHRydWU7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gRklYTUU6IFdoZW4gc291cmNlIGZhaWxzIHRvIHByb2R1Y2UgYSBzYW1wbGUgZHVlIHRvIHNv
bWUgZXJyb3IsIHRoZSBwcm9wZXJ0aWVzIGFyZSBkaXNlbmdhZ2VkLgorICAgIC8vIFdlIHNob3Vs
ZCBwZXJoYXBzIGNoZWNrIHRoaXMgYXQgdGhlIHN1Ym1pdCB0aW1lLgorICAgIG1fcHJlc2VudGF0
aW9uVGltZSA9IHByb3BlcnRpZXMtPnByZXNlbnRhdGlvblRpbWU7CisgICAgbV92aWRlb0lzTWly
cm9yZWQgPSBwcm9wZXJ0aWVzLT52aWRlb0lzTWlycm9yZWQ7CisgICAgbV92aWRlb1JvdGF0aW9u
ID0gcHJvcGVydGllcy0+dmlkZW9Sb3RhdGlvbjsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNjI4YTdiYzU3MGM3YWQ1NzgwOGIwN2ZhYjY5YTFkNzE0MmI1
YjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZS5oPgorCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90
ZVZpZGVvRnJhbWVQcm94eSk7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIHByb21pc2Ugb2Yg
YSBNZWRpYVNhbXBsZSB0aGF0IGV4aXN0cyBpbiBHUFUgcHJvY2Vzcy4gVGhlIG9iamVjdCBjYW4g
YmUgdXNlZCBhcyBvdXQgcGFyYW1ldGVyIG9mIHRoZSBjcmVhdGlvbiBtZXNzYWdlLgorICAgIHN0
YXRpYyBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKTsKKworICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsK
KyAgICAgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9u
ZSB9OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisg
ICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAgUmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90ZVZpZGVv
RnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVS
ZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUg
b3ZlcnJpZGVzLgorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7
CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAv
LyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBu
b3QgYmUgbmVlZGVkLgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZp
bmFsOworCitwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0Zy
YW1lUHJveHkoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25z
dDsKKyAgICBib29sIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5VU0VEX1JF
VFVSTjsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCisgICAg
dm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikg
ZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0ZDo6
b3B0aW9uYWw8UHJvcGVydGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRlZmF1
bHRTZW5kVGltZW91dCA9IDMwX3M7CisKKyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9u
KiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZVZpZGVvRnJh
bWVSZWZlcmVuY2VUcmFja2VyIG1fcmVmZXJlbmNlVHJhY2tlcjsKKyAgICBtdXRhYmxlIGJvb2wg
bV93YXNJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9u
VGltZTsKKyAgICBib29sIG1fdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICBWaWRlb1Jv
dGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPDwgdmlkZW9Jc01pcnJvcmVkCisgICAgICAgIDw8
IHZpZGVvUm90YXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gdmlkZW9Jc01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlvbj4g
dmlkZW9Sb3RhdGlvbjsKKyAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAg
Pj4gdmlkZW9Jc01pcnJvcmVkCisgICAgICAgID4+IHZpZGVvUm90YXRpb247CisgICAgaWYgKCFk
ZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJv
cmVkLCAqdmlkZW9Sb3RhdGlvbiB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlh
U2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1w
bGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3Jl
OjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3YzU5NzQw
MjE1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50ZWQgewor
ICAgIFdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKaW5kZXggMjE5YTU1ZGYxYzI5ZmQxYzZmOTMzNjExYTI5MjViNWMz
YzA2ZTE3MC4uMTRmNGI1MmE3ZTVhYTlmOGM0NDE1YzE5Mjc2ZDU2YjAxYzM5YWRmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
IgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTQ5LDEyICs1MCwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNyZWF0ZShTYW1wbAogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBXZWJD
b3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYgY2xpZW50KQogICAgIDogV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkpCiAgICAgLCBtX21hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fY29ubmVjdGlvbihX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKSkKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkpCiAgICAgLCBtX2lkZW50aWZpZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKIHsKICAgICBtYW5hZ2VyLmFkZExheWVyKCp0aGlzKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFk
ZENsaWVudCgqdGhpcyk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0
aGlzKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9v
bCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpCiAKIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1v
dmVDbGllbnQoKnRoaXMpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpSZWxlYXNlTGF5ZXIgeyBtX2lkZW50aWZpZXIgfSwgMCk7
CiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVMYXllcigqdGhp
cyk7CkBAIC0xNDAsNiArMTQyLDEzIEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQog
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgewor
ICAgICAgICBhdXRvJiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+KHNhbXBsZSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLnJl
YWQoKSB9LCBtX2lkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0
byByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3Rl
VmlkZW9TYW1wbGU6OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKCFyZW1v
dGVTYW1wbGUtPnN1cmZhY2UoKSkgewpAQCAtMTQ4LDcgKzE1Nyw3IEBAIHZvaWQgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3Rl
U2FtcGxlIH0sIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGVDViB7ICpyZW1v
dGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKQEAgLTE3MCwxMSArMTc5LDE4IEBAIHZvaWQg
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXREaWRGYWlsKGJvb2wgdmFsdWUpCiAKIHZvaWQg
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJikKIHsKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rp
b25JZk5lZWRlZCgpOwogICAgIG1fZGlkRmFpbCA9IHRydWU7CiAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkRmFpbCgp
OwogfQogCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nl
c3NDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIGlmIChhdXRvKiBncHVQcm9jZXNzQ29ubmVj
dGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpCisg
ICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1NjM2OWFkZGYwYWJm
MzQ2YjBkMjFjODUwNmQ2OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4NjI3OTQ0MzIxMTEzZTY5ZDI2
YjEyYjI1NWJmYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNTIsNiArNTIs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OkNsaWVudCYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0
aW9uSWZOZWVkZWQoKTsKIAogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cgogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtNzYsNiArNzcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsKICAgICBib29sIGNvcHlT
aGFyZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDdmOTM4ZjRkNmE0ZWVlMzZjYTYwZTNjOTJkOWQ4ZmZmMDgwYjY1ZGUuLjc0YjM1NTIw
YTFjMTk0NTU4OGYyMDkxN2JjOGQ1NmVmNzc4N2M1ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNCAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZy
YW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2w6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBs
ZU1hcC5jcHA6CisKIDIwMjItMDItMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjg4ODc4KSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMuY29udHJvbGxlcnMubGF5b3V0X3Rlc3RfZmluZGVyX2xlZ2FjeV91bml0dGVzdC5MYXlv
dXRUZXN0RmluZGVyVGVzdHMgdGVzdHMgYXJlIGZhaWxpbmcgd2l0aCBXaW5kb3dzIFB5dGhvbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDMwZjdmZDgyYjMzMWEwNmY0YzRlMGNiNGUz
Yjg5Zjc1ZmZlNmIxODEuLjMzMjU3M2M5ZGIyYTJmMDYwMTVkYjljZGU1YmUyMjljYTM0OTUwNjgg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTk0LDcgKzk0LDEwIEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2Vu
ZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5
CiAjZW5kaWYKLSNpZiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dD
KQorICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXI+IGNvbnRlbnRCdWZmZXIpIFN5bmNocm9ub3VzCisj
ZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCiAg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAg
ICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKQEAgLTEwNCw2
ICsxMDcsOSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5j
aHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25v
dXMKICAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wg
c3VjY2VzcykgU3luY2hyb25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQg
UGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lV3JpdGVSZWZlcmVuY2UgcmVzdWx0KQorI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50
Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JU
ZXN0aW5nIGV2ZW50KQoge30KIH19CkBAIC0yMzIsNyArMjM4LDcgQEAgZGVmIGNyZWF0ZV9jcHBf
dHlwZV9jb250YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9jb250
YWluZXJdOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQog
ICAgICMgQWxsIHRlbXBsYXRlcyBhcmUgY29udGFpbmVycyBleGNlcHQgdGhlc2UgYmVsb3cuCi0g
ICAgaWYgY29udGFpbmVyX25hbWUgaW4gWydSZWZQdHInLCAnUmVmJ106CisgICAgaWYgY29udGFp
bmVyX25hbWUgaW4gWydSZWZQdHInLCAnUmVmJywgJ1JldGFpblB0cicsICdzdGQ6Om9wdGlvbmFs
J106CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgdGVtcGxhdGVzID0gbVsyXQogICAgIGFyaXR5
ID0gTm9uZQpAQCAtNjQwLDcgKzY0NiwxMyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9p
bXBsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lw
Y190eXBlc1tvLnR5cGVdCiAgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0
X2lwY190eXBlLCBjcHBfdHlwZV9jb250YWluZXIpKQogICAgICAgICAgICAgICAgIHYgPSBjcHBf
YXJnKHdlYmtpdF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKLSAgICAgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQor
ICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5u
YW1lKX07Il0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBMaWtlbHkgdGhpcyBjcmVhdGVzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHNwYW48aW50LCAy
PiBhUmVwbHkgPSB7IHsgfSB9Oy4KKyAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODg5CisgICAgICAgICAgICAgICAgICAgIHNl
bGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9IHt7IHt7
IH19IH19OyJdCisKICAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIo
di50eXBlLCB2Lm5hbWUpXQogICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3Nw
YW4oKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0
X2NwcF90eXBlKCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmluZGV4IGQxNDZjZWM0ZjJl
YzRjZjY5MTJkN2YwNDhkMjg4MTU3YWRmZGMxYjguLmM0NWM2N2EzMTY2YmZmYjk4NzdiYzBkODM0
ZmVmODQ0YTQ4NjY1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TYW1wbGVNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TYW1wbGVNYXAuY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUg
ZGVjb2RlVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2RlVGltZTsgfQogICAgIE1l
ZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAg
ICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrSUQ7IH0K
LSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lEKSBmaW5hbCB7IG1fdHJh
Y2tJRCA9IHRyYWNrSUQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9m
ZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgZmluYWwgeyBtX3ByZXNl
bnRhdGlvblRpbWUgKz0gb2Zmc2V0OyBtX2RlY29kZVRpbWUgKz0gb2Zmc2V0OyB9CkBAIC03MSw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShtX3ByZXNlbnRhdGlvblRp
bWUsIG1fZGVjb2RlVGltZSwgbV9kdXJhdGlvbiwgc3RhdGljX2Nhc3Q8U2FtcGxlRmxhZ3M+KG1f
ZmxhZ3MgfCBJc05vbkRpc3BsYXlpbmcpKTsKICAgICB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3Mo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7bnVs
bHB0cn19OyB9CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7IG51bGxwdHIgfSB9OyB9CiAgICAg
c3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmlu
YWwgeyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNl
Mi9taXNjL3dlYmdsMi1hZnRlci13ZWJnbDEtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9w
ZW5kaW5nL2NvbmZvcm1hbmNlMi9taXNjL3dlYmdsMi1hZnRlci13ZWJnbDEtYnVnLmh0bWwKaW5k
ZXggYWJkNmRjNmRkNDk5NWNlZWJmZmZhOTdlOTU0MDNkMTRmMTdmMjdjZi4uMzI2YzNjNTA2OGYz
MGJkNzMwYzk5NTE3MzY5MGE4ZmQ2YTM0NWNkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcGVuZGluZy9jb25mb3JtYW5jZTIvbWlzYy93ZWJnbDItYWZ0ZXItd2ViZ2wxLWJ1Zy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UyL21pc2Mvd2ViZ2wy
LWFmdGVyLXdlYmdsMS1idWcuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KIDx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIHdlYmdsMi1h
ZnRlci13ZWJnbDEtYnVnLmh0bWw8L3RpdGxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy93ZWJr
aXQtd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViICAgLXRlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCBydW5zIHRo
ZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBv
ciBGQUlMLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451103</attachid>
            <date>2022-02-07 08:14:39 -0800</date>
            <delta_ts>2022-02-07 08:20:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220207181436.patch</filename>
            <type>text/plain</type>
            <size>128416</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3Yjc2MjRhZWVjMmFh
MDUxYTM4YWJmYTYyYjM2Y2I0ZDhkYTY1Zi4uMGFlZTg4ZjBjNGNmOWE4MzE1NjUyY2NjZTdhZTQw
MDA1NmNjMTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTA2
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IG5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwZGY4ZjQ0NDIwMTMyYzg5ZmFk
NWJhNjRjZjdlNDg4NDBiZWM2MTYuLjliYmJiYjhjZGEwNTc4ODE5NzMyNGUwN2ZlNDczNzRjZmZi
NzM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg0IEBACisyMDIyLTAyLTA3ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3Rl
TWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQg
aW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3M6CisgICAgICAg
IEFkZCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSwgV2ViQ29udGVudCBwcm9jZXNzIHNp
ZGUgcHJveHkgb2JqZWN0IHRoYXQKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIGNhbiB1c2UuCisKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQgc2hvd3MgaW4gY29tcG9z
aXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LgorCisgICAgICAgIEF0IHRoZSBtb21lbnQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbm5vdCBwYWludCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkgdG8gdGhlCisgICAgICAgIGRvY3VtZW50IENTUyBwYWludGVkIGNvbnRlbnQs
IENvbnRleHQyRCBvciBXZWJHTCBjYW52YXMuCisKKyAgICAgICAgR1BVUDoKKyAgICAgICAgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBtYXBwaW5nCisgICAgICAgIFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxlLiBDdXJyZW50bHkgYWxsIG9iamVjdHMKKyAg
ICAgICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBsZUFWRk9iakMuCisKKyAgICAgICAgQWRkIGFu
IGV4YW1wbGUgaW1wbGVtZW50YXRpb24gd2hlcmUgYSByZW1vdGUgTWVkaWFTYW1wbGUgaXMgcmV0
dXJuZWQgYnkgSVBDOgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKS4KKworICAgICAgICBUaGUgR1BVUCBvYmplY3Qg
cG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpczoKKyAgICAgICAgLSBjcmVh
dGVkIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHRocmVhZAorICAgICAgICAt
IGNvbnN1bWVkIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZSBpbiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIHRocmVhZAorICAgICAg
ICAtIHJlbGVhc2VkIGluIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9G
cmFtZSBpbiBHUFVQIG1haW4gdGhyZWFkCisgICAgICAgIEFsbCBvZiB0aGVzZSBtZXNzYWdlcyBh
cmUgYXN5bmNocm9ub3VzIGFuZCBjYW4gYXJyaXZlIHRvIHRoZWlyIGRlc3RpbmF0aW9uIGluIGFu
eSBvcmRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHJlcXVlc3QgdG8gcmVsZWFzZSB0aGUgdmlk
ZW8gZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUgdGhlIG1lc3NhZ2UgdG8gY3JlYXRlIHRoZSB2aWRl
byBmcmFtZSBoYXMgYmVlbgorICAgICAgICByZWNlaXZlZC4KKworICAgICAgICBUbyBzb2x2ZSB0
aGUgb3JkZXJpbmcgaXNzdWUsIGludHJvZHVjZSByZWFkZXJzLXdyaXRlcnMgcmVmZXJlbmNlIGNv
dW50aW5nIG1ldGhvZCB2aWEgZm9sbG93aW5nIGNsYXNzZXM6CisgICAgICAgICAtIE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJXcml0ZVJl
ZmVyZW5jZQorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcgorCisg
ICAgICAgIE9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcyB0aGUgb2JqZWN0LgorICAgICAgICBP
YmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcyBhIG5ldyB2ZXJzaW9uIG9m
IHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVkb2Nv
ZGUgZXhhbXBsZXM6CisgICAgICAgICAgV3JpdGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwg
cGVuZGluZ1JlYWRzID0gMCwgdmVyc2lvbiA9IDAgfSBtZWFuczoKKyAgICAgICAgICAgICJFbmQg
dGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMC4gQ3JlYXRlIHZlcnNpb24g
PSAxIgorICAgICAgICAgICAgVGhpcyBpcyBob3cgaW5pdGlhbCBvYmplY3QgaXMgYXNzaWduZWQg
dG8gdGhlIHJlZmVyZW5jZS4KKyAgICAgICAgICBXcml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIg
PSAxLCBwZW5kaW5nUmVhZHMgPSA3NywgdmVyc2lvbiA9IDMzIH0gbWVhbnMKKyAgICAgICAgICAg
ICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMzIgd2hlbiBhbGwg
NzcgcmVhZHMgaGF2ZSBjb21wbGV0ZWQuIENyZWF0ZSB2ZXJzaW9uID0gMzMiCisKKyAgICAgICAg
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgZGVjbGFyZXMgYSByZWFkIGRlcGVuZGVuY3kg
dG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50
aWZpZXIuCisgICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAgICAgICAgIFJlYWRSZWZl
cmVuY2UgeyBpZGVudGlmaWVyID0gMSwgdmVyc2lvbiA9IDMzIH0gbWVhbnMKKyAgICAgICAgICAg
IkNvbXBsZXRlIG9uZSByZWFkIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lvbiAzMyIuCisKKyAgICAg
ICAgQ3JlYXRlcywgdXBkYXRlcyBhbmQgZGVzdHJ1Y3Rpb25zIGFyZSBXcml0ZVJlZmVyZW5jZXMu
CisgICAgICAgIFJlYWRzIGFyZSBSZWFkUmVmZXJlbmNlcy4KKworICAgICAgICBUaGUgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIgY3JlYXRlcyB3cml0ZSBhbmQgcmVhZCByZWZlcmVu
Y2VzIGluIHRoZSBQcm94eSAtdXNpbmcgcHJvY2VzcyAoV2ViQ29udGVudCBwcm9jZXNzKS4KKwor
ICAgICAgICBUaGUgYWRkZWQgVGhyZWFkU2FmZU9iamVjdEhlYXAgcmVzb2x2ZXMgdGhlIHJlYWQg
YW5kIHdyaXRlIHJlZmVyZW5jZXMgaW4gdGhlIHJlYWwgb2JqZWN0IHByb2Nlc3MgKEdQVVAgaW4g
dGhpcyBjYXNlKS4KKyAgICAgICAgUmVhZHMgYW5kIHdyaXRlcyBhcmUgYmxvY2tpbmcgdGhlIHJl
cXVlc3RpbmcgdGhyZWFkIGFwcHJvcHJpYXRlbHk6CisgICAgICAgICAtIFJlYWQgb2YgdW5rbm93
biB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUgd3JpdGUgY3JlYXRl
cyB0aGUgdmVyc2lvbgorICAgICAgICAgLSBXcml0ZSBvZiBuZXcgdmVyc2lvbiBvZiB0aGUgaWRl
bnRpZmllciBibG9ja3MgdW50aWwgdGhlIHJlYWRzIGhhdmUgcmV0aXJlZCwgb3IgY3JlYXRlcyBw
YXJhbGxlbCwgbmV3IHZlcnNpb24KKyAgICAgICAgICAgb2YgdGhlIGNvbnRlbnQgaW4gY2FzZSBv
ZiBjb3B5LW9uLXdyaXRlIHNjaGVtZXMuCisKKyAgICAgICAgSW4gdGhpcyBjb21taXQgb2JqZWN0
cyBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGFyZSBpbW11dGFibGUgdW50
aWwgZGVzdHJveWVkLCBzbyB0aGVyZSBpcyBubyB1cGRhdGUgb3IKKyAgICAgICAgY29weS1vbi13
cml0ZSBzY2hlbWUgaGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRl
b0ZyYW1lT2JqZWN0SGVhcCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmFkZFZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4uCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNh
bXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZUNWKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNy
ZWF0ZUxheWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOgorICAgICAg
ICAoV2ViS2l0Ojppc1Rlc3RpbmdJUEMpOgorICAgICAgICAqIFNoYXJlZC9PYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2U6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6dmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJl
bmNlOjpyZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjppZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlPFQ+Pjo6aGFzaCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYktp
dDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46OmVxdWFsKToKKyAgICAgICAgKiBTaGFy
ZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZFNhZmVPYmplY3RIZWFwOjpSZWZlcmVuY2VTdGF0ZTo6UmVmZXJlbmNlU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBl
Pjo6cmV0aXJlUmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpjbGVhcik6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNh
bXBsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBs
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9S
b3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxp
emVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAg
ICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDYg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjg2OTM2KTogQ3Jhc2ggaW4gV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODIxNjVm
ZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRlZi4uMjkwMjIxMmJmOTBjNDQzMTAzODQ3
NWIyOTI2ZjczMWY3ZDY5MjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQ0LDYgKzEzNDQs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0v
VXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgK
ICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1l
LmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVv
U2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggODE0YWE0ZmRiOGJkNGVmMWVjNmFmYzA1YjBlODQwY2Y4ZmRlZTMwMy4uZmRj
NDZiOTI2ODE0Y2Y1YmFkMjkwNjQ4YjI2MDIxMjRkNjljOGMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE5MjcsNiArMTkyNyw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9y
bS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rp
dml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3Jt
L1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRiMTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVk
Li5jYWZkOTExMTc3ZmFkOWExYTYwZmI0NTE0MWU5ZTQ4OGE1OGE0NDAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA0LDYg
KzI0MDQsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0
R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Ix
MDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFF
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyog
R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2Ft
cGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEz
REFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlk
ZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTExLDYgKzExNTEyLDggQEAKIAkJN0IxNjE5
MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4
QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBW
aWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVv
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3
MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRD
ODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIw
QTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxMzYs
NiArMzAxMzksOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQu
aCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0
aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmgg
Ki8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5o
ICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRh
LmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVh
ZENvcGllci5jcHAgKi8sCkBAIC0zNzgwNiw2ICszNzgxMSw3IEBACiAJCQkJMEYxQTBDMzgyMjlB
NDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3
MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRl
b0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENC
OEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXgg
MTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcxNjU3OWZmOGU3
ZmMzNDBkODdjYzg5MmYxYmJiNGIwZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgICAg
ICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCiAgICAg
ICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5
cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFT
YW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBsZUJveCog
bW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJv
eDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAgICAgIEdz
dFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRlU291cmNl
UmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXpl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3Qg
TWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5
bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
PSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9
IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEyZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDExMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRl
b0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30K
KworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5nIFZpZGVvRnJh
bWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYkNvcmU6
OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFZpZGVvRnJh
bWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnBhaXI8UmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4g
VmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9Owor
fQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgpOworfQorCitNZWRpYVNhbXBsZTo6U2Ft
cGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNh
bXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6
OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFBy
aW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFiOTk4MzdiODQ3
NzE0MWUwNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJh
bWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgorLy8gRklYTUU6
IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlh
U2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2Ft
cGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09S
RV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBh
cmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisgICAgLy8gV2Vi
Q29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGlt
ZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1l
IGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRvbVN0cmluZyB0
cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+
LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRp
b25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWlu
Z0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9M
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRi
MGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0z
MzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1
ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBwbGF5YmFjayBv
ZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGlmICghaXM8
TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBs
ZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25v
dG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxh
dGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRm
OTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2NTYyZTMxMTA0
NWM0MWFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2ICs5ODcsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKCkKICAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBE
b2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuCisgICAgaWYg
KCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXIpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFr
ZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5
OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWViYzNiMzFkNjMz
ODA2MGQ3ZTkyMzcwNTYuLjcwZjhmYmE2ODhkZjM1ZWM4NmJhZWVhNDFlYzI3ZjRkOGIzNmUxNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01NCwx
MyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7
IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRl
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShj
b25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJvdGVjdGVkOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDRhMGZhYzYxZWIx
ZWY2MDMzZWQyOTc0MzVkYWE5MjZlOWVkZWFjZDcuLmU2MWY1MDZlNGEwZmIyYmNhNDdkYWMyNjMz
YTNkOWFhNzVhMmZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpz
aXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRUb3Rh
bFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxl
QVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNh
bXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAuY21TYW1wbGVC
dWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2IxMzlhOWE2MjM4
ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2OGJiNTYzNWJk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjM1LDcgKzIz
NSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRmb3JtU2FtcGxl
IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBN
ZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRm
b3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGUs
IHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRl
ZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5
MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTMsNyArNTMs
NiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3Qg
U3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7IH0KICAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpw
YWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25z
dCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBudWxscHRyLCBu
dWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4g
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJk
NjViLi40YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Ym94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQogICAgIEF0b21TdHJpbmcgdHJh
Y2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAg
ICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5
dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRT
aXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKQEAg
LTg3LDcgKzg2LDcgQEAgTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRpYVNhbXBsZTo6
ZmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9CiAKLVBsYXRm
b3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1w
bGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZv
cm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJveFR5cGUsIHsg
Jm1fYm94IH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2
ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZi4uMTc2OTQ0MGIwNDMwYzQ1ZDY4
NmIwOGYwMDU4ZmNmOWRkZWQyZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNzcsNiArMTc3
LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cAogCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKICAgICBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIKQEAgLTI3NSw2ICsyNzYsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJ
TEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UKICAgICBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24KICAgICBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
UmVtb3RlQ29tbWFuZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0
OS4uYjliZjI1MjY1MGM1YjFhYTJhY2E1MDJjMGE2ZGIxYjk0M2EyNmE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9U
cmFja1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAg
LTE4OSw2ICsxOTAsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVlYmY3
NTQyZTVlMWZkNDBlNWRkNGQxLi40MDBkZmRlMjBmODQ5OWM2NDFiODVjZGEzZDNkODNmMzYwMmU1
N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTM4MSw2ICszODEsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1Jl
bW90ZVRleHR1cmVWaWV3TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzczNWY0YjQ3OGM0
MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0YS4uMzM4ZGI0ZGZjYzNmZmQ2N2NkZTE3Nzg1OWI3NWI5OTZi
N2U2MGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk5LDYgKzE5OSw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXApAQCAtMjk1LDYgKzI5Niw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjVi
YzEwNGI3NTQxMDRiNjNlLi40YTMxMmVlM2QzM2I2NzJhYmVjMzNkODczODA3ZDVjZDY5MmE1NTZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiAr
MjU4LDkgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJ
VFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNz
LmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xp
ZW50KG1fcm91dGluZ0FyYml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OmNyZWF0ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5v
dmVycmlkZUxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJl
ZExhbmd1YWdlcyhwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQs
OSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7
CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9G
cmFtZU9iamVjdEhlYXAucmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBu
ZWVkIHRvIG1ha2Ugc3VyZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkg
ZGVzdHJveWluZyB0aGVtLgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigp
OwpAQCAtOTQxLDggKzk0NywxNSBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENhcHR1cmVBdHRyaWJ1dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhl
YXAuZ2V0KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisKICNpZiBQ
TEFURk9STShNQUMpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BsYXlDb25m
aWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFy
eUZsYWdzIGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMy
NWRkZDRjMzQyYjE0OS4uMTFhY2MwMGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdkN2U5NzU5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA7CisjZW5kaWYKKworCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAg
ICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpO
b3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CkBAIC0xNDEsNiArMTQ2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgYWxsb3dzQXVkaW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBdWRpb0Nh
cHR1cmU7IH0KICAgICBib29sIGFsbG93c1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzVmlkZW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzRGlzcGxheUNhcHR1cmU7IH0KKyAgICBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCYgdmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMDUsNiArMzEx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fYWxsb3dzVmlkZW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
b3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcDsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYy
YzM0MmMzM2I2Li45ODAwNTc4YjUyMDg0MzE3ZTg4NjUyZGZjNTJjNzZjYzFjMmZmNDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRHTENWLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02OCw2
ICs3Miw5IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rp
b24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tl
bmQocmVuZGVyaW5nQmFja2VuZCkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVP
YmplY3RIZWFwKCkpCisjZW5kaWYKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdChT
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkKICAgICAsIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNz
SWRlbnRpZmllcigpKQogewpAQCAtMjIzLDYgKzIzMCwxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXNXaXRoUXVhbGlmaWVkSWRl
bnRpZgogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZENv
bXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1hZ2VCdWZmZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1
cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZFZp
ZGVvRnJhbWUoV1RGTW92ZSh3cml0ZSksIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJi
MTcuLjEwYzA2MzYxODY3ZDVlODgzZWI5ZDZhODUzMjVjZDkxMGZiZGUzMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZl
cklkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYg
KzY1LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBh
bmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2Vp
dmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lk
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVXcml0
ZVJlZmVyZW5jZSYmKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50
Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JU
ZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8UGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9z
dHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9y
ZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAg
ICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJl
YW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBj
OGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi45MDk3YjQyNzBiZjUzZGEy
NGMwOTNhNTdlYTNjY2IxN2EyOTA3ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZm
ZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwg
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNlbmRpZgogICAg
IHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmY4OGZjMTY3N2NiOWYyZjQ3Mjg0
NmU4M2YzZjI1NGUzYTk5MTVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkK
K3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2Vy
dElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8vIENsaWVu
dHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhleSBzaG91
bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAgICAgLy8g
YXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50
cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0
byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
Ly8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQordm9pZCBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZy
YW1lKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzPiByZXN1bHQ7CisgICAgaWYgKGZyYW1lKQorICAgICAgICByZXN1bHQgPSBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoKmZyYW1lKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQocmVzdWx0KSwg
IHdyaXRlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICByZXRpcmUoV1RGTW92ZSh3cml0
ZSksIFdURk1vdmUoZnJhbWUpLCBzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFk
KTsKKyAgICByZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0ZSkpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTU5YzgwNDY2ZjVmMTNmOTNiYzQyNTcw
OTVkOTFiNDgwZWExNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2FtcGxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBI
b2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1lIGluc3RhbmNlcyB0aGF0IGFyZSBtYXBw
ZWQgZnJvbSBXZWIgcHJvY2VzcyB0byBHUFUgcHJvY2VzcyB0d28gcHJvY2Vzc2VzLgorLy8gQXMg
Y3VycmVudGx5IHRoZXJlIGlzIG5vIHNwZWNpYWwgc3RhdGUgZm9yIFJlbW90ZVZpZGVvRnJhbWUs
IHRoZSBvYmplY3QgaGVhcCBzdG9yZXMgVmlkZW9GcmFtZSBpbnN0YW5jZXMgKE1lZGlhU2FtcGxl
KS4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBSZW1vdGVWaWRlb0ZyYW1lLCByZXNwb25z
aWJsZSBmb3IgZGlzcGF0Y2hpbmcgdGhlIFZpZGVvRnJhbWUgbWV0aG9kcyB0byB0aGUgb2JqZWN0
cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhhdCB1c2VzIHRoZSBWaWRlb0Zy
YW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIgdGhyZWFkLCB0aGUgbWFpbiB0
aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVvRnJhbWUgaW5zdGFuY2VzIGFyZSBNZWRp
YVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKCk7CisKKyAgICB2b2lkIGFkZFZpZGVvRnJhbWUoUmVtb3RlVmlkZW9G
cmFtZVdyaXRlUmVmZXJlbmNlJiYsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJik7CisK
KyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4K
KyAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5j
ZSYmKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29u
c3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFzc2VydGlv
biBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7Cit9OworCisKKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3
OGNlM2QwMzlkYmUxNzMxZDVhZjZjOGU0OTkxMGEzOTUyYTcxMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRl
ZCB7CisgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UgaWRlbnRpZmllcikKK30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCAyMTdkYjk3YTNjZTRj
ODMwMDQ4YWZhYzgyOGVmYmRiYmQ1MThlN2EwLi5iNzJkNjZkMGVlNmE3YWMyMWMzYzgzNzg4MTMz
NThmNjViMTE3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaD4KQEAgLTM1LDE4ICszNywyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlk
ZW9TYW1wbGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgZGVmYXVsdFRpbWVvdXQgeyAzMF9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVj
dGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVD
b25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJu
IGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVs
bHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9u
KGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1f
Y29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisg
ICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCgpKQogewogICAgIEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9
CkBAIC0xMTMsNyArMTE5LDIzIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAK
LXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90
ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBz
YW1wbGUpCit7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAt
PnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlh
U2FtcGxlKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkp
IHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9i
akM+KCptZWRpYVNhbXBsZSk7CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJ
bW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYgcmVtb3RlU2FtcGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxl
OwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2Ew
ZC4uODAyYzkwZmU5ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVv
U2FtcGxlOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2lu
ZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rv
cnk7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsK
KyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJ
ZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNl
KCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYp
OworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYm
KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
KTsKICAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRW
aWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVk
VmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUs
MTIgKzkwLDE2IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpDbGllbnQKICAgICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0Rp
ZEZhaWwoKSBmaW5hbDsKIAorICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29u
bmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVy
IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29u
c3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZi
NDNkY2E2MDhjZGMzN2Q2MjE2ZjdlY2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0
NjMyYWJhNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgpAQCAtMzIsNyArMzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24o
Q0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRp
b24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVT
YW1wbGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1w
bGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5x
dWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVh
ckVucXVldWVkU2FtcGxlcygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1
YWQwMGNkZWNlYzVkMDNmNjMzNGI1ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVl
NzE5NzVjNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVy
LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgaWRlbnRpZmllciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5j
b3B5UmVmKCkpOworICAgICAgICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjcmVhdGUobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nv
bm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5
ZXI7CiAgICAgICAgIGxheWVyUmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxh
eWVySWQpIG11dGFibGUgewogICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBX
VEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNkZDE3ZThlN2ViZDFjZDlk
Ny4uYWJjZjI1OTIwMjVjODAwYTUyMzA4MGRmMTZhNTlkOWRkYThmYjMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNDIsNiArMzQyLDkgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlh
U291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
JywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyJywKQEAgLTg3Nyw2ICs4ODAsOCBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1l
bnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxl
Y3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ci5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Un
OiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpT
ZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpT
ZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpU
YXBJZGVudGlmaWVyJzogWyciSWRlbnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcAppbmRleCBiYWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlh
Li5hOGQyNTdlYzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0lQQ1Rlc3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4
LDYgKzQ5LDggQEAgc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsK
Kworc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9
CiAKIGV4dGVybiAiQyIgewpAQCAtMTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFy
dE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJp
dmVyCiAgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVl
dWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5k
aXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBt
X3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUg
eworICAgICAgICBvbmdvaW5nSVBDVGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3Rpbmco
Y29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9u
Z29pbmdJUENUZXN0cy0tOwogICAgIH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQg
SVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMo
KQoreworICAgIHJldHVybiBvbmdvaW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQz
Yjg0NzE4NWUuLmVhNDkzMzU2ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCisjZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3Rp
bmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQg
b25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKKworLy8gRnVuY3Rpb24gdG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQg
ZmFpbHVyZXMsIHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFu
ZCBleHBvc2VzIGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNz
IElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgSVBDVGVzdGVyKCk7CkBAIC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25z
dGV4cHIgaW5saW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKICNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI1N2Q4NDI1YmEwNDM2
ZDQ3MzlhOThjNDVlOTIzYTNmMjkxNzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIy
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9I
YXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBUeXBlIGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3Qg
aWRlbnRpZmllciByZWZlcmVuY2VzIHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsK
KyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhl
ci5tX2lkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3Zl
cnNpb247CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOworICAgIH0KK3ByaXZhdGU6CisgICAgVCBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV92ZXJzaW9uIHsgMCB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBPYmpl
Y3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQor
ICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92
ZXJzaW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGlkZW50aWZpZXI7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCAqdmVyc2lvbiB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsK
KyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAg
IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZShUIGlkZW50aWZpZXIsIHVpbnQ2NF90IHZl
cnNpb24sIHVpbnQ2NF90IHBlbmRpbmdSZWFkcykKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAgICAgLCBtX3BlbmRp
bmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlPFQ+IHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNp
b24gfTsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlKCkgY29uc3Qg
JiYgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiArIDEgfTsgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNv
ZGVyIDw8IG1fdmVyc2lvbjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBpZGVudGlmaWVyOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwZW5kaW5nUmVhZHM7CisKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyCisg
ICAgICAgICAgICA+PiB2ZXJzaW9uCisgICAgICAgICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAg
ICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RG
TW92ZSgqaWRlbnRpZmllciksICp2ZXJzaW9uLCAqcGVuZGluZ1JlYWRzIH07CisgICAgfQorCitw
cml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAg
fTsKKyAgICB1aW50NjRfdCBtX3BlbmRpbmdSZWFkcyB7IDAgfTsKK307CisKKy8vIENsYXNzIHRv
IGdlbmVyYXRlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVy
LgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlcik7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gT2Jq
ZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisKKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlcihUIGlkZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAgICBSZWFk
UmVmZXJlbmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVhZHMrKzsK
KyAgICAgICAgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9CisgICAg
Ly8gTm90IHRocmVhZCBzYWZlLiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQgcmVh
ZHMgYW55d2F5LgorICAgIFdyaXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKyssIG1fcGVuZGluZ1JlYWRzLmV4
Y2hhbmdlKDApIH07CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVCBt
X2lkZW50aWZpZXI7CisgICAgbXV0YWJsZSBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9wZW5kaW5n
UmVhZHMgeyAwIH07CisgICAgbXV0YWJsZSB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKQoreworICAgIGFkZChoYXNoZXIs
IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkpOworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJz
aW9uKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2Uo
IiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24o
KSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmpl
Y3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwg
IiwgIiA8PCByZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVm
ZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8
PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8
PCAiLCAiIDw8IHJlZmVyZW5jZS5wZW5kaW5nUmVhZHMoKSA8PCAiKSI7CisgICAgcmV0dXJuIHRz
OworfQorCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0
czxUPjo6ZW1wdHlWYWx1ZUlzWmVybzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2U8VD4mIHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChy
ZWZlcmVuY2UpOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGEsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZTxUPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IERlZmF1bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZl
T2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTI5YjdlNDY2YzJjMmI0ZTk4ZmQ1YjUzNmU4Yzk4NjdiM2ZiODBlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhl
YXAuaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIklQ
Q1Rlc3Rlci5oIgorI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgi
CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gQ29udGFpbmVyIHRoYXQgaG9sZHMgaWRlbnRpZmllciAtPiBvYmplY3QgbWFwcGlu
ZyBiZXR3ZWVuIHR3byBwcm9jZXNzZXMuCisvLyBVc2VkIGluIHNjZW5hcmlvcyB3aGVyZSB0aGUg
aG9sZGVyIHByb2Nlc3MgcHJvY2Vzc2VzIG1lc3NhZ2VzIHdpdGggdGhlIG9iamVjdCByZWZlcmVu
Y2VzIGluIG11bHRpcGxlCisvLyB0aHJlYWRzLiBgVGhyZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNr
cyB0aGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byB0aGUgY29udGVudCBwb2ludGVkCisv
LyBieSBhIHBhcnRpY3VsYXIgaWRlbnRpZmllci4KKy8vIFBlbmRpbmcgcmVhZHMgbWF5IGJsb2Nr
IG5ldyB3cml0ZXMuIEFsdGVybmF0aXZlbHkgbmV3IHdyaXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0
aGUgcmVhZHMsCisvLyBmb3IgZXhhbXBsZSBpbiBjb3B5LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8v
IFBlbmRpbmcgd3JpdGVzIGJsb2NrIHJlYWRzLgorLy8gQ3VycmVudGx5IGltcGxlbWVudGVkIG9u
bHkgZm9yIHJlYWQtb25seSAoY3JlYXRlLXJlYWQtZGVzdHJveSkgb3IgY29weS1vbi13cml0ZSB0
eXBlcywKKy8vIGUuZy4gbm8gdHdvLXBoYXNlIGdldCgpIG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxk
VHlwZT4KK2NsYXNzIFRocmVhZFNhZmVPYmplY3RIZWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPj4geworcHVi
bGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVhZFJlZmVyZW5jZTsKKyAgICB1c2luZyBX
cml0ZVJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
PElkZW50aWZpZXI+OjpXcml0ZVJlZmVyZW5jZTsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSB0eXBl
bmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVmZXJl
bmNlOworCisgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2Ug
YW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxk
VHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5z
ZXJ0cyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFu
ZCB0aGVuIHJldGlyZXMgdGhlIHdyaXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElm
IHRpbWVvdXQgaXMgcGFzc2VkLCB3YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgor
ICAgIC8vIEl0IGlzIGEgY2FsbGVyIGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9s
ZCBvYmplY3QuCisgICAgdm9pZCByZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25h
bDxIZWxkVHlwZT4mJiBuZXdPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisK
KyAgICB2b2lkIHJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xl
YXIoKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBt
X29iamVjdHNDb25kaXRpb247CisgICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAg
dWludDY0X3QgcmV0aXJlZFJlYWRzIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaW5hbFJlYWQ7IC8vIFJlbW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25l
LgorCisgICAgICAgIFJlZmVyZW5jZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNp
dCBSZWZlcmVuY2VTdGF0ZShIZWxkVHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0
KFdURk1vdmUob2JqZWN0KSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJz
dG9uZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0
X3QgZmluYWxSZWFkKQorICAgICAgICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICB9OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VT
dGF0ZT4gbV9vYmplY3RzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRU
eXBlIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJl
YWRSZWZlcmVuY2UmJiByZWFkLCBJUEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1f
b2JqZWN0cy5maW5kKHJlYWQucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmpl
Y3RzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1
bHQgPSAqc3RhdGUub2JqZWN0OworICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysr
OworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0YXRlLmZpbmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBU
cnVzdGVkIGFzc2VydCBiZWNhdXNlIHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3Np
Z25tZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRl
LnJldGlyZWRSZWFkcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUo
aXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50
aWwobV9vYmplY3RzTG9jaywgdGltZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gd2hpbGUgKHRydWUpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2Fm
ZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2Um
JiB3cml0ZSwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpUaW1lb3V0PiB0aW1lb3V0KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdS
ZWFkcyA9IHRpbWVvdXQuaGFzX3ZhbHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0
c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0
ZS5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRl
LmZpbmFsUmVhZCAmJiBzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSBy
ZXBsYXk6IGBmaW5hbFJlYWRgIGlzIGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUg
c2FtZSB2ZXJzaW9uIHdpdGggd3JpdGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFdyaXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4g
ZG9uZSB0aGFuIHRoZSBzZW5kZXIgY2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0
byB0cnkgdG8gYWRkIGEgbmV3IHJlZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qg
d2l0aG91dAorICAgICAgICAgICAgLy8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUg
b2xkIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8
ICFzdGF0ZS5vYmplY3QgfHwgKnN0YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAg
ICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0
Rm9yUGVuZGluZ1JlYWRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFk
cyA8IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5h
bFJlYWQgPSB3cml0ZS5wZW5kaW5nUmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAg
ICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdU
Rk1vdmUod3JpdGUpLnJldGlyZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkg
fSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9u
ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpu
ZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVj
dHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3ZlKCpvYmplY3QpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRoZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3Rz
LCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRp
bmdSZWFkcygpKSB7CisgICAgICAgICAgICAvLyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAg
ICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5yZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3
cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAgICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAg
ICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNl
U3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOworICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0
aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVu
dGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZp
ZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlm
aWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sK
KyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgor
dm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5j
bGVhcigpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
Y3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2JiYjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4Zjcz
MTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
U2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2Ft
cGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QKICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVt
YmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdl
OjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6
cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIFBsYXRmb3Jt
U2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFu
Z2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMz
NmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRhY2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJh
bmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBv
ZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRU
aW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA1N2VmM2IxNGVhZjJjMTA5MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li44
ZDUyOWE5OThmMGM4M2FiMDZhZGI3MmFkMWRjNjBkZmI4ZWZmMTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTcz
Niw2ICs3MzcsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODcy
LDYgKzg3NCw4IEBAIFJlbW90ZURldmljZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZUdQVVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlkN2U2NzljOTRjNmEwYWYzLi5lODc4YzVl
ZWVjNmYyMmU1ZmYwMzIwNjNhNjRkNjI5NWFmMzhmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwODIsNiArNTA4MiwxMyBAQAog
CQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQ
Q1Rlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMx
QTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEz
MjdBN0RDNkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEz
REM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1
Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTEwNyw2ICs1MTE0LDcgQEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JEREEzM0YyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1
MkVBMDAzODY1OUUgLyogQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8q
IFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RI
ZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1
NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc1OCw2ICs2NzY2LDEwIEBACiAJCQkJQ0Q4MjUyRDEy
NUQ0NjRBQjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJ
CUNEODI1MkQzMjVENDY0QkYwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFB
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RB
MzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3
QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJ
CQkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNz
YWdlcy5pbiAqLywKIAkJCQkxREQyQTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdC
NkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4NDgs
NiArNjg2MCw4IEBACiAJCQkJMUREMkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZC
NCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAw
OTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENC
QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVB
M0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywK
IAkJCQkwNzFCQzU4NDIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNw
cCAqLywKIAkJCQkwNzFCQzU4NTIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1By
b3h5LmggKi8sCiAJCQkJMDdFMTlGMDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uLmggKi8sCkBAIC03MjI1LDYgKzcyMzksNyBAQAogCQkJCTFB
RENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJ
CQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggKi8s
CiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmggKi8sCiAJCQkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovLAogCQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJCQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2
IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8sCkBAIC03MjY0LDYgKzcyNzksNyBAQAog
CQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFk
T25seS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0
YXRlLmggKi8sCiAJCQkJRjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlv
blVwZGF0ZVJlc3VsdC5oICovLAorCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJl
YWRTYWZlT2JqZWN0SGVhcC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBU
b3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyog
VG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBU
b3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGU0OTQ1NDQ4NWVkN2Mw
ZDk1MDUxNzM5ZDE4YWEwMTliMDFmMTI2ZGMuLmFlZDFlNzAxNGI4NGFmNjA1NWRlOGQxNjlkNTcx
NWJiZTJmYWM3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDlj
YWRmYzAyZjRhYjZjOGJjMTYzNTg5MjI1NzNmOTk3ZmZjNDg4OWUuLjU3YmRhMTYzMjBhYjRjZTRl
OGNlMjNlMDFjYzU5MDlmNjk1NzEyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIy
LDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQorewor
ICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1
dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgqbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlhUGxheWVy
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIGJvb2wgcmVzdWx0
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDRh
YzE4MDhlNjU0ZjU3OWI1MTM3ZDRiMTk2MmNkNGY5NGFiODExYzQuLjM2NDE1ZDlhMzNkM2ExZWNl
MDI3MWRjMDc5MzI4MTIxNzJiZWQ5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NHTGVudW0g
Z2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6
Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJhYjcyMjgwOGMuLjBi
OGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zNCw3
ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFW
Rk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzExMCw2IEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxl
LgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNy
ZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1
ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjUwMjYxNWRhMjcyYjNiZjQ2Y2Y0
NjQ5NjFiN2Y4ZWIyYTFmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9
IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWU2OTc1M2MzYTNjZDFh
MDU3Mjc5MGE2YzU0OTAyNWEwNzFkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTAsMCAr
MSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpj
cmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkpOworfQorCitS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpw
cm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAg
ICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlk
ZW9Sb3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBtX3JlZmVyZW5jZVRy
YWNrZXIoaWRlbnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGll
bnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworfQor
CitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCisgICAgOiBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKG51bGxwdHIpCisgICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIo
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7Cit9CisKK1JlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgZGlzY29ubmVj
dEdQVVByb2Nlc3NJZk5lZWRlZCgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X3JlZmVyZW5jZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lV3Jp
dGVSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRpbWUgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICAodm9pZCkg
d2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsK
K30KKworV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25z
dAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92
aWRlb1JvdGF0aW9uOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJy
b3JlZCgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtX3ZpZGVvSXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVWaWRlb0ZyYW1l
PiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byBncHVQcm9jZXNz
Q29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0
cikpIHsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7
CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKHdyaXRlKCkpLCAwLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAg
fQorfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVk
KCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZD4oaWRl
bnRpZmllcigpLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKK3sKKyAg
ICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworfQorCit2
b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQ
cm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCit7CisgICAgbV93YXNJbml0aWFsaXplZCA9IHRydWU7
CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IFdo
ZW4gc291cmNlIGZhaWxzIHRvIHByb2R1Y2UgYSBzYW1wbGUgZHVlIHRvIHNvbWUgZXJyb3IsIHRo
ZSBwcm9wZXJ0aWVzIGFyZSBkaXNlbmdhZ2VkLgorICAgIC8vIFdlIHNob3VsZCBwZXJoYXBzIGNo
ZWNrIHRoaXMgYXQgdGhlIHN1Ym1pdCB0aW1lLgorICAgIG1fcHJlc2VudGF0aW9uVGltZSA9IHBy
b3BlcnRpZXMtPnByZXNlbnRhdGlvblRpbWU7CisgICAgbV92aWRlb0lzTWlycm9yZWQgPSBwcm9w
ZXJ0aWVzLT52aWRlb0lzTWlycm9yZWQ7CisgICAgbV92aWRlb1JvdGF0aW9uID0gcHJvcGVydGll
cy0+dmlkZW9Sb3RhdGlvbjsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNjI4YTdiYzU3MGM3YWQ1NzgwOGIwN2ZhYjY5YTFkNzE0MmI1YjYwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvVmlkZW9GcmFtZS5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rp
b247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb247CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSk7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIHByb21pc2Ugb2YgYSBNZWRpYVNhbXBs
ZSB0aGF0IGV4aXN0cyBpbiBHUFUgcHJvY2Vzcy4gVGhlIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBv
dXQgcGFyYW1ldGVyIG9mIHRoZSBjcmVhdGlvbiBtZXNzYWdlLgorICAgIHN0YXRpYyBSZWZQdHI8
UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKTsKKwor
ICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICAgICAgVmlk
ZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworCisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RhdGljIFBy
b3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisgICAg
flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
IHJlYWQoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgor
ICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9S
b3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJv
cmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBs
ZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hl
biBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVk
LgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworCitwcml2
YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdDsKKyAgICBib29s
IHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJv
cGVydGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91
dCA9IDMwX3M7CisKKyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VU
cmFja2VyIG1fcmVmZXJlbmNlVHJhY2tlcjsKKyAgICBtdXRhYmxlIGJvb2wgbV93YXNJbml0aWFs
aXplZCB7IGZhbHNlIH07CisgICAgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKKyAgICBi
b29sIG1fdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICBWaWRlb1JvdGF0aW9uIG1fdmlk
ZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByZXNlbnRhdGlv
blRpbWUKKyAgICAgICAgPDwgdmlkZW9Jc01pcnJvcmVkCisgICAgICAgIDw8IHZpZGVvUm90YXRp
b247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8TWVk
aWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmlkZW9J
c01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlv
bjsKKyAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPj4gdmlkZW9Jc01p
cnJvcmVkCisgICAgICAgID4+IHZpZGVvUm90YXRpb247CisgICAgaWYgKCFkZWNvZGVyLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGll
cyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9S
b3RhdGlvbiB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRm
b3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJu
IG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFdhc0luaXRp
YWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKaW5kZXggMjE5YTU1ZGYxYzI5ZmQxYzZmOTMzNjExYTI5MjViNWMzYzA2ZTE3MC4uMTRm
NGI1MmE3ZTVhYTlmOGM0NDE1YzE5Mjc2ZDU2YjAxYzM5YWRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKQEAgLTQ5LDEyICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1w
bAogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYgY2xpZW50KQogICAgIDogV2ViQ29yZTo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkpCiAg
ICAgLCBtX21hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fY29ubmVjdGlvbihXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAsIG1fY29ubmVjdGlvbihtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX2lkZW50aWZpZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSkKIHsKICAgICBtYW5hZ2VyLmFkZExheWVyKCp0aGlzKTsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhp
cyk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAog
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExh
eWVyLCBJbnRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRM
b2dJZGVudGlmaWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpCiAKIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRo
aXMpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOjpSZWxlYXNlTGF5ZXIgeyBtX2lkZW50aWZpZXIgfSwgMCk7CiAgICAgaWYgKG1f
bWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVMYXllcigqdGhpcyk7CkBAIC0xNDAs
NiArMTQyLDEzIEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1
cm47CisgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgeworICAgICAgICBhdXRv
JiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lk
ZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byByZW1vdGVTYW1w
bGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6
OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1
cmZhY2UoKSkgewpAQCAtMTQ4LDcgKzE1Nyw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3RlU2FtcGxlIH0sIG1f
aWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkKQEAgLTE3MCwxMSArMTc5LDE4IEBAIHZvaWQgU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpzZXREaWRGYWlsKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikKIHsKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgp
OwogICAgIG1fZGlkRmFpbCA9IHRydWU7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2Ns
aWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkRmFpbCgpOwogfQogCit2b2lk
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9u
SWZOZWVkZWQoKQoreworICAgIGlmIChhdXRvKiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6
ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpCisgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1NjM2OWFkZGYwYWJmMzQ2YjBkMjFjODUw
NmQ2OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4NjI3OTQ0MzIxMTEzZTY5ZDI2YjEyYjI1NWJmYWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXImLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNs
aWVudCYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQo
KTsKIAogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgIHZvaWQg
aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtNzYsNiArNzcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsKICAgICBib29sIGNvcHlTaGFyZWRWaWRlb0Zy
YW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdmOTM4
ZjRkNmE0ZWVlMzZjYTYwZTNjOTJkOWQ4ZmZmMDgwYjY1ZGUuLjk5NTJhM2UwMWMxMTUyYzIzMTk2
MDhmMGNlYTUzYTdjZjhjZWRkZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNyAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1l
ZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGlu
IE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHA6CisK
IDIwMjItMDItMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjg4ODc4KSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJv
bGxlcnMubGF5b3V0X3Rlc3RfZmluZGVyX2xlZ2FjeV91bml0dGVzdC5MYXlvdXRUZXN0RmluZGVy
VGVzdHMgdGVzdHMgYXJlIGZhaWxpbmcgd2l0aCBXaW5kb3dzIFB5dGhvbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCmluZGV4IDMwZjdmZDgyYjMzMWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIx
ODEuLjMzMjU3M2M5ZGIyYTJmMDYwMTVkYjljZGU1YmUyMjljYTM0OTUwNjggMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTk0LDcgKzk0LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3Bs
YXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CiAjZW5kaWYKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldDQ29udGVudEJ1
ZmZlcklkZW50aWZpZXI+IGNvbnRlbnRCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCiAgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKQEAgLTEwNCw2ICsxMDcsOSBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
ewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAg
IHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lk
IENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3lu
Y2hyb25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UgcmVzdWx0KQorI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50
KQoge30KIH19CkBAIC0yMzIsNyArMjM4LDcgQEAgZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWlu
ZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9jb250YWluZXJdOgogICAg
ICAgICByZXR1cm4gTm9uZQogICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQogICAgICMgQWxsIHRl
bXBsYXRlcyBhcmUgY29udGFpbmVycyBleGNlcHQgdGhlc2UgYmVsb3cuCi0gICAgaWYgY29udGFp
bmVyX25hbWUgaW4gWydSZWZQdHInLCAnUmVmJ106CisgICAgaWYgY29udGFpbmVyX25hbWUgaW4g
WydSZWZQdHInLCAnUmVmJywgJ1JldGFpblB0cicsICdzdGQ6Om9wdGlvbmFsJ106CiAgICAgICAg
IHJldHVybiBOb25lCiAgICAgdGVtcGxhdGVzID0gbVsyXQogICAgIGFyaXR5ID0gTm9uZQpAQCAt
NjQwLDcgKzY0NiwxMyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1tvLnR5
cGVdCiAgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0X2lwY190eXBlLCBj
cHBfdHlwZV9jb250YWluZXIpKQogICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9p
cGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKLSAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAg
ICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBMaWtlbHkg
dGhpcyBjcmVhdGVzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHNwYW48aW50LCAyPiBhUmVwbHkgPSB7
IHsgfSB9Oy4KKyAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1ODg5CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9IHt7IHt7IH19IH19OyJdCisK
ICAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5h
bWUpXQogICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJz
aXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmluZGV4IGQxNDZjZWM0ZjJlYzRjZjY5MTJkN2Yw
NDhkMjg4MTU3YWRmZGMxYjguLmM0NWM2N2EzMTY2YmZmYjk4NzdiYzBkODM0ZmVmODQ0YTQ4NjY1
MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVN
YXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAu
Y3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2RlVGltZTsgfQogICAgIE1lZGlhVGltZSBkdXJh
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KLSAgICB2b2lkIHNl
dFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lEKSBmaW5hbCB7IG1fdHJhY2tJRCA9IHRyYWNr
SUQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Np
emVJbkJ5dGVzOyB9CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFt
cHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgZmluYWwgeyBtX3ByZXNlbnRhdGlvblRpbWUg
Kz0gb2Zmc2V0OyBtX2RlY29kZVRpbWUgKz0gb2Zmc2V0OyB9CkBAIC03MSw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShtX3ByZXNlbnRhdGlvblRpbWUsIG1fZGVjb2Rl
VGltZSwgbV9kdXJhdGlvbiwgc3RhdGljX2Nhc3Q8U2FtcGxlRmxhZ3M+KG1fZmxhZ3MgfCBJc05v
bkRpc3BsYXlpbmcpKTsKICAgICB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7bnVsbHB0cn19OyB9Cisg
ICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7
IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7IG51bGxwdHIgfSB9OyB9CiAgICAgc3RkOjpvcHRpb25h
bDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWwgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451106</attachid>
            <date>2022-02-07 08:20:24 -0800</date>
            <delta_ts>2022-02-08 01:01:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220207182022.patch</filename>
            <type>text/plain</type>
            <size>128416</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3Yjc2MjRhZWVjMmFh
MDUxYTM4YWJmYTYyYjM2Y2I0ZDhkYTY1Zi4uMGFlZTg4ZjBjNGNmOWE4MzE1NjUyY2NjZTdhZTQw
MDA1NmNjMTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTA2
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IG5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwZGY4ZjQ0NDIwMTMyYzg5ZmFk
NWJhNjRjZjdlNDg4NDBiZWM2MTYuLjY5ZDRiMjM3YTU3Yzg3NzQyNjhkYmU1MGY3NmUzNzViODM1
YThlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg0IEBACisyMDIyLTAyLTA3ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3Rl
TWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQg
aW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3M6CisgICAgICAg
IEFkZCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSwgV2ViQ29udGVudCBwcm9jZXNzIHNp
ZGUgcHJveHkgb2JqZWN0IHRoYXQKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIGNhbiB1c2UuCisKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQgc2hvd3MgaW4gY29tcG9z
aXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LgorCisgICAgICAgIEF0IHRoZSBtb21lbnQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbm5vdCBwYWludCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkgdG8gdGhlCisgICAgICAgIGRvY3VtZW50IENTUyBwYWludGVkIGNvbnRlbnQs
IENvbnRleHQyRCBvciBXZWJHTCBjYW52YXMuCisKKyAgICAgICAgR1BVUDoKKyAgICAgICAgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBtYXBwaW5nCisgICAgICAgIFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxlLiBDdXJyZW50bHkgYWxsIG9iamVjdHMKKyAg
ICAgICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBsZUFWRk9iakMuCisKKyAgICAgICAgQWRkIGFu
IGV4YW1wbGUgaW1wbGVtZW50YXRpb24gd2hlcmUgYSByZW1vdGUgTWVkaWFTYW1wbGUgaXMgcmV0
dXJuZWQgYnkgSVBDOgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKS4KKworICAgICAgICBUaGUgR1BVUCBvYmplY3Qg
cG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpczoKKyAgICAgICAgLSBjcmVh
dGVkIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHRocmVhZAorICAgICAgICAt
IGNvbnN1bWVkIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZSBpbiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIHRocmVhZAorICAgICAg
ICAtIHJlbGVhc2VkIGluIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9G
cmFtZSBpbiBHUFVQIG1haW4gdGhyZWFkCisgICAgICAgIEFsbCBvZiB0aGVzZSBtZXNzYWdlcyBh
cmUgYXN5bmNocm9ub3VzIGFuZCBjYW4gYXJyaXZlIHRvIHRoZWlyIGRlc3RpbmF0aW9uIGluIGFu
eSBvcmRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHJlcXVlc3QgdG8gcmVsZWFzZSB0aGUgdmlk
ZW8gZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUgdGhlIG1lc3NhZ2UgdG8gY3JlYXRlIHRoZSB2aWRl
byBmcmFtZSBoYXMgYmVlbgorICAgICAgICByZWNlaXZlZC4KKworICAgICAgICBUbyBzb2x2ZSB0
aGUgb3JkZXJpbmcgaXNzdWUsIGludHJvZHVjZSByZWFkZXJzLXdyaXRlcnMgcmVmZXJlbmNlIGNv
dW50aW5nIG1ldGhvZCB2aWEgZm9sbG93aW5nIGNsYXNzZXM6CisgICAgICAgICAtIE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJXcml0ZVJl
ZmVyZW5jZQorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcgorCisg
ICAgICAgIE9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcyB0aGUgb2JqZWN0LgorICAgICAgICBP
YmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcyBhIG5ldyB2ZXJzaW9uIG9m
IHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVkb2Nv
ZGUgZXhhbXBsZXM6CisgICAgICAgICAgV3JpdGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwg
cGVuZGluZ1JlYWRzID0gMCwgdmVyc2lvbiA9IDAgfSBtZWFuczoKKyAgICAgICAgICAgICJFbmQg
dGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMC4gQ3JlYXRlIHZlcnNpb24g
PSAxIgorICAgICAgICAgICAgVGhpcyBpcyBob3cgaW5pdGlhbCBvYmplY3QgaXMgYXNzaWduZWQg
dG8gdGhlIHJlZmVyZW5jZS4KKyAgICAgICAgICBXcml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIg
PSAxLCBwZW5kaW5nUmVhZHMgPSA3NywgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAg
ICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMzIgd2hlbiBhbGwg
NzcgcmVhZHMgaGF2ZSBjb21wbGV0ZWQuIENyZWF0ZSB2ZXJzaW9uID0gMzMiCisKKyAgICAgICAg
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgZGVjbGFyZXMgYSByZWFkIGRlcGVuZGVuY3kg
dG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50
aWZpZXIuCisgICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAgICAgICAgIFJlYWRSZWZl
cmVuY2UgeyBpZGVudGlmaWVyID0gMSwgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAg
IkNvbXBsZXRlIG9uZSByZWFkIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lvbiAzMiIuCisKKyAgICAg
ICAgQ3JlYXRlcywgdXBkYXRlcyBhbmQgZGVzdHJ1Y3Rpb25zIGFyZSBXcml0ZVJlZmVyZW5jZXMu
CisgICAgICAgIFJlYWRzIGFyZSBSZWFkUmVmZXJlbmNlcy4KKworICAgICAgICBUaGUgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIgY3JlYXRlcyB3cml0ZSBhbmQgcmVhZCByZWZlcmVu
Y2VzIGluIHRoZSBQcm94eSAtdXNpbmcgcHJvY2VzcyAoV2ViQ29udGVudCBwcm9jZXNzKS4KKwor
ICAgICAgICBUaGUgYWRkZWQgVGhyZWFkU2FmZU9iamVjdEhlYXAgcmVzb2x2ZXMgdGhlIHJlYWQg
YW5kIHdyaXRlIHJlZmVyZW5jZXMgaW4gdGhlIHJlYWwgb2JqZWN0IHByb2Nlc3MgKEdQVVAgaW4g
dGhpcyBjYXNlKS4KKyAgICAgICAgUmVhZHMgYW5kIHdyaXRlcyBhcmUgYmxvY2tpbmcgdGhlIHJl
cXVlc3RpbmcgdGhyZWFkIGFwcHJvcHJpYXRlbHk6CisgICAgICAgICAtIFJlYWQgb2YgdW5rbm93
biB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUgd3JpdGUgY3JlYXRl
cyB0aGUgdmVyc2lvbgorICAgICAgICAgLSBXcml0ZSBvZiBuZXcgdmVyc2lvbiBvZiB0aGUgaWRl
bnRpZmllciBibG9ja3MgdW50aWwgdGhlIHJlYWRzIGhhdmUgcmV0aXJlZCwgb3IgY3JlYXRlcyBw
YXJhbGxlbCwgbmV3IHZlcnNpb24KKyAgICAgICAgICAgb2YgdGhlIGNvbnRlbnQgaW4gY2FzZSBv
ZiBjb3B5LW9uLXdyaXRlIHNjaGVtZXMuCisKKyAgICAgICAgSW4gdGhpcyBjb21taXQgb2JqZWN0
cyBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGFyZSBpbW11dGFibGUgdW50
aWwgZGVzdHJveWVkLCBzbyB0aGVyZSBpcyBubyB1cGRhdGUgb3IKKyAgICAgICAgY29weS1vbi13
cml0ZSBzY2hlbWUgaGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRl
b0ZyYW1lT2JqZWN0SGVhcCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmFkZFZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4uCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNh
bXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZUNWKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNy
ZWF0ZUxheWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOgorICAgICAg
ICAoV2ViS2l0Ojppc1Rlc3RpbmdJUEMpOgorICAgICAgICAqIFNoYXJlZC9PYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2U6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6dmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJl
bmNlOjpyZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjppZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlPFQ+Pjo6aGFzaCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYktp
dDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46OmVxdWFsKToKKyAgICAgICAgKiBTaGFy
ZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZFNhZmVPYmplY3RIZWFwOjpSZWZlcmVuY2VTdGF0ZTo6UmVmZXJlbmNlU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBl
Pjo6cmV0aXJlUmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpjbGVhcik6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNh
bXBsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBs
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9S
b3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxp
emVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAg
ICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDYg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjg2OTM2KTogQ3Jhc2ggaW4gV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODIxNjVm
ZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRlZi4uMjkwMjIxMmJmOTBjNDQzMTAzODQ3
NWIyOTI2ZjczMWY3ZDY5MjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQ0LDYgKzEzNDQs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0v
VXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgK
ICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1l
LmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVv
U2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggODE0YWE0ZmRiOGJkNGVmMWVjNmFmYzA1YjBlODQwY2Y4ZmRlZTMwMy4uZmRj
NDZiOTI2ODE0Y2Y1YmFkMjkwNjQ4YjI2MDIxMjRkNjljOGMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTE5MjcsNiArMTkyNyw3IEBAIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9y
bS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rp
dml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3Jt
L1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRiMTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVk
Li5jYWZkOTExMTc3ZmFkOWExYTYwZmI0NTE0MWU5ZTQ4OGE1OGE0NDAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA0LDYg
KzI0MDQsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0
R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Ix
MDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFF
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyog
R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2Ft
cGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEz
REFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlk
ZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTExLDYgKzExNTEyLDggQEAKIAkJN0IxNjE5
MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4
QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBW
aWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVv
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0
MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3
MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRD
ODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIw
QTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxMzYs
NiArMzAxMzksOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQu
aCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0
aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmgg
Ki8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5o
ICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRh
LmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVh
ZENvcGllci5jcHAgKi8sCkBAIC0zNzgwNiw2ICszNzgxMSw3IEBACiAJCQkJMEYxQTBDMzgyMjlB
NDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3
MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRl
b0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENC
OEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXgg
MTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcxNjU3OWZmOGU3
ZmMzNDBkODdjYzg5MmYxYmJiNGIwZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgICAg
ICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCiAgICAg
ICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5
cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFT
YW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBsZUJveCog
bW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJv
eDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAgICAgIEdz
dFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRlU291cmNl
UmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXpl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3Qg
TWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5
bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
PSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9
IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEyZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDExMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRl
b0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30K
KworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5nIFZpZGVvRnJh
bWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYkNvcmU6
OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFZpZGVvRnJh
bWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnBhaXI8UmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4g
VmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9Owor
fQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgpOworfQorCitNZWRpYVNhbXBsZTo6U2Ft
cGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNh
bXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6
OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFBy
aW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFiOTk4MzdiODQ3
NzE0MWUwNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlk
ZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJh
bWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgorLy8gRklYTUU6
IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlh
U2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2Ft
cGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09S
RV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBh
cmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisgICAgLy8gV2Vi
Q29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGlt
ZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1l
IGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRvbVN0cmluZyB0
cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+
LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRp
b25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWlu
Z0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9M
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRi
MGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0z
MzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1
ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBwbGF5YmFjayBv
ZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGlmICghaXM8
TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBs
ZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25v
dG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxh
dGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRm
OTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2NTYyZTMxMTA0
NWM0MWFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2ICs5ODcsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKCkKICAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBE
b2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuCisgICAgaWYg
KCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXIpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFr
ZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5
OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkwMDdkY2NhOWRlZTEwZWViYzNiMzFkNjMz
ODA2MGQ3ZTkyMzcwNTYuLjcwZjhmYmE2ODhkZjM1ZWM4NmJhZWVhNDFlYzI3ZjRkOGIzNmUxNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01NCwx
MyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7
IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRl
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShj
b25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJvdGVjdGVkOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNN
U2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDRhMGZhYzYxZWIx
ZWY2MDMzZWQyOTc0MzVkYWE5MjZlOWVkZWFjZDcuLmU2MWY1MDZlNGEwZmIyYmNhNDdkYWMyNjMz
YTNkOWFhNzVhMmZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFW
Rk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpz
aXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRUb3Rh
bFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxl
QVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNh
bXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAuY21TYW1wbGVC
dWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2IxMzlhOWE2MjM4
ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2OGJiNTYzNWJk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjM1LDcgKzIz
NSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRmb3JtU2FtcGxl
IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBN
ZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRm
b3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGUs
IHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRl
ZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5
MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTMsNyArNTMs
NiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3Qg
U3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7IH0KICAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpw
YWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25z
dCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBudWxscHRyLCBu
dWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4g
Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJk
NjViLi40YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Ym94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQogICAgIEF0b21TdHJpbmcgdHJh
Y2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAg
ICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5
dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRT
aXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKQEAg
LTg3LDcgKzg2LDcgQEAgTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRpYVNhbXBsZTo6
ZmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9CiAKLVBsYXRm
b3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1w
bGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZv
cm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJveFR5cGUsIHsg
Jm1fYm94IH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNzU2
ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2ZWZhZi4uMTc2OTQ0MGIwNDMwYzQ1ZDY4
NmIwOGYwMDU4ZmNmOWRkZWQyZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNzcsNiArMTc3
LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cAogCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKICAgICBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdE1hbmFnZXIKQEAgLTI3NSw2ICsyNzYsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJ
TEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UKICAgICBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24KICAgICBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5CiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
UmVtb3RlQ29tbWFuZExpc3RlbmVyCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUzYjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0
OS4uYjliZjI1MjY1MGM1YjFhYTJhY2E1MDJjMGE2ZGIxYjk0M2EyNmE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3Rl
Q29tbWFuZExpc3RlbmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9U
cmFja1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAg
LTE4OSw2ICsxOTAsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlM2I1NTg0MGFlMWVhZjU3ZjVlYmY3
NTQyZTVlMWZkNDBlNWRkNGQxLi40MDBkZmRlMjBmODQ5OWM2NDFiODVjZGEzZDNkODNmMzYwMmU1
N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTM4MSw2ICszODEsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1Jl
bW90ZVRleHR1cmVWaWV3TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggN2FkNDllMzczNWY0YjQ3OGM0
MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0YS4uMzM4ZGI0ZGZjYzNmZmQ2N2NkZTE3Nzg1OWI3NWI5OTZi
N2U2MGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk5LDYgKzE5OSw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbiBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXApAQCAtMjk1LDYgKzI5Niw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjVi
YzEwNGI3NTQxMDRiNjNlLi40YTMxMmVlM2QzM2I2NzJhYmVjMzNkODczODA3ZDVjZDY5MmE1NTZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiAr
MjU4LDkgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJ
VFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNz
LmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xp
ZW50KG1fcm91dGluZ0FyYml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OmNyZWF0ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5v
dmVycmlkZUxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJl
ZExhbmd1YWdlcyhwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQs
OSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7
CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9G
cmFtZU9iamVjdEhlYXAucmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBu
ZWVkIHRvIG1ha2Ugc3VyZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkg
ZGVzdHJveWluZyB0aGVtLgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigp
OwpAQCAtOTQxLDggKzk0NywxNSBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENhcHR1cmVBdHRyaWJ1dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhl
YXAuZ2V0KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisKICNpZiBQ
TEFURk9STShNQUMpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BsYXlDb25m
aWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFy
eUZsYWdzIGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMy
NWRkZDRjMzQyYjE0OS4uMTFhY2MwMGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdkN2U5NzU5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA7CisjZW5kaWYKKworCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAg
ICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpO
b3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CkBAIC0xNDEsNiArMTQ2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgYWxsb3dzQXVkaW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBdWRpb0Nh
cHR1cmU7IH0KICAgICBib29sIGFsbG93c1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzVmlkZW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzRGlzcGxheUNhcHR1cmU7IH0KKyAgICBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCYgdmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMDUsNiArMzEx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fYWxsb3dzVmlkZW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
b3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OworICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2Jq
ZWN0SGVhcDsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYy
YzM0MmMzM2I2Li45ODAwNTc4YjUyMDg0MzE3ZTg4NjUyZGZjNTJjNzZjYzFjMmZmNDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRHTENWLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02OCw2
ICs3Miw5IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rp
b24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tl
bmQocmVuZGVyaW5nQmFja2VuZCkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICwgbV92
aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVP
YmplY3RIZWFwKCkpCisjZW5kaWYKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdChT
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkKICAgICAsIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNz
SWRlbnRpZmllcigpKQogewpAQCAtMjIzLDYgKzIzMCwxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXNXaXRoUXVhbGlmaWVkSWRl
bnRpZgogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZENv
bXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1hZ2VCdWZmZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShS
ZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1
cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZFZp
ZGVvRnJhbWUoV1RGTW92ZSh3cml0ZSksIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJi
MTcuLjEwYzA2MzYxODY3ZDVlODgzZWI5ZDZhODUzMjVjZDkxMGZiZGUzMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZl
cklkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYg
KzY1LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBh
bmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2Vp
dmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lk
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVXcml0
ZVJlZmVyZW5jZSYmKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50
Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JU
ZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8UGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9z
dHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9y
ZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAg
ICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24gbV9zdHJl
YW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBj
OGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi45MDk3YjQyNzBiZjUzZGEy
NGMwOTNhNTdlYTNjY2IxN2EyOTA3ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZm
ZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwg
dWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwg
dWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNlbmRpZgogICAg
IHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmY4OGZjMTY3N2NiOWYyZjQ3Mjg0
NmU4M2YzZjI1NGUzYTk5MTVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkK
K3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2Vy
dElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8vIENsaWVu
dHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhleSBzaG91
bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAgICAgLy8g
YXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50
cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0
byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
Ly8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQordm9pZCBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZy
YW1lKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzPiByZXN1bHQ7CisgICAgaWYgKGZyYW1lKQorICAgICAgICByZXN1bHQgPSBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoKmZyYW1lKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQocmVzdWx0KSwg
IHdyaXRlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICByZXRpcmUoV1RGTW92ZSh3cml0
ZSksIFdURk1vdmUoZnJhbWUpLCBzdGQ6Om51bGxvcHQpOworfQorCit2b2lkIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFk
KTsKKyAgICByZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0ZSkpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTU5YzgwNDY2ZjVmMTNmOTNiYzQyNTcw
OTVkOTFiNDgwZWExNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTAsMCArMSw2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2FtcGxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCisvLyBI
b2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1lIGluc3RhbmNlcyB0aGF0IGFyZSBtYXBw
ZWQgZnJvbSBXZWIgcHJvY2VzcyB0byBHUFUgcHJvY2VzcyB0d28gcHJvY2Vzc2VzLgorLy8gQXMg
Y3VycmVudGx5IHRoZXJlIGlzIG5vIHNwZWNpYWwgc3RhdGUgZm9yIFJlbW90ZVZpZGVvRnJhbWUs
IHRoZSBvYmplY3QgaGVhcCBzdG9yZXMgVmlkZW9GcmFtZSBpbnN0YW5jZXMgKE1lZGlhU2FtcGxl
KS4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBSZW1vdGVWaWRlb0ZyYW1lLCByZXNwb25z
aWJsZSBmb3IgZGlzcGF0Y2hpbmcgdGhlIFZpZGVvRnJhbWUgbWV0aG9kcyB0byB0aGUgb2JqZWN0
cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhhdCB1c2VzIHRoZSBWaWRlb0Zy
YW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIgdGhyZWFkLCB0aGUgbWFpbiB0
aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVvRnJhbWUgaW5zdGFuY2VzIGFyZSBNZWRp
YVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAgflJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKCk7CisKKyAgICB2b2lkIGFkZFZpZGVvRnJhbWUoUmVtb3RlVmlkZW9G
cmFtZVdyaXRlUmVmZXJlbmNlJiYsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJik7CisK
KyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4K
KyAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5j
ZSYmKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29u
c3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFzc2VydGlv
biBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7Cit9OworCisKKworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3
OGNlM2QwMzlkYmUxNzMxZDVhZjZjOGU0OTkxMGEzOTUyYTcxMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRl
ZCB7CisgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVS
ZWZlcmVuY2UgaWRlbnRpZmllcikKK30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCAyMTdkYjk3YTNjZTRj
ODMwMDQ4YWZhYzgyOGVmYmRiYmQ1MThlN2EwLi5iNzJkNjZkMGVlNmE3YWMyMWMzYzgzNzg4MTMz
NThmNjViMTE3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaD4KQEAgLTM1LDE4ICszNywyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlk
ZW9TYW1wbGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgZGVmYXVsdFRpbWVvdXQgeyAzMF9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVj
dGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVD
b25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJu
IGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVs
bHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNv
bm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9u
KGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1f
Y29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisg
ICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2Jq
ZWN0SGVhcCgpKQogewogICAgIEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9
CkBAIC0xMTMsNyArMTE5LDIzIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAK
LXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90
ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBz
YW1wbGUpCit7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAt
PnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlh
U2FtcGxlKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkp
IHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9i
akM+KCptZWRpYVNhbXBsZSk7CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJ
bW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYgcmVtb3RlU2FtcGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxl
OwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2Ew
ZC4uODAyYzkwZmU5ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVv
U2FtcGxlOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2lu
ZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rv
cnk7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsK
KyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJ
ZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNl
KCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYp
OworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYm
KTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
KTsKICAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRW
aWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVk
VmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUs
MTIgKzkwLDE2IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpDbGllbnQKICAgICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0Rp
ZEZhaWwoKSBmaW5hbDsKIAorICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29u
bmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVy
IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29u
c3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZi
NDNkY2E2MDhjZGMzN2Q2MjE2ZjdlY2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0
NjMyYWJhNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgpAQCAtMzIsNyArMzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24o
Q0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRp
b24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVT
YW1wbGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1w
bGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5x
dWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVh
ckVucXVldWVkU2FtcGxlcygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1
YWQwMGNkZWNlYzVkMDNmNjMzNGI1ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVl
NzE5NzVjNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVy
LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgaWRlbnRpZmllciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5j
b3B5UmVmKCkpOworICAgICAgICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjcmVhdGUobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nv
bm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5
ZXI7CiAgICAgICAgIGxheWVyUmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxh
eWVySWQpIG11dGFibGUgewogICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBX
VEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZkMzY4N2Y3ZWNkZDE3ZThlN2ViZDFjZDlk
Ny4uYWJjZjI1OTIwMjVjODAwYTUyMzA4MGRmMTZhNTlkOWRkYThmYjMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNDIsNiArMzQyLDkgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlh
U291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
JywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyJywKQEAgLTg3Nyw2ICs4ODAsOCBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1l
bnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxl
Y3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
ci5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Un
OiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpT
ZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpT
ZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpU
YXBJZGVudGlmaWVyJzogWyciSWRlbnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBD
VGVzdGVyLmNwcAppbmRleCBiYWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlh
Li5hOGQyNTdlYzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0lQQ1Rlc3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4
LDYgKzQ5LDggQEAgc3RydWN0IFNlbmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uOwogICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsK
Kworc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9
CiAKIGV4dGVybiAiQyIgewpAQCAtMTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFy
dE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJp
dmVyCiAgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVl
dWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5k
aXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBt
X3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUg
eworICAgICAgICBvbmdvaW5nSVBDVGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3Rpbmco
Y29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9u
Z29pbmdJUENUZXN0cy0tOwogICAgIH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQg
SVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMo
KQoreworICAgIHJldHVybiBvbmdvaW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQz
Yjg0NzE4NWUuLmVhNDkzMzU2ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCisjZGVmaW5lIEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3Rp
bmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQg
b25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKKworLy8gRnVuY3Rpb24gdG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQg
ZmFpbHVyZXMsIHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFu
ZCBleHBvc2VzIGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNz
IElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgSVBDVGVzdGVyKCk7CkBAIC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25z
dGV4cHIgaW5saW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKICNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI1N2Q4NDI1YmEwNDM2
ZDQ3MzlhOThjNDVlOTIzYTNmMjkxNzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIy
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9I
YXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBUeXBlIGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3Qg
aWRlbnRpZmllciByZWZlcmVuY2VzIHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsK
KyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhl
ci5tX2lkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3Zl
cnNpb247CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOworICAgIH0KK3ByaXZhdGU6CisgICAgVCBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV92ZXJzaW9uIHsgMCB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBPYmpl
Y3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQor
ICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92
ZXJzaW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGlkZW50aWZpZXI7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCAqdmVyc2lvbiB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsK
KyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAg
IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZShUIGlkZW50aWZpZXIsIHVpbnQ2NF90IHZl
cnNpb24sIHVpbnQ2NF90IHBlbmRpbmdSZWFkcykKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAgICAgLCBtX3BlbmRp
bmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlPFQ+IHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNp
b24gfTsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlKCkgY29uc3Qg
JiYgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiArIDEgfTsgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNv
ZGVyIDw8IG1fdmVyc2lvbjsKKyAgICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBpZGVudGlmaWVyOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwZW5kaW5nUmVhZHM7CisKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyCisg
ICAgICAgICAgICA+PiB2ZXJzaW9uCisgICAgICAgICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAg
ICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RG
TW92ZSgqaWRlbnRpZmllciksICp2ZXJzaW9uLCAqcGVuZGluZ1JlYWRzIH07CisgICAgfQorCitw
cml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAg
fTsKKyAgICB1aW50NjRfdCBtX3BlbmRpbmdSZWFkcyB7IDAgfTsKK307CisKKy8vIENsYXNzIHRv
IGdlbmVyYXRlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVy
LgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlcik7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gT2Jq
ZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisKKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlcihUIGlkZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAgICBSZWFk
UmVmZXJlbmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVhZHMrKzsK
KyAgICAgICAgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9CisgICAg
Ly8gTm90IHRocmVhZCBzYWZlLiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQgcmVh
ZHMgYW55d2F5LgorICAgIFdyaXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKyssIG1fcGVuZGluZ1JlYWRzLmV4
Y2hhbmdlKDApIH07CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVCBt
X2lkZW50aWZpZXI7CisgICAgbXV0YWJsZSBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9wZW5kaW5n
UmVhZHMgeyAwIH07CisgICAgbXV0YWJsZSB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKQoreworICAgIGFkZChoYXNoZXIs
IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkpOworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJz
aW9uKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2Uo
IiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24o
KSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmpl
Y3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwg
IiwgIiA8PCByZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVm
ZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8
PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8
PCAiLCAiIDw8IHJlZmVyZW5jZS5wZW5kaW5nUmVhZHMoKSA8PCAiKSI7CisgICAgcmV0dXJuIHRz
OworfQorCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0
czxUPjo6ZW1wdHlWYWx1ZUlzWmVybzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2U8VD4mIHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChy
ZWZlcmVuY2UpOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGEsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZTxUPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IERlZmF1bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZl
T2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTI5YjdlNDY2YzJjMmI0ZTk4ZmQ1YjUzNmU4Yzk4NjdiM2ZiODBlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhl
YXAuaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIklQ
Q1Rlc3Rlci5oIgorI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgi
CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gQ29udGFpbmVyIHRoYXQgaG9sZHMgaWRlbnRpZmllciAtPiBvYmplY3QgbWFwcGlu
ZyBiZXR3ZWVuIHR3byBwcm9jZXNzZXMuCisvLyBVc2VkIGluIHNjZW5hcmlvcyB3aGVyZSB0aGUg
aG9sZGVyIHByb2Nlc3MgcHJvY2Vzc2VzIG1lc3NhZ2VzIHdpdGggdGhlIG9iamVjdCByZWZlcmVu
Y2VzIGluIG11bHRpcGxlCisvLyB0aHJlYWRzLiBgVGhyZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNr
cyB0aGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byB0aGUgY29udGVudCBwb2ludGVkCisv
LyBieSBhIHBhcnRpY3VsYXIgaWRlbnRpZmllci4KKy8vIFBlbmRpbmcgcmVhZHMgbWF5IGJsb2Nr
IG5ldyB3cml0ZXMuIEFsdGVybmF0aXZlbHkgbmV3IHdyaXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0
aGUgcmVhZHMsCisvLyBmb3IgZXhhbXBsZSBpbiBjb3B5LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8v
IFBlbmRpbmcgd3JpdGVzIGJsb2NrIHJlYWRzLgorLy8gQ3VycmVudGx5IGltcGxlbWVudGVkIG9u
bHkgZm9yIHJlYWQtb25seSAoY3JlYXRlLXJlYWQtZGVzdHJveSkgb3IgY29weS1vbi13cml0ZSB0
eXBlcywKKy8vIGUuZy4gbm8gdHdvLXBoYXNlIGdldCgpIG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxk
VHlwZT4KK2NsYXNzIFRocmVhZFNhZmVPYmplY3RIZWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPj4geworcHVi
bGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVhZFJlZmVyZW5jZTsKKyAgICB1c2luZyBX
cml0ZVJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
PElkZW50aWZpZXI+OjpXcml0ZVJlZmVyZW5jZTsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSB0eXBl
bmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVmZXJl
bmNlOworCisgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2Ug
YW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxk
VHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5z
ZXJ0cyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFu
ZCB0aGVuIHJldGlyZXMgdGhlIHdyaXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElm
IHRpbWVvdXQgaXMgcGFzc2VkLCB3YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgor
ICAgIC8vIEl0IGlzIGEgY2FsbGVyIGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9s
ZCBvYmplY3QuCisgICAgdm9pZCByZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25h
bDxIZWxkVHlwZT4mJiBuZXdPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisK
KyAgICB2b2lkIHJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xl
YXIoKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBt
X29iamVjdHNDb25kaXRpb247CisgICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAg
dWludDY0X3QgcmV0aXJlZFJlYWRzIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaW5hbFJlYWQ7IC8vIFJlbW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25l
LgorCisgICAgICAgIFJlZmVyZW5jZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNp
dCBSZWZlcmVuY2VTdGF0ZShIZWxkVHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0
KFdURk1vdmUob2JqZWN0KSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJz
dG9uZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0
X3QgZmluYWxSZWFkKQorICAgICAgICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICB9OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VT
dGF0ZT4gbV9vYmplY3RzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRU
eXBlIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJl
YWRSZWZlcmVuY2UmJiByZWFkLCBJUEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1f
b2JqZWN0cy5maW5kKHJlYWQucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmpl
Y3RzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1
bHQgPSAqc3RhdGUub2JqZWN0OworICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysr
OworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0YXRlLmZpbmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBU
cnVzdGVkIGFzc2VydCBiZWNhdXNlIHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3Np
Z25tZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRl
LnJldGlyZWRSZWFkcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUo
aXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50
aWwobV9vYmplY3RzTG9jaywgdGltZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gd2hpbGUgKHRydWUpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2Fm
ZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2Um
JiB3cml0ZSwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpUaW1lb3V0PiB0aW1lb3V0KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdS
ZWFkcyA9IHRpbWVvdXQuaGFzX3ZhbHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0
c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0
ZS5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRl
LmZpbmFsUmVhZCAmJiBzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSBy
ZXBsYXk6IGBmaW5hbFJlYWRgIGlzIGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUg
c2FtZSB2ZXJzaW9uIHdpdGggd3JpdGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFdyaXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4g
ZG9uZSB0aGFuIHRoZSBzZW5kZXIgY2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0
byB0cnkgdG8gYWRkIGEgbmV3IHJlZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qg
d2l0aG91dAorICAgICAgICAgICAgLy8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUg
b2xkIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8
ICFzdGF0ZS5vYmplY3QgfHwgKnN0YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAg
ICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0
Rm9yUGVuZGluZ1JlYWRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFk
cyA8IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5h
bFJlYWQgPSB3cml0ZS5wZW5kaW5nUmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAg
ICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdU
Rk1vdmUod3JpdGUpLnJldGlyZSgpLCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkg
fSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9u
ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpu
ZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVj
dHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3ZlKCpvYmplY3QpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRoZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3Rz
LCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRGb3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRp
bmdSZWFkcygpKSB7CisgICAgICAgICAgICAvLyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAg
ICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5yZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3
cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAgICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAg
ICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNl
U3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOworICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0
aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVu
dGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRlYWRsaW5lKCkpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZp
ZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlm
aWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sK
KyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgor
dm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5j
bGVhcigpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
Y3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2JiYjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4Zjcz
MTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
U2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2Ft
cGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QKICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVt
YmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdl
OjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6
cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIFBsYXRmb3Jt
U2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFu
Z2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZlOWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMz
NmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRhY2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJh
bmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBv
ZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRU
aW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA1N2VmM2IxNGVhZjJjMTA5MjA5OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li44
ZDUyOWE5OThmMGM4M2FiMDZhZGI3MmFkMWRjNjBkZmI4ZWZmMTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTcz
Niw2ICs3MzcsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODcy
LDYgKzg3NCw4IEBAIFJlbW90ZURldmljZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5j
cHAKIFJlbW90ZUdQVVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlkN2U2NzljOTRjNmEwYWYzLi5lODc4YzVl
ZWVjNmYyMmU1ZmYwMzIwNjNhNjRkNjI5NWFmMzhmMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwODIsNiArNTA4MiwxMyBAQAog
CQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQ
Q1Rlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMx
QTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEz
MjdBN0RDNkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEz
REM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1
Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTEwNyw2ICs1MTE0LDcgQEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JEREEzM0YyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1
MkVBMDAzODY1OUUgLyogQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8q
IFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RI
ZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1
NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc1OCw2ICs2NzY2LDEwIEBACiAJCQkJQ0Q4MjUyRDEy
NUQ0NjRBQjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJ
CUNEODI1MkQzMjVENDY0QkYwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFB
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RB
MzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3
QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJ
CQkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNz
YWdlcy5pbiAqLywKIAkJCQkxREQyQTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdC
NkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4NDgs
NiArNjg2MCw4IEBACiAJCQkJMUREMkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZC
NCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAw
OTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENC
QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVB
M0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywK
IAkJCQkwNzFCQzU4NDIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNw
cCAqLywKIAkJCQkwNzFCQzU4NTIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1By
b3h5LmggKi8sCiAJCQkJMDdFMTlGMDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uLmggKi8sCkBAIC03MjI1LDYgKzcyMzksNyBAQAogCQkJCTFB
RENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJ
CQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggKi8s
CiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmggKi8sCiAJCQkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNC
IC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovLAogCQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJCQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2
IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8sCkBAIC03MjY0LDYgKzcyNzksNyBAQAog
CQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFk
T25seS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0
YXRlLmggKi8sCiAJCQkJRjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlv
blVwZGF0ZVJlc3VsdC5oICovLAorCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJl
YWRTYWZlT2JqZWN0SGVhcC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBU
b3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyog
VG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBU
b3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGU0OTQ1NDQ4NWVkN2Mw
ZDk1MDUxNzM5ZDE4YWEwMTliMDFmMTI2ZGMuLmFlZDFlNzAxNGI4NGFmNjA1NWRlOGQxNjlkNTcx
NWJiZTJmYWM3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDlj
YWRmYzAyZjRhYjZjOGJjMTYzNTg5MjI1NzNmOTk3ZmZjNDg4OWUuLjU3YmRhMTYzMjBhYjRjZTRl
OGNlMjNlMDFjYzU5MDlmNjk1NzEyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIy
LDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQorewor
ICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1
dG8gbWVkaWFTYW1wbGUgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgqbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KG1lZGlhU2FtcGxlLT53cml0ZSgpKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIG1lZGlhU2FtcGxlOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlhUGxheWVy
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIGJvb2wgcmVzdWx0
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDRh
YzE4MDhlNjU0ZjU3OWI1MTM3ZDRiMTk2MmNkNGY5NGFiODExYzQuLjM2NDE1ZDlhMzNkM2ExZWNl
MDI3MWRjMDc5MzI4MTIxNzJiZWQ5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NHTGVudW0g
Z2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6
Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJhYjcyMjgwOGMuLjBi
OGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zNCw3
ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFW
Rk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzExMCw2IEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxl
LgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNy
ZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1
ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjUwMjYxNWRhMjcyYjNiZjQ2Y2Y0
NjQ5NjFiN2Y4ZWIyYTFmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSA9
IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZWU2OTc1M2MzYTNjZDFh
MDU3Mjc5MGE2YzU0OTAyNWEwNzFkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTAsMCAr
MSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpj
cmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkpOworfQorCitS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpw
cm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAg
ICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9yZWQoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlk
ZW9Sb3RhdGlvbigpCisgICAgfTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBtX3JlZmVyZW5jZVRy
YWNrZXIoaWRlbnRpZmllcikKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGll
bnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1h
cCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworfQor
CitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCisgICAgOiBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKG51bGxwdHIpCisgICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIo
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCit7Cit9CisKK1JlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgZGlzY29ubmVj
dEdQVVByb2Nlc3NJZk5lZWRlZCgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X3JlZmVyZW5jZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lV3Jp
dGVSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRpbWUgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICAodm9pZCkg
d2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsK
K30KKworV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25z
dAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92
aWRlb1JvdGF0aW9uOworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJy
b3JlZCgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0aWFsaXplZCgpOworICAg
IHJldHVybiBtX3ZpZGVvSXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVWaWRlb0ZyYW1l
PiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byBncHVQcm9jZXNz
Q29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0
cikpIHsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7
CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKHdyaXRlKCkpLCAwLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAg
fQorfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxpemVk
KCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFsaXplZD4oaWRl
bnRpZmllcigpLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKK3sKKyAg
ICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworfQorCit2
b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxQ
cm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCit7CisgICAgbV93YXNJbml0aWFsaXplZCA9IHRydWU7
CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IFdo
ZW4gc291cmNlIGZhaWxzIHRvIHByb2R1Y2UgYSBzYW1wbGUgZHVlIHRvIHNvbWUgZXJyb3IsIHRo
ZSBwcm9wZXJ0aWVzIGFyZSBkaXNlbmdhZ2VkLgorICAgIC8vIFdlIHNob3VsZCBwZXJoYXBzIGNo
ZWNrIHRoaXMgYXQgdGhlIHN1Ym1pdCB0aW1lLgorICAgIG1fcHJlc2VudGF0aW9uVGltZSA9IHBy
b3BlcnRpZXMtPnByZXNlbnRhdGlvblRpbWU7CisgICAgbV92aWRlb0lzTWlycm9yZWQgPSBwcm9w
ZXJ0aWVzLT52aWRlb0lzTWlycm9yZWQ7CisgICAgbV92aWRlb1JvdGF0aW9uID0gcHJvcGVydGll
cy0+dmlkZW9Sb3RhdGlvbjsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNjI4YTdiYzU3MGM3YWQ1NzgwOGIwN2ZhYjY5YTFkNzE0MmI1YjYwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvVmlkZW9GcmFtZS5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rp
b247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb247CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVZpZGVvRnJhbWVQ
cm94eSk7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIHByb21pc2Ugb2YgYSBNZWRpYVNhbXBs
ZSB0aGF0IGV4aXN0cyBpbiBHUFUgcHJvY2Vzcy4gVGhlIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBv
dXQgcGFyYW1ldGVyIG9mIHRoZSBjcmVhdGlvbiBtZXNzYWdlLgorICAgIHN0YXRpYyBSZWZQdHI8
UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKTsKKwor
ICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICAgICAgVmlk
ZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworCisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RhdGljIFBy
b3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisgICAg
flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJl
ZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
IHJlYWQoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgor
ICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9S
b3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJv
cmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBs
ZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hl
biBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVk
LgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworCitwcml2
YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKSBjb25zdDsKKyAgICBib29s
IHdhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKKyAg
ICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHdhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJv
cGVydGllcz4mJik7CisgICAgc3RhdGljIGlubGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91
dCA9IDMwX3M7CisKKyAgICBtdXRhYmxlIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VU
cmFja2VyIG1fcmVmZXJlbmNlVHJhY2tlcjsKKyAgICBtdXRhYmxlIGJvb2wgbV93YXNJbml0aWFs
aXplZCB7IGZhbHNlIH07CisgICAgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZTsKKyAgICBi
b29sIG1fdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICBWaWRlb1JvdGF0aW9uIG1fdmlk
ZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+IHZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByZXNlbnRhdGlv
blRpbWUKKyAgICAgICAgPDwgdmlkZW9Jc01pcnJvcmVkCisgICAgICAgIDw8IHZpZGVvUm90YXRp
b247Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8TWVk
aWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmlkZW9J
c01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlv
bjsKKyAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPj4gdmlkZW9Jc01p
cnJvcmVkCisgICAgICAgID4+IHZpZGVvUm90YXRpb247CisgICAgaWYgKCFkZWNvZGVyLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGll
cyB7IFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqdmlkZW9Jc01pcnJvcmVkLCAqdmlkZW9S
b3RhdGlvbiB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRm
b3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJu
IG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNh
bXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiOTMwMDY0YTYxYzhlNjNlNTZjMmUzNjY2NmM3YzU5NzQwMjE1ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFdhc0luaXRp
YWxpemVkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM+IHByb3BlcnRpZXMpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKaW5kZXggMjE5YTU1ZGYxYzI5ZmQxYzZmOTMzNjExYTI5MjViNWMzYzA2ZTE3MC4uMTRm
NGI1MmE3ZTVhYTlmOGM0NDE1YzE5Mjc2ZDU2YjAxYzM5YWRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKQEAgLTQ5LDEyICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1w
bAogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYgY2xpZW50KQogICAgIDogV2ViQ29yZTo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
JldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkpCiAg
ICAgLCBtX21hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fY29ubmVjdGlvbihXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAsIG1fY29ubmVjdGlvbihtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX2lkZW50aWZpZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSkKIHsKICAgICBtYW5hZ2VyLmFkZExheWVyKCp0aGlzKTsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhp
cyk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAog
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExh
eWVyLCBJbnRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCkBAIC03OCw3ICs4MCw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRM
b2dJZGVudGlmaWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpCiAKIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6flNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRo
aXMpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOjpSZWxlYXNlTGF5ZXIgeyBtX2lkZW50aWZpZXIgfSwgMCk7CiAgICAgaWYgKG1f
bWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVMYXllcigqdGhpcyk7CkBAIC0xNDAs
NiArMTQyLDEzIEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1
cm47CisgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgeworICAgICAgICBhdXRv
JiByZW1vdGVTYW1wbGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lk
ZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byByZW1vdGVTYW1w
bGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6
OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1
cmZhY2UoKSkgewpAQCAtMTQ4LDcgKzE1Nyw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3RlU2FtcGxlIH0sIG1f
aWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkKQEAgLTE3MCwxMSArMTc5LDE4IEBAIHZvaWQgU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpzZXREaWRGYWlsKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikKIHsKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgp
OwogICAgIG1fZGlkRmFpbCA9IHRydWU7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2Ns
aWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkRmFpbCgpOwogfQogCit2b2lk
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9u
SWZOZWVkZWQoKQoreworICAgIGlmIChhdXRvKiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6
ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpCisgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1NjM2OWFkZGYwYWJmMzQ2YjBkMjFjODUw
NmQ2OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4NjI3OTQ0MzIxMTEzZTY5ZDI2YjEyYjI1NWJmYWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXImLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNs
aWVudCYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQo
KTsKIAogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogICAgIHZvaWQg
aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtNzYsNiArNzcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsKICAgICBib29sIGNvcHlTaGFyZWRWaWRlb0Zy
YW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdmOTM4
ZjRkNmE0ZWVlMzZjYTYwZTNjOTJkOWQ4ZmZmMDgwYjY1ZGUuLjk5NTJhM2UwMWMxMTUyYzIzMTk2
MDhmMGNlYTUzYTdjZjhjZWRkZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNyAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1l
ZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNhcHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGlu
IE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4gR1BVUAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHA6CisK
IDIwMjItMDItMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjg4ODc4KSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJv
bGxlcnMubGF5b3V0X3Rlc3RfZmluZGVyX2xlZ2FjeV91bml0dGVzdC5MYXlvdXRUZXN0RmluZGVy
VGVzdHMgdGVzdHMgYXJlIGZhaWxpbmcgd2l0aCBXaW5kb3dzIFB5dGhvbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCmluZGV4IDMwZjdmZDgyYjMzMWEwNmY0YzRlMGNiNGUzYjg5Zjc1ZmZlNmIx
ODEuLjMzMjU3M2M5ZGIyYTJmMDYwMTVkYjljZGU1YmUyMjljYTM0OTUwNjggMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTk0LDcgKzk0LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3Bs
YXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CiAjZW5kaWYKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldDQ29udGVudEJ1
ZmZlcklkZW50aWZpZXI+IGNvbnRlbnRCdWZmZXIpIFN5bmNocm9ub3VzCisjZW5kaWYKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCiAgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCiAjZW5kaWYKICAgICB2b2lkIEVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKQEAgLTEwNCw2ICsxMDcsOSBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
ewogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAg
IHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lk
IENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3lu
Y2hyb25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UgcmVzdWx0KQorI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2ZW50
KQoge30KIH19CkBAIC0yMzIsNyArMjM4LDcgQEAgZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250YWlu
ZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9jb250YWluZXJdOgogICAg
ICAgICByZXR1cm4gTm9uZQogICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQogICAgICMgQWxsIHRl
bXBsYXRlcyBhcmUgY29udGFpbmVycyBleGNlcHQgdGhlc2UgYmVsb3cuCi0gICAgaWYgY29udGFp
bmVyX25hbWUgaW4gWydSZWZQdHInLCAnUmVmJ106CisgICAgaWYgY29udGFpbmVyX25hbWUgaW4g
WydSZWZQdHInLCAnUmVmJywgJ1JldGFpblB0cicsICdzdGQ6Om9wdGlvbmFsJ106CiAgICAgICAg
IHJldHVybiBOb25lCiAgICAgdGVtcGxhdGVzID0gbVsyXQogICAgIGFyaXR5ID0gTm9uZQpAQCAt
NjQwLDcgKzY0NiwxMyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1tvLnR5
cGVdCiAgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0X2lwY190eXBlLCBj
cHBfdHlwZV9jb250YWluZXIpKQogICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtpdF9p
cGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKLSAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxs
X3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAg
ICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBMaWtlbHkg
dGhpcyBjcmVhdGVzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHNwYW48aW50LCAyPiBhUmVwbHkgPSB7
IHsgfSB9Oy4KKyAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1ODg5CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxf
c3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9IHt7IHt7IH19IH19OyJdCisK
ICAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2Lm5h
bWUpXQogICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBlKCJz
aXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmluZGV4IGQxNDZjZWM0ZjJlYzRjZjY5MTJkN2Yw
NDhkMjg4MTU3YWRmZGMxYjguLmM0NWM2N2EzMTY2YmZmYjk4NzdiYzBkODM0ZmVmODQ0YTQ4NjY1
MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVN
YXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAu
Y3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2RlVGltZTsgfQogICAgIE1lZGlhVGltZSBkdXJh
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KLSAgICB2b2lkIHNl
dFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lEKSBmaW5hbCB7IG1fdHJhY2tJRCA9IHRyYWNr
SUQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Np
emVJbkJ5dGVzOyB9CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFt
cHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgZmluYWwgeyBtX3ByZXNlbnRhdGlvblRpbWUg
Kz0gb2Zmc2V0OyBtX2RlY29kZVRpbWUgKz0gb2Zmc2V0OyB9CkBAIC03MSw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShtX3ByZXNlbnRhdGlvblRpbWUsIG1fZGVjb2Rl
VGltZSwgbV9kdXJhdGlvbiwgc3RhdGljX2Nhc3Q8U2FtcGxlRmxhZ3M+KG1fZmxhZ3MgfCBJc05v
bkRpc3BsYXlpbmcpKTsKICAgICB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7bnVsbHB0cn19OyB9Cisg
ICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7
IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7IG51bGxwdHIgfSB9OyB9CiAgICAgc3RkOjpvcHRpb25h
bDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWwgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451217</attachid>
            <date>2022-02-08 01:01:26 -0800</date>
            <delta_ts>2022-02-09 10:49:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220208110124.patch</filename>
            <type>text/plain</type>
            <size>129536</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3Yjc2MjRhZWVjMmFh
MDUxYTM4YWJmYTYyYjM2Y2I0ZDhkYTY1Zi4uMGFlZTg4ZjBjNGNmOWE4MzE1NjUyY2NjZTdhZTQw
MDA1NmNjMTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTA2
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IG5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhNmUwYzliYzYyNTc5Njg3ZDI1
NDA2YmQzZjk1M2VhNGYxMGExMGQuLjM1Y2VkNTZhNGE5YjNkZmM3NThiNDIwOTUyNDMyMzcwYWEz
MDMxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg0IEBACisyMDIyLTAyLTA3ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3Rl
TWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQg
aW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3M6CisgICAgICAg
IEFkZCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSwgV2ViQ29udGVudCBwcm9jZXNzIHNp
ZGUgcHJveHkgb2JqZWN0IHRoYXQKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIGNhbiB1c2UuCisKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQgc2hvd3MgaW4gY29tcG9z
aXRpbmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LgorCisgICAgICAgIEF0IHRoZSBtb21lbnQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbm5vdCBwYWludCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkgdG8gdGhlCisgICAgICAgIGRvY3VtZW50IENTUyBwYWludGVkIGNvbnRlbnQs
IENvbnRleHQyRCBvciBXZWJHTCBjYW52YXMuCisKKyAgICAgICAgR1BVUDoKKyAgICAgICAgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBtYXBwaW5nCisgICAgICAgIFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxlLiBDdXJyZW50bHkgYWxsIG9iamVjdHMKKyAg
ICAgICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBsZUFWRk9iakMuCisKKyAgICAgICAgQWRkIGFu
IGV4YW1wbGUgaW1wbGVtZW50YXRpb24gd2hlcmUgYSByZW1vdGUgTWVkaWFTYW1wbGUgaXMgcmV0
dXJuZWQgYnkgSVBDOgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKS4KKworICAgICAgICBUaGUgR1BVUCBvYmplY3Qg
cG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBpczoKKyAgICAgICAgLSBjcmVh
dGVkIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGluIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHRocmVhZAorICAgICAgICAt
IGNvbnN1bWVkIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZSBpbiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIHRocmVhZAorICAgICAg
ICAtIHJlbGVhc2VkIGluIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9G
cmFtZSBpbiBHUFVQIG1haW4gdGhyZWFkCisgICAgICAgIEFsbCBvZiB0aGVzZSBtZXNzYWdlcyBh
cmUgYXN5bmNocm9ub3VzIGFuZCBjYW4gYXJyaXZlIHRvIHRoZWlyIGRlc3RpbmF0aW9uIGluIGFu
eSBvcmRlci4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHJlcXVlc3QgdG8gcmVsZWFzZSB0aGUgdmlk
ZW8gZnJhbWUgY2FuIGhhcHBlbiBiZWZvcmUgdGhlIG1lc3NhZ2UgdG8gY3JlYXRlIHRoZSB2aWRl
byBmcmFtZSBoYXMgYmVlbgorICAgICAgICByZWNlaXZlZC4KKworICAgICAgICBUbyBzb2x2ZSB0
aGUgb3JkZXJpbmcgaXNzdWUsIGludHJvZHVjZSByZWFkZXJzLXdyaXRlcnMgcmVmZXJlbmNlIGNv
dW50aW5nIG1ldGhvZCB2aWEgZm9sbG93aW5nIGNsYXNzZXM6CisgICAgICAgICAtIE9iamVjdElk
ZW50aWZpZXJSZWFkUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJXcml0ZVJl
ZmVyZW5jZQorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcgorCisg
ICAgICAgIE9iamVjdElkZW50aWZpZXIgaWRlbnRpZmllcyB0aGUgb2JqZWN0LgorICAgICAgICBP
YmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcyBhIG5ldyB2ZXJzaW9uIG9m
IHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVkb2Nv
ZGUgZXhhbXBsZXM6CisgICAgICAgICAgV3JpdGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwg
cGVuZGluZ1JlYWRzID0gMCwgdmVyc2lvbiA9IDAgfSBtZWFuczoKKyAgICAgICAgICAgICJFbmQg
dGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMC4gQ3JlYXRlIHZlcnNpb24g
PSAxIgorICAgICAgICAgICAgVGhpcyBpcyBob3cgaW5pdGlhbCBvYmplY3QgaXMgYXNzaWduZWQg
dG8gdGhlIHJlZmVyZW5jZS4KKyAgICAgICAgICBXcml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIg
PSAxLCBwZW5kaW5nUmVhZHMgPSA3NywgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAg
ICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMzIgd2hlbiBhbGwg
NzcgcmVhZHMgaGF2ZSBjb21wbGV0ZWQuIENyZWF0ZSB2ZXJzaW9uID0gMzMiCisKKyAgICAgICAg
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgZGVjbGFyZXMgYSByZWFkIGRlcGVuZGVuY3kg
dG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50
aWZpZXIuCisgICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAgICAgICAgIFJlYWRSZWZl
cmVuY2UgeyBpZGVudGlmaWVyID0gMSwgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAg
IkNvbXBsZXRlIG9uZSByZWFkIG9mIGlkZW50aWZpZXIgMSwgdmVyc2lvbiAzMiIuCisKKyAgICAg
ICAgQ3JlYXRlcywgdXBkYXRlcyBhbmQgZGVzdHJ1Y3Rpb25zIGFyZSBXcml0ZVJlZmVyZW5jZXMu
CisgICAgICAgIFJlYWRzIGFyZSBSZWFkUmVmZXJlbmNlcy4KKworICAgICAgICBUaGUgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIgY3JlYXRlcyB3cml0ZSBhbmQgcmVhZCByZWZlcmVu
Y2VzIGluIHRoZSBQcm94eSAtdXNpbmcgcHJvY2VzcyAoV2ViQ29udGVudCBwcm9jZXNzKS4KKwor
ICAgICAgICBUaGUgYWRkZWQgVGhyZWFkU2FmZU9iamVjdEhlYXAgcmVzb2x2ZXMgdGhlIHJlYWQg
YW5kIHdyaXRlIHJlZmVyZW5jZXMgaW4gdGhlIHJlYWwgb2JqZWN0IHByb2Nlc3MgKEdQVVAgaW4g
dGhpcyBjYXNlKS4KKyAgICAgICAgUmVhZHMgYW5kIHdyaXRlcyBhcmUgYmxvY2tpbmcgdGhlIHJl
cXVlc3RpbmcgdGhyZWFkIGFwcHJvcHJpYXRlbHk6CisgICAgICAgICAtIFJlYWQgb2YgdW5rbm93
biB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUgd3JpdGUgY3JlYXRl
cyB0aGUgdmVyc2lvbgorICAgICAgICAgLSBXcml0ZSBvZiBuZXcgdmVyc2lvbiBvZiB0aGUgaWRl
bnRpZmllciBibG9ja3MgdW50aWwgdGhlIHJlYWRzIGhhdmUgcmV0aXJlZCwgb3IgY3JlYXRlcyBw
YXJhbGxlbCwgbmV3IHZlcnNpb24KKyAgICAgICAgICAgb2YgdGhlIGNvbnRlbnQgaW4gY2FzZSBv
ZiBjb3B5LW9uLXdyaXRlIHNjaGVtZXMuCisKKyAgICAgICAgSW4gdGhpcyBjb21taXQgb2JqZWN0
cyBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGFyZSBpbW11dGFibGUgdW50
aWwgZGVzdHJveWVkLCBzbyB0aGVyZSBpcyBubyB1cGRhdGUgb3IKKyAgICAgICAgY29weS1vbi13
cml0ZSBzY2hlbWUgaGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRl
b0ZyYW1lT2JqZWN0SGVhcCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6
OmFkZFZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4uCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNh
bXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZUNWKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNy
ZWF0ZUxheWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOgorICAgICAg
ICAoV2ViS2l0Ojppc1Rlc3RpbmdJUEMpOgorICAgICAgICAqIFNoYXJlZC9PYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2U6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKToKKyAgICAg
ICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6dmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJl
bmNlOjpyZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjppZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmRl
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlPFQ+Pjo6aGFzaCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYktp
dDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46OmVxdWFsKToKKyAgICAgICAgKiBTaGFy
ZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZFNhZmVPYmplY3RIZWFwOjpSZWZlcmVuY2VTdGF0ZTo6UmVmZXJlbmNlU3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBl
Pjo6cmV0aXJlUmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpjbGVhcik6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5n
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNh
bXBsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YVNhbXBsZUJ5dGVSYW5nZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBs
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9S
b3RhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
dmlkZW9NaXJyb3JlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6dmlkZW9QaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxp
emVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAg
ICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDgg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHUFVQIFdl
YkdMIFJFTEVBU0VfTE9HcyBlcnJvcm5lb3VzbHkgZm9yIHVuaGFuZGxlZCBtZXNzYWdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggODIxNjVmZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRl
Zi4uMjkwMjIxMmJmOTBjNDQzMTAzODQ3NWIyOTI2ZjczMWY3ZDY5MjI4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMzQ0LDYgKzEzNDQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0Zm9ybS9Vc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0aW9uQnViYmxlLmgK
KyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRh
dGEuaAogICAgIHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1dl
YkdMU3RhdGVUcmFja2VyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODE0YWE0ZmRiOGJkNGVmMWVjNmFm
YzA1YjBlODQwY2Y4ZmRlZTMwMy4uZmRjNDZiOTI2ODE0Y2Y1YmFkMjkwNjQ4YjI2MDIxMjRkNjlj
OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5MjcsNiArMTkyNyw3IEBAIHBsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1l
ci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3Bw
CiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0
YXRlVHJhY2tlci5jcHAKIHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRiMTM3
MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVkLi5jYWZkOTExMTc3ZmFkOWExYTYwZmI0NTE0MWU5ZTQ4
OGE1OGE0NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNDA0LDYgKzI0MDQsNyBAQAogCQk3QjEwMzM5RTI1NDk3MjE3MDBD
OEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNv
Y29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I0NDEwRTEyNzk1
OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8q
IE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjVBM0RB
RDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBB
TkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjcyMEIwQzI3
NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3
NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTEx
LDYgKzExNTEyLDggQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUwMDBCNEY4QSAvKiBN
ZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNh
bXBsZVZpZGVvRnJhbWVBVkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEz
REFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzAxMzYsNiArMzAxMzksOCBAQAogCQkJCUEzQUY5RDgyMjAzMjUz
MjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0
N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJCTgzQzQ1QjhEMURD
MkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJN0I1QTNEQUIyN0FC
RjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEzREFEMjdBQkY4QzQw
MDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0
IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0M0IwRTcwMEE4NkZB
MCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NF
RDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0zNzgwNiw2ICszNzgx
MSw3IEBACiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9z
aXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5OUZBMTAwNjU2M0JC
IC8qIFZpZGVvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1QTNEQUYyN0FC
RjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2
MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5NzkxNzIyNjI1ZjU2
YjI1M2YwOC4uYjRmZTcxNjU3OWZmOGU3ZmMzNDBkODdjYzg5MmYxYmJiNGIwZDhkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBzdHJ1Y3Qg
UGxhdGZvcm1TYW1wbGUgewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUsCiAgICAgICAgIEdT
dHJlYW1lclNhbXBsZVR5cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5cGUsCisgICAgICAg
IFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVkIHdoZW4g
VmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsK
LSAgICAgICAgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAgICAgY29uc3QgTW9j
a1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgY21T
YW1wbGVCdWZmZXI7CiAgICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwogICAgICAgICBzdGQ6
OnBhaXI8TVRQbHVnaW5CeXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBieXRl
UmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlh
VGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0
aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBv
ZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAtOTAsNyArOTAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAgIH07CiAgICAgdmly
dHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3Jt
U2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUg
cGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0ZVJhbmdlIHsKICAg
ICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEyZDcxYWZjYjlmMGI5
MTc4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJhbWUoKSA9IGRlZmF1
bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitNZWRpYVRpbWUg
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmR1cmF0aW9u
KCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9Owor
fQorCitBdG9tU3RyaW5nIFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVfdCBWaWRlb0ZyYW1l
OjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK1dlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lOjpwcmVzZW50YXRp
b25TaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
eyB9OworfQorCit2b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRp
YVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFZpZGVvRnJh
bWU6OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0ZyYW1lOjppc0Rpdmlz
YWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGQ6OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiwgUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNvbnN0IE1lZGlhVGlt
ZSYsIFVzZUVuZFRpbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgbnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFZp
ZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sKKyAgICBDUkFTSCgp
OworfQorCitNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6ZmxhZ3MoKSBjb25z
dAoreworICAgIHJldHVybiBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5vbmU7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwor
dm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ5NTAx
MGQzNmViNjJiOWVhZTFiOTk4MzdiODQ3NzE0MWUwNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJNZWRpYVNhbXBsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgY2xhc3Mg
cmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNhcHR1cmUgc291cmNl
LCBvciBzaW1pbGFyLgorLy8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVtZW50YXRpb24gcHVy
cG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUgY29kZQorLy8gc3Rv
cHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1l
ZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOwor
Citwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgpOworCitwcml2YXRl
OgorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHRo
ZXNlIG9iamVjdHMuCisgICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgorICAg
IFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29u
c3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0gVXNlRW5kVGltZTo6
RG9Ob3RVc2UpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2
ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2Yzk1NTlmYjZjZDcx
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogdm9p
ZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRp
YVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIC8v
IEZJWE1FOiBMb2NhbCBwbGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgaXMgbm90IGlt
cGxlbWVudGVkLgorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihzYW1wbGUpKQorICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5vdyA9IE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkgKyByZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjUxMjY5NmEx
M2FjNzJhYzg4ZjgwMDg2NTYyZTMxMTA0NWM0MWFjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KQEAgLTk4Nyw2ICs5ODcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBpZiAobV9pbWFnZVBh
aW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIEZJWE1FOiBEb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBSZW1vdGVW
aWRlb0ZyYW1lUHJveHkuCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdl
UGFpbnRlci5tZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9pbWFn
ZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLnBp
eGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDkw
MDdkY2NhOWRlZTEwZWViYzNiMzFkNjMzODA2MGQ3ZTkyMzcwNTYuLjcwZjhmYmE2ODhkZjM1ZWM4
NmJhZWVhNDFlYzI3ZjRkOGIzNmUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5oCkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgogICAgIE1lZGlhVGlt
ZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25z
dCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTk3
LDMgKzk2LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQykK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2Vi
Q29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLm1tCmluZGV4IDRhMGZhYzYxZWIxZWY2MDMzZWQyOTc0MzVkYWE5MjZlOWVkZWFjZDcuLmU2
MWY1MDZlNGEwZmIyYmNhNDdkYWMyNjMzYTNkOWFhNzVhMmZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzaXpl
X3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIFBB
TDo6Q01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOwogfQog
Ci1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkKK1Bs
YXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAog
ewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxl
QnVmZmVyVHlwZSwgeyAuY21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAg
cmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCmluZGV4
IDllN2MwODk2MDZhN2IxMzlhOWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3Zjk3OTVlYTRkYThh
NzQ4MjA2OTM3ZDQyM2Q2OGJiNTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0
cmVhbWVyLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1wbGVHU3RyZWFtZXI6
Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcE9mZnNldCkKICAg
ICB9CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNh
bXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1w
bGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1w
bGU6OkdTdHJlYW1lclNhbXBsZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2FtcGxlLmdldCgpIH0g
fTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApp
bmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWViLi4zYjVhNjlhYTc2
YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29k
ZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlhVGltZSBk
dXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9t
U3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KLSAg
ICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZSB7IG1fdHJh
Y2tJZCA9IHRyYWNrSWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3NpemU7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zm
c2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtNjIsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxN
ZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBvdmVycmlk
ZSAgeyByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8TWVkaWFTYW1wbGU+
IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2FtcGxlRmxh
Z3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZv
cm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJh
bmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1Y2I2MGI5ZWY2ZWY1
N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViLi40YWM2OWFjZDlhMDBjZjZlMTk5YTMzYWFjNDcz
ZDhjZDg1ZGM1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApA
QCAtNTgsMTAgKzU4LDkgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CiAgICAgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZHVyYXRpb24o
KTsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBt
X2lkID0gaWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAg
IFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgTWVkaWFTYW1wbGU6OlNhbXBs
ZUZsYWdzIE1vY2tNZWRpYVNhbXBsZTo6ZmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBTYW1wbGVG
bGFncyhmbGFncyk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZv
cm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBs
ZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBs
ZTo6TW9ja1NhbXBsZUJveFR5cGUsIHsgJm1fYm94IH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKaW5kZXggNzU2ZGE4OGI0NWY3MDQyZjQyM2I3MzRjNzY0ZTY1NjZkNDQ2
ZWZhZi4uMTc2OTQ0MGIwNDMwYzQ1ZDY4NmIwOGYwMDU4ZmNmOWRkZWQyZTUyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC0xNzcsNiArMTc3LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eQogICAgIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkKICAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcAogCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKQEAgLTI3NSw2ICsyNzYsNyBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24KICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
CisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5CiAgICAgV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyCiAgICAgV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNGM2NjIyMGNmMTIyYTUz
Yjc0NjlkNDQwMGM3Y2RkYjIzNWM4Yjc0OS4uYjliZjI1MjY1MGM1YjFhYTJhY2E1MDJjMGE2ZGIx
Yjk0M2EyNmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRy
YWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTE4OSw2ICsxOTAsNyBAQCAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmlu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBlM2I1NTg0MGFlMWVhZjU3ZjVlYmY3NTQyZTVlMWZkNDBlNWRkNGQxLi40MDBkZmRlMjBmODQ5
OWM2NDFiODVjZGEzZDNkODNmMzYwMmU1N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM4MSw2ICszODEsMTIgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlTWVzc2FnZXNS
ZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmlld01l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZp
ZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggN2FkNDllMzczNWY0YjQ3OGM0MTZkOTI5NWMxMzliZTk4ZmQ2Y2U0YS4uMzM4ZGI0ZGZj
YzNmZmQ2N2NkZTE3Nzg1OWI3NWI5OTZiN2U2MGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTk5LDYgKzE5OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCiAJV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXIgXApAQCAtMjk1LDYgKzI5Niw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5IFwKIAlH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5IFwKIAlHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0
ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNlLi40YTMxMmVlM2QzM2I2NzJh
YmVjMzNkODczODA3ZDVjZDY5MmE1NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNDEsNiArMTQxLDcg
QEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIK
ICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdf
QVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXNzaW9uKCku
c2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0FyYml0cmF0b3IuZ2V0KCkpOwog
I2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RI
ZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSgqdGhpcyk7CisjZW5kaWYK
IAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJhbWV0ZXJzLm92ZXJyaWRlTGFu
Z3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgbV9hdWRp
b1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAucmVzZXQoKTsKKyNlbmRpZgog
ICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQogICAgIC8vIHRvIGJyZWFr
IHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVtLgogICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDggKzk0NywxNSBAQCBib29sIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1dGlvblN0cmluZygpIGNvbnN0
CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJ
RCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjI0
ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uMTFhY2MwMGM3NGViNWQxMmY4
MjgyZDQ0NjYzOTdkODdkN2U5NzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHN0
cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgUmVt
b3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKworCiBjbGFzcyBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4K
ICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CkBAIC0xNDEs
NiArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzQXVkaW9DYXB0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd3NBdWRpb0NhcHR1cmU7IH0KICAgICBib29sIGFsbG93c1ZpZGVvQ2Fw
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzVmlkZW9DYXB0dXJlOyB9CiAgICAgYm9vbCBh
bGxvd3NEaXNwbGF5Q2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzRGlzcGxheUNhcHR1
cmU7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCYgdmlkZW9GcmFtZU9iamVjdEhl
YXAoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCkBAIC0zMDUsNiArMzExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dz
QXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzVmlkZW9DYXB0dXJlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OworICAg
IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBs
aWNhdGlvbkF1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3
NjdjYzlhOGUyNjg2NDZkY2UzOWQyNjYyYzM0MmMzM2I2Li45ODAwNTc4YjUyMDg0MzE3ZTg4NjUy
ZGZjNTJjNzZjYzFjMmZmNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTQyLDYg
KzQyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTENWLmg+CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC02OCw2ICs3Miw5IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
CiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpj
cmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3Ry
ZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
CiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCisjZW5kaWYKICAgICAsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3Q6OmFjcXVpcmUoKSkKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogewpAQCAtMjIzLDYgKzIzMCwx
NCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXNXaXRoUXVhbGlmaWVkSWRlbnRpZgogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdl
QnVmZmVyKG1fY29udGV4dC0+cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1h
Z2VCdWZmZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3
cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXAtPmFkZFZpZGVvRnJhbWUoV1RGTW92ZSh3cml0ZSksIG1fY29udGV4
dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSk7Cit9CisjZW5kaWYKKwog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZm
ZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudCht
X3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVm
M2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLjEwYzA2MzYxODY3ZDVlODgzZWI5ZDZhODUzMjVj
ZDkxMGZiZGUzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMCBAQAog
I2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
IgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
TWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY1LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xh
c3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mg
c2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wg
Y2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNSw5IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsK
ICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKyNlbmRpZgogICAgIHZvaWQg
Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50
MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MCw5IEBAIHBy
b3RlY3RlZDoKICAgICBSZWZQdHI8UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwOworI2VuZGlmCiAgICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVT
UyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4
ZTMwMmIyLi45MDk3YjQyNzBiZjUzZGEyNGMwOTNhNTdlYTNjY2IxN2EyOTA3ZmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsK
ICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBD
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJl
bmNlIHJlc3VsdCkKKyNlbmRpZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkK
IAogICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0
dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNmY4OGZjMTY3N2NiOWYyZjQ3Mjg0NmU4M2YzZjI1NGUzYTk5MTVmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAoY29ubmVjdGlvblRvV2ViUHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygmY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbiht
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgKnRoaXMpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCkKK3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BM
aXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21D
b25uZWN0aW9uKQoreworICAgIGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAg
IGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CisgICAgICAgIC8vIENsaWVudHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVy
IHRoaXMgaGFwcGVucy4gVGhleSBzaG91bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0
aGV5IGRvIG5vdCwKKyAgICAgICAgLy8gYXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmlu
ZyB0aGUgZnJhbWVzLiBUaGUgY2xpZW50cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3Ro
aW5nKSBpbiBjYXNlIHRoZXkgZmFpbCB0byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAg
ICAgICAgY2xlYXIoKTsKKyAgICAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3Rv
cHBpbmcuCisgICAgfQorfQordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlk
ZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZyYW1lKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgaWYgKGZyYW1lKQorICAg
ICAgICByZXN1bHQgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoKmZyYW1lKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
V2FzSW5pdGlhbGl6ZWQocmVzdWx0KSwgIHdyaXRlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICByZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUoZnJhbWUpLCBzdGQ6Om51bGxvcHQp
OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFt
ZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJ
c0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICByZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0
ZSkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MTU5YzgwNDY2ZjVmMTNmOTNiYzQyNTcwOTVkOTFiNDgwZWExNjNiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVjdEhl
YXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZEFzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworCisvLyBIb2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1l
IGluc3RhbmNlcyB0aGF0IGFyZSBtYXBwZWQgZnJvbSBXZWIgcHJvY2VzcyB0byBHUFUgcHJvY2Vz
cyB0d28gcHJvY2Vzc2VzLgorLy8gQXMgY3VycmVudGx5IHRoZXJlIGlzIG5vIHNwZWNpYWwgc3Rh
dGUgZm9yIFJlbW90ZVZpZGVvRnJhbWUsIHRoZSBvYmplY3QgaGVhcCBzdG9yZXMgVmlkZW9GcmFt
ZSBpbnN0YW5jZXMgKE1lZGlhU2FtcGxlKS4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBS
ZW1vdGVWaWRlb0ZyYW1lLCByZXNwb25zaWJsZSBmb3IgZGlzcGF0Y2hpbmcgdGhlIFZpZGVvRnJh
bWUgbWV0aG9kcyB0byB0aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJl
YWQgdGhhdCB1c2VzIHRoZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBw
bGF5ZXIgdGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVv
RnJhbWUgaW5zdGFuY2VzIGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlT2JqZWN0SGVhcDxS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CisKKyAgICB2b2lkIGFk
ZFZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYsIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4mJik7CisKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKK3ByaXZh
dGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VWaWRlb0ZyYW1lKFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
Y29uc3VtZVRocmVhZCk7CisgICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJF
U1M7Cit9OworCisKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3OGNlM2QwMzlkYmUxNzMxZDVhZjZjOGU0OTkxMGEzOTUy
YTcxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisj
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorbWVzc2FnZXMgLT4gUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAgTm90UmVmQ291bnRlZCB7CisgICAgUmVsZWFzZVZpZGVvRnJhbWUoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmllcikKK30KKyNlbmRpZgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcAppbmRleCAyMTdkYjk3YTNjZTRjODMwMDQ4YWZhYzgyOGVmYmRiYmQ1MThlN2EwLi5iNzJk
NjZkMGVlNmE3YWMyMWMzYzgzNzg4MTMzNThmNjViMTE3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5j
bHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KQEAgLTM1LDE4ICszNywyMiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQgeyAzMF9zIH07CisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQogewotICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGlk
ZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRvIGxheWVyID0gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihncHVDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bm5lY3Rpb24pKSk7CiAgICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciA/IFdURk1vdmUobGF5ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24pCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQog
ICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKG1fZ3B1
Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAgIEFTU0VSVChtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTMsNyArMTE5LDIzIEBAIHZvaWQgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQordm9p
ZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlk
ZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBzYW1wbGUpCit7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9
IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNhbXBsZSksIGRlZmF1bHRU
aW1lb3V0KTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaXM8TWVkaWFTYW1w
bGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBD
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgYXZmTWVkaWFTYW1wbGUgPSBk
b3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7CisgICAgTWVkaWFTYW1w
bGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRpYVNhbXBsZSk7CisgICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoYXZmTWVkaWFTYW1wbGUp
OworfQorCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlKQogewogICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3RlU2FtcGxlLnN1cmZhY2Uo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNzI1YjNkMjZiNzFjNzg4
NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkwZmU5ZWI2NjRiYTkzMjFkN2E4YmRlNWQ5
ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMCwxMCAr
MzAsMTIgQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9N
ZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwpAQCAtNDIsMTEgKzQ0
LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA6IHB1
YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlm
aWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklk
ZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYmKTsKQEAgLTczLDcgKzc3
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lk
IHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVDVihXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVz
KCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3Jl
JiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZhdGU6CiAgICAgLy8gV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAgICB2b2lkIHNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAorICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY29u
c3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAg
ICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKKyAgICBS
ZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7Cisg
ICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVTUzsKKwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5p
bgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2ZjdlY2RmLi4zY2ExZjkz
MjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyArMzIsOCBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
VXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQogICAgIEZsdXNoQW5kUmVt
b3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUg
c2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJl
ZmVyZW5jZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCiAgICAgUGxheSgpCiAg
ICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5j
cHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMzNGI1ZDE1MS4uNzZlNzk5
YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIExheWVyQ3Jl
YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgaGlkZVJvb3RMYXll
ciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKGlk
ZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGxheWVyID0g
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUobV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgYXV0
byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVyUmVmZXJlbmNlLmluaXRp
YWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9
IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewogICAgICAgICAgICAgZGlz
cGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0gV1RG
TW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgpIG11dGFibGUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggN2ViZmE1MTZiNTAzMzZk
MzY4N2Y3ZWNkZDE3ZThlN2ViZDFjZDlkNy4uYWJjZjI1OTIwMjVjODAwYTUyMzA4MGRmMTZhNTlk
OWRkYThmYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0zNDIsNiArMzQyLDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcicsCisgICAgICAgICdXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVJlYWRSZWZlcmVuY2UnLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
JywKQEAgLTg3Nyw2ICs4ODAsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVh
dHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCIn
XSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
IiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyciSWRlbnRpZmllclR5cGVz
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBiYWJhMGIwODg3N2M0NzJh
NTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUz
ZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogCisjaW5j
bHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IFNlbmRNZXNzYWdlQ29u
dGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwogICAgIHN0ZDo6YXRvbWlj
PGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBv
bmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpAQCAtMTE1LDcgKzExOCw5
IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAg
ICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1
ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5l
Y3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3Zl
KGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5nSVBDVGVzdHMrKzsKICAg
ICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShk
cml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwogICAgIH0pOwogfQogCkBA
IC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQogICAgIH0K
IH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBvbmdvaW5nSVBDVGVzdHM7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENU
ZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1
YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2ZDQzOTJjM2ZhN2I1Zjdm
NWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rl
c3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIAog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYg
KzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNl
bnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQor
CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rpb24gdG8gY2hlY2sgd2hl
biBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tp
cHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wg
aXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7CkBAIC01Miw2ICs1OSwx
MyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNl
IH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTI1N2Q4NDI1YmEwNDM2ZDQ3MzlhOThjNDVlOTIzYTNmMjkxNzhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUeXBlIGZvciB0aGUga2V5
IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVuY2VzIHRvIG9iamVjdCBz
dGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2
ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1f
dmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDog
bV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9Cisg
ICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWlu
dDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVyICYm
IG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmll
ci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KK3ByaXZhdGU6CisgICAgVCBtX2lk
ZW50aWZpZXI7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3N0cnVjdCBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSB7CitwdWJs
aWM6CisgICAgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50
NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAg
ICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8
VD4gcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiB9
OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7
CisgICAgICAgIGVuY29kZXIgPDwgbV92ZXJzaW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVhZFJl
ZmVyZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFQ+IGlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZl
cnNpb247CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVy
c2lvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVy
ZW5jZSB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqdmVyc2lvbiB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9
OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyV3JpdGVS
ZWZlcmVuY2UgeworcHVibGljOgorICAgIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZShU
IGlkZW50aWZpZXIsIHVpbnQ2NF90IHZlcnNpb24sIHVpbnQ2NF90IHBlbmRpbmdSZWFkcykKKyAg
ICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVy
c2lvbikKKyAgICAgICAgLCBtX3BlbmRpbmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAg
IH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAg
ICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgdWlu
dDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAg
ICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2U8VD4gcmV0aXJlKCkgY29uc3QgJiYgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVy
c2lvbiArIDEgfTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9p
ZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAgICAgICAgZW5jb2Rl
ciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U+
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxU
PiBpZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwZW5kaW5nUmVhZHM7CisKKyAgICAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyCisgICAgICAgICAgICA+PiB2ZXJzaW9uCisgICAgICAgICAg
ICA+PiBwZW5kaW5nUmVhZHM7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlIHsgV1RGTW92ZSgqaWRlbnRpZmllciksICp2ZXJzaW9uLCAqcGVu
ZGluZ1JlYWRzIH07CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAg
IHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3BlbmRpbmdSZWFkcyB7
IDAgfTsKK307CisKKy8vIENsYXNzIHRvIGdlbmVyYXRlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5j
ZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVyLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik7CitwdWJsaWM6CisgICAgdXNpbmcg
UmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+OworICAgIHVz
aW5nIFdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPFQ+Owor
ICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisKKyAg
ICBleHBsaWNpdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcihUIGlkZW50aWZpZXIp
CisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKyAgICAv
LyBUaHJlYWQgc2FmZS4KKyAgICBSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgbV9wZW5kaW5nUmVhZHMrKzsKKyAgICAgICAgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBt
X3ZlcnNpb24gfTsKKyAgICB9CisgICAgLy8gTm90IHRocmVhZCBzYWZlLiBDbGllbnQgbXVzdCBj
b29yZGluYXRlIHdyaXRlcyBhbmQgcmVhZHMgYW55d2F5LgorICAgIFdyaXRlUmVmZXJlbmNlIHdy
aXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJz
aW9uKyssIG1fcGVuZGluZ1JlYWRzLmV4Y2hhbmdlKDApIH07CisgICAgfQorICAgIFQgaWRlbnRp
ZmllcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIH0K
K3ByaXZhdGU6CisgICAgY29uc3QgVCBtX2lkZW50aWZpZXI7CisgICAgbXV0YWJsZSBzdGQ6OmF0
b21pYzx1aW50NjRfdD4gbV9wZW5kaW5nUmVhZHMgeyAwIH07CisgICAgbXV0YWJsZSB1aW50NjRf
dCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJl
bmNlKQoreworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS5pZGVudGlmaWVyKCkpOworICAgIGFk
ZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJzaW9uKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9i
amVjdElkZW50aWZpZXJSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIs
ICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPiYgcmVmZXJl
bmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZSgiIDw8IHJl
ZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UudmVyc2lvbigpIDw8ICIp
IjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIg
PDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS5wZW5kaW5nUmVhZHMo
KSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit9CisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZTxUPj4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0czxUPjo6ZW1wdHlWYWx1ZUlzWmVybzsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb21wdXRlSGFzaChyZWZlcmVuY2UpOworICAgIH0KKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGEsIGNv
bnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgYikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTI5YjdlNDY2YzJjMmI0ZTk4
ZmQ1YjUzNmU4Yzk4NjdiM2ZiODBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUgIk9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQ29udGFpbmVyIHRoYXQgaG9sZHMgaWRl
bnRpZmllciAtPiBvYmplY3QgbWFwcGluZyBiZXR3ZWVuIHR3byBwcm9jZXNzZXMuCisvLyBVc2Vk
IGluIHNjZW5hcmlvcyB3aGVyZSB0aGUgaG9sZGVyIHByb2Nlc3MgcHJvY2Vzc2VzIG1lc3NhZ2Vz
IHdpdGggdGhlIG9iamVjdCByZWZlcmVuY2VzIGluIG11bHRpcGxlCisvLyB0aHJlYWRzLiBgVGhy
ZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNrcyB0aGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0
byB0aGUgY29udGVudCBwb2ludGVkCisvLyBieSBhIHBhcnRpY3VsYXIgaWRlbnRpZmllci4KKy8v
IFBlbmRpbmcgcmVhZHMgbWF5IGJsb2NrIG5ldyB3cml0ZXMuIEFsdGVybmF0aXZlbHkgbmV3IHdy
aXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0aGUgcmVhZHMsCisvLyBmb3IgZXhhbXBsZSBpbiBjb3B5
LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8vIFBlbmRpbmcgd3JpdGVzIGJsb2NrIHJlYWRzLgorLy8g
Q3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkgZm9yIHJlYWQtb25seSAoY3JlYXRlLXJlYWQtZGVz
dHJveSkgb3IgY29weS1vbi13cml0ZSB0eXBlcywKKy8vIGUuZy4gbm8gdHdvLXBoYXNlIGdldCgp
IG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
ZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK2NsYXNzIFRocmVhZFNhZmVPYmplY3RIZWFw
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50
aWZpZXIsIEhlbGRUeXBlPj4geworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSB0
eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVh
ZFJlZmVyZW5jZTsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+OjpXcml0ZVJlZmVyZW5jZTsKKyAg
ICB1c2luZyBSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlcjxJZGVudGlmaWVyPjo6UmVmZXJlbmNlOworCisgICAgLy8gV2FpdHMgdW50aWwgYSB3cml0
ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4gcmV0aXJlcyB0aGUgcmVhZCBvcgorICAg
IC8vIHRpbWVzIG91dC4KKyAgICBIZWxkVHlwZSByZXRpcmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6
OlRpbWVvdXQpOworCisgICAgLy8gSW5zZXJ0cyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmplY3Qg
b3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFuZCB0aGVuIHJldGlyZXMgdGhlIHdyaXRlIG9yCisgICAg
Ly8gdGltZXMgb3V0LgorICAgIC8vIElmIHRpbWVvdXQgaXMgcGFzc2VkLCB3YWl0cyB1bnRpbCBw
ZW5kaW5nIHJlYWRzIGFyZSBkb25lLgorICAgIC8vIEl0IGlzIGEgY2FsbGVyIGVycm9yIHRvIG5v
dCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9sZCBvYmplY3QuCisgICAgdm9pZCByZXRpcmUoV3JpdGVS
ZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBuZXdPYmplY3QsIHN0ZDo6b3B0
aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisKKyAgICB2b2lkIHJldGlyZVJlbW92ZShXcml0ZVJlZmVy
ZW5jZSYmKTsKKworICAgIHZvaWQgY2xlYXIoKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX29iamVj
dHNMb2NrOworICAgIENvbmRpdGlvbiBtX29iamVjdHNDb25kaXRpb247CisgICAgc3RydWN0IFJl
ZmVyZW5jZVN0YXRlIHsKKyAgICAgICAgdWludDY0X3QgcmV0aXJlZFJlYWRzIHsgMCB9OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaW5hbFJlYWQ7IC8vIFJlbW92ZSBhZnRlciBg
ZmluYWxSZWFkYCByZWFkcy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4gb2JqZWN0
OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25lLgorCisgICAgICAgIFJlZmVyZW5jZVN0YXRlKCkgPSBk
ZWZhdWx0OworICAgICAgICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0ZShIZWxkVHlwZSYmIG9iamVj
dCkKKyAgICAgICAgICAgIDogb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIC8vIFRvbWJzdG9uZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgZXhwbGlj
aXQgUmVmZXJlbmNlU3RhdGUodWludDY0X3QgZmluYWxSZWFkKQorICAgICAgICAgICAgOiBmaW5h
bFJlYWQoZmluYWxSZWFkKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9OworICAgIEhhc2hN
YXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VTdGF0ZT4gbV9vYmplY3RzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9vYmplY3RzTG9jayk7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0
eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRUeXBlIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZp
ZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJlYWRSZWZlcmVuY2UmJiByZWFkLCBJUEM6OlRpbWVvdXQg
dGltZW91dCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRv
IHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5maW5kKHJlYWQucmVmZXJlbmNlKCkpOwor
ICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvJiBz
dGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3QpIHsKKyAgICAg
ICAgICAgICAgICBIZWxkVHlwZSByZXN1bHQgPSAqc3RhdGUub2JqZWN0OworICAgICAgICAgICAg
ICAgIHN0YXRlLnJldGlyZWRSZWFkcysrOworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5maW5h
bFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXRlLmZpbmFsUmVhZCA+PSBz
dGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBUcnVzdGVkIGFzc2VydCBiZWNhdXNlIHRoaXMgaXMgZW5z
dXJlZCBvbiBgZmluYWxSZWFkYCBhc3NpZ25tZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAo
c3RhdGUuZmluYWxSZWFkID09IHN0YXRlLnJldGlyZWRSZWFkcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1f
b2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGltZW91dC5kZWFkbGlu
ZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBI
ZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+
OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwgc3RkOjpvcHRpb25hbDxIZWxkVHlwZT4m
JiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0PiB0aW1lb3V0KQoreworICAgIGNv
bnN0IGJvb2wgd2FpdEZvclBlbmRpbmdSZWFkcyA9IHRpbWVvdXQuaGFzX3ZhbHVlKCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8g
aXQgPSBtX29iamVjdHMuZmluZCh3cml0ZS5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChpdCAh
PSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZhbHVl
OworICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCAmJiBzdGF0ZS5vYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IGBmaW5hbFJlYWRgIGlzIGFzc2lnbmVkIG9u
IHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uIHdpdGggd3JpdGVzLgorICAgICAg
ICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPiB3
cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdyaXRlIHVuZGVyZmxv
dzogbW9yZSByZWFkcyBoYXZlIGJlZW4gZG9uZSB0aGFuIHRoZSBzZW5kZXIgY2xhaW1zIGlzIHRo
ZSBtYXhpbXVtLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEl0IGlz
IGxpa2VseSBhIGNhbGxlciBlcnJvciB0byB0cnkgdG8gYWRkIGEgbmV3IHJlZmVyZW5jZSB3aXRo
IHRoZSBzYW1lIGNsaWVudCBvYmplY3Qgd2l0aG91dAorICAgICAgICAgICAgLy8gd2FpdGluZyBm
b3IgcGVuZGluZyByZWFkcyBvbiB0aGUgb2xkIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIEFTU0VS
VCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICFzdGF0ZS5vYmplY3QgfHwgKnN0YXRlLm9iamVjdCAh
PSBvYmplY3QpOworCisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRl
LnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0Rm9yUGVuZGluZ1JlYWRzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA8IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5maW5hbFJlYWQgPSB3cml0ZS5wZW5kaW5nUmVhZHMoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVuZGlu
Z1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAg
ICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJldGlyZSgpLCBSZWZlcmVuY2VT
dGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG5ld1N0
YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3ZlKCpvYmpl
Y3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5vYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRoZSByZXRp
cmVkIHdyaXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJzdG9uZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3Rz
Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRGb3JQZW5k
aW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAvLyBXcml0
ZSB0aGUgdG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5yZWZlcmVu
Y2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAgICAgICAg
ICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZNb3ZlKHdy
aXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOworICAg
ICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYgKCFt
X29iamVjdHNDb25kaXRpb24ud2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRlYWRs
aW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJl
YWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShXcml0
ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sKKyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZp
ZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlm
aWVyLCBIZWxkVHlwZT46OmNsZWFyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmplY3Rz
TG9jayB9OworICAgIG1fb2JqZWN0cy5jbGVhcigpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2JiYjk1
ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4ZjczMTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3Yzlh
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBBdG9tU3RyaW5nIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QKICAg
ICByZXR1cm4gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3JtU2Ft
cGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBs
ZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIHJl
dHVybiB7CiAgICAgICAgIFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
U2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZlOWZi
MWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMzNmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRhY2E1
NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJhbmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNrSUQo
KSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1l
JikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1N2VmM2IxNGVhZjJjMTA5MjA5
OGVlOTQzMmY1MDhjNjExZTU4ZTM1Li44ZDUyOWE5OThmMGM4M2FiMDZhZGI3MmFkMWRjNjBkZmI4
ZWZmMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5jcHAKQEAgLTczNiw2ICs3MzcsNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmNwcApAQCAtODcyLDYgKzg3NCw4IEBAIFJlbW90ZURldmljZU1lc3NhZ2VS
ZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJl
bW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVQaXBlbGluZUxheW91
dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzdjMzFiYzU1N2I1NWQ1MTcwNWZjMzlk
N2U2NzljOTRjNmEwYWYzLi5lODc4YzVlZWVjNmYyMmU1ZmYwMzIwNjNhNjRkNjI5NWFmMzhmMmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUwODIsNiArNTA4MiwxMyBAQAogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVz
c2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5
N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
UENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjUwRTk4MDI3NzFG
NkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElQQ1Rlc3Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyog
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEyMjdB
N0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0Zy
YW1lUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNE
QTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBC
NjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1
MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEwNyw2ICs1MTE0LDcgQEAKIAkJN0JDRjcw
Q0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzM0YyNzU2NTJFQTAwMzg2NTlF
IC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUgLyogQXV4aWxpYXJ5UHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JF
MzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhD
RDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc1OCw2ICs2
NzY2LDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVENDY0QkYwMDg2MkZEOCAvKiBSZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0Q4MjUyRDQyNUQ0
NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCAq
LywKKwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9G
cmFtZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkxREQyQTYzQTI1NURFNkQx
MDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMUREMkE2
MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCAqLywKIAkJ
CQkxREQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbiAqLywKQEAgLTY4NDgsNiArNjg2MCw4IEBACiAJCQkJMUREMkE2NjYyNTYxRUQw
NDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CTA3RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgKi8s
CiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90ZVRleHRUcmFja1Byb3h5Lmgg
Ki8sCisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4NDIzQ0MyQzA5MDA2ODBEN0MgLyog
UmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU4NTIzQ0MyQzA5MDA2ODBE
N0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDdFMTlGMDUyM0Q0REM4ODAw
OTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggKi8sCkBAIC03
MjI1LDYgKzcyMzksNyBAQAogCQkJCTFBRENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0
aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5h
dmlnYXRpb25BY3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQzUyN0FFNTAx
QTAwNkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmggKi8sCiAJCQkJ
N0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovLAogCQkJ
CTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJCQkJ
QkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8s
CkBAIC03MjY0LDYgKzcyNzksNyBAQAogCQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0Nzc1MCAvKiBT
aGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0Qw
MDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJRjRBN0NFODQyNjY3RUI0RTAw
MjI4Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5oICovLAorCQkJCTdCRTM3RjZG
MjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oICovLAogCQkJCTJGRDQz
QjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0
M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0YS5oICovLAogCQkJCTJGODA5
REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IGUyOWY0YmQ1NjEzMmVjZDY3MTcxYmMzN2NiMmNjNTYxYmUxMjkzNTkuLjVjNWRl
MTgyMTI2N2JkODU2ZGVlNTc3MTY1ZjQ1NGNiZDQyNDI3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC03Niw2
ICs3NiwxMSBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5o
IgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlN
ZXNzYWdlcy5oIgpAQCAtMjA4LDYgKzIxMywxMCBAQCBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlYwog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQogICAgICAgICBy
ZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGFuZGxlTWVzc2FnZVRvUmVtb3Zl
ZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTVMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aGFuZGxlTWVzc2FnZVRvUmVtb3Zl
ZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOworI2VuZGlmCiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvU2Vzc2lvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCA3YWUxZWU3NmRjNGIw
N2M0MDNmNjBiOGFkMTNkYWQ5Yjg3YmRlZDBhLi4wMGQ0YThiZGRjNWMwNDFmZmIwMzk0OTAyZTk3
OTk3MTUxNWMzNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTE4LDYgKzEyMiwyMSBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciYgYgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CitSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICBpZiAoaXND
b250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIG1lZGlhU2Ft
cGxlID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoKm1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24pOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShtZWRpYVNhbXBs
ZS0+d3JpdGUoKSkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAgICAgICBtYXJrQ29udGV4
dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBtZWRp
YVNhbXBsZTsKK30KKyNlbmRpZgorCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCAyOWYwMTk4NzE5NTU5
OTg3OTJlZTc3OTVkOWFhNjBjMmYzOTczOTcxLi41ZDFjYWIyMThmNzg1Y2JhMTE0NmE4OTEyMmIz
MGQxMGNjNjgzMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApA
QCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQgc3ludGhlc2l6
ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkg
ZmluYWw7CiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXll
ciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRl
eCBmZjdlMTQ4ZDZiNWVlYmEwMjRhOTNlM2ViMjEyNjJiYWI3MjI4MDhjLi4wYjhiYmExNmNmZWMx
NmIyYmExODcxNzFhZmQ5YjNiMzEzMWQ2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzQsNyArMzQsNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJm
YWNlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05OSw5
ICs5OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOwotI2VuZGlmCiBwcml2YXRlOgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgOiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVz
LCByZW5kZXJpbmdCYWNrZW5kKQpAQCAtMTE0LDIwICsxMTAsNiBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi1SZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUoKQotewotICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KLSAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNw
bGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVs
QnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwotfQotI2Vu
ZGlmCi0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9y
RGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI1MDI2MTVkYTI3MmIzYmY0NmNmNDY0OTYxYjdmOGVi
MmExZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyLmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2VudW0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllclR5cGU+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgPSBPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcg
UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8UmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5j
ZVRyYWNrZXIgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllcj47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTAyNmYxYTRkNjQ1ZmVjYzJhNjFkNDA0MGFh
YTdiNDFkNTA1MTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0wLDAgKzEsMTY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJlbW90ZVZpZGVvRnJhbWVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpKTsKK30KKworUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgbWVkaWFTYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLAorICAgICAgICBtZWRpYVNh
bXBsZS52aWRlb01pcnJvcmVkKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24o
KQorICAgIH07Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9yZWZlcmVuY2VUcmFja2VyKGlkZW50
aWZpZXIpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsK
KyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKK30KKworUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoKQorICAgIDogbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbihudWxscHRyKQorICAgICwgbV9yZWZlcmVuY2VUcmFja2VyKFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQoreworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkoKQoreworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNz
SWZOZWVkZWQoKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VU
cmFja2VyLmlkZW50aWZpZXIoKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNl
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d3JpdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jl
ZmVyZW5jZVRyYWNrZXIud3JpdGUoKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsKK30KKworTWVkaWFUaW1lIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJ
bml0aWFsaXplZCgpOworICAgIHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7Cit9CisKK1dlYkNv
cmU6OlBsYXRmb3JtU2FtcGxlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUo
KSBjb25zdAoreworICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHlUeXBlLCB7IH0gfTsKK30KKworTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uKCkgY29uc3QKK3sKKyAgICAo
dm9pZCkgd2FpdEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fdmlkZW9Sb3RhdGlv
bjsKK30KKworYm9vbCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25z
dAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICByZXR1cm4gbV92
aWRlb0lzTWlycm9yZWQ7Cit9CisKK3VpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlk
ZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBi
YXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQor
Citib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aGFuZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3Rp
bmF0aW9uKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICAv
LyBTa2lwIG1lc3NhZ2VzIGludGVuZGVkIGZvciBhbHJlYWR5IHJlbW92ZWQgbWVzc2FnZVJlY2Vp
dmVyTWFwKCkgZGVzdGluYXRpb25zLgorICAgIC8vIFRoZXNlIGFyZSBidXNpbmVzcyBhcyB1c3Vh
bC4gVGhlc2UgY2FuIGhhcHBlbiBmb3IgZXhhbXBsZSBieToKKyAgICAvLyAgLSBUaGUgb2JqZWN0
IGlzIGNyZWF0ZWQgYW5kIGltbWVkaWF0ZWx5IGRlc3Ryb3llZCwgYmVmb3JlIFdhc0luaXRpYWxp
emVkIHdhcyBoYW5kbGVkLgorICAgIEFTU0VSVChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQ6Om5hbWUoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVW
aWRlb0ZyYW1lPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byBn
cHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlv
biwgbnVsbHB0cikpIHsKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKHdyaXRlKCkpLCAwLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgfQorfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0lu
aXRpYWxpemVkKCkgY29uc3QKK3sKKyAgICBpZiAobV93YXNJbml0aWFsaXplZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAg
aWYgKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS53YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpXYXNJbml0aWFs
aXplZD4oaWRlbnRpZmllcigpLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRl
ZCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikKK3sKKyAgICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQoc3RkOjpv
cHRpb25hbDxQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCit7CisgICAgbV93YXNJbml0aWFsaXpl
ZCA9IHRydWU7CisgICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm47CisgICAgLy8g
RklYTUU6IFdoZW4gc291cmNlIGZhaWxzIHRvIHByb2R1Y2UgYSBzYW1wbGUgZHVlIHRvIHNvbWUg
ZXJyb3IsIHRoZSBwcm9wZXJ0aWVzIGFyZSBkaXNlbmdhZ2VkLgorICAgIC8vIFdlIHNob3VsZCBw
ZXJoYXBzIGNoZWNrIHRoaXMgYXQgdGhlIHN1Ym1pdCB0aW1lLgorICAgIG1fcHJlc2VudGF0aW9u
VGltZSA9IHByb3BlcnRpZXMtPnByZXNlbnRhdGlvblRpbWU7CisgICAgbV92aWRlb0lzTWlycm9y
ZWQgPSBwcm9wZXJ0aWVzLT52aWRlb0lzTWlycm9yZWQ7CisgICAgbV92aWRlb1JvdGF0aW9uID0g
cHJvcGVydGllcy0+dmlkZW9Sb3RhdGlvbjsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOTVlYWFmNTVkYzgzOTIxNWYwNWNiNjZhZGE0MjMxZDY0MzBiNmJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZS5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94
eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSk7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIHByb21pc2Ugb2YgYSBN
ZWRpYVNhbXBsZSB0aGF0IGV4aXN0cyBpbiBHUFUgcHJvY2Vzcy4gVGhlIG9iamVjdCBjYW4gYmUg
dXNlZCBhcyBvdXQgcGFyYW1ldGVyIG9mIHRoZSBjcmVhdGlvbiBtZXNzYWdlLgorICAgIHN0YXRp
YyBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mKTsKKworICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wgdmlkZW9Jc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAg
ICAgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9
OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAg
c3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYp
OworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJh
bWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3Zl
cnJpZGVzLgorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Cisg
ICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2
aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBG
SVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3Qg
YmUgbmVlZGVkLgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFs
OworCisgICAgc3RhdGljIGJvb2wgaGFuZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworcHJpdmF0ZToKKyAgICBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllcik7CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KCk7CisgICAgdm9pZCBkaXNjb25uZWN0
R1BVUHJvY2Vzc0lmTmVlZGVkKCkgY29uc3Q7CisgICAgYm9vbCB3YWl0Rm9yV2FzSW5pdGlhbGl6
ZWQoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9z
ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisgICAg
dm9pZCB3YXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+JiYpOworICAgIHN0
YXRpYyBpbmxpbmUgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworCisgICAgbXV0
YWJsZSBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiB7IG51bGxw
dHIgfTsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciBtX3JlZmVyZW5jZVRy
YWNrZXI7CisgICAgbXV0YWJsZSBib29sIG1fd2FzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAg
IE1lZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWU7CisgICAgYm9vbCBtX3ZpZGVvSXNNaXJyb3Jl
ZCB7IGZhbHNlIH07CisgICAgVmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBWaWRlb1Jv
dGF0aW9uOjpOb25lIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IHZp
ZGVvSXNNaXJyb3JlZAorICAgICAgICA8PCB2aWRlb1JvdGF0aW9uOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJv
cGVydGllcz4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0aW9u
VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHZpZGVvSXNNaXJyb3JlZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFZpZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgZGVjb2RlciA+PiBw
cmVzZW50YXRpb25UaW1lCisgICAgICAgID4+IHZpZGVvSXNNaXJyb3JlZAorICAgICAgICA+PiB2
aWRlb1JvdGF0aW9uOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpwcmVzZW50
YXRpb25UaW1lKSwgKnZpZGVvSXNNaXJyb3JlZCwgKnZpZGVvUm90YXRpb24gfTsKK30KKworfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1l
ZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0g
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6VmlkZW9GcmFtZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eVR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjkzMDA2NGE2
MWM4ZTYzZTU2YzJlMzY2NjZjN2M1OTc0MDIxNWU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJh
bWVQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBXYXNJbml0aWFsaXplZChzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IDIxOWE1NWRm
MWMyOWZkMWM2ZjkzMzYxMWEyOTI1YjVjM2MwNmUxNzAuLjE0ZjRiNTJhN2U1YWE5ZjhjNDQxNWMx
OTI3NmQ1NmIwMWMzOWFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5o
IgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC00
OSwxMiArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4g
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGwKIAogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciYgbWFuYWdlciwgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpD
bGllbnQmIGNsaWVudCkKICAgICA6IFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihj
bGllbnQpCisgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICwgbV9tYW5hZ2VyKG1hbmFn
ZXIpCi0gICAgLCBtX2Nvbm5lY3Rpb24oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKQogICAgICwgbV9pZGVudGlmaWVyKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiB7CiAgICAgbWFu
YWdlci5hZGRMYXllcigqdGhpcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjppbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzgsNyArODAsNyBA
QCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0TG9nSWRlbnRpZmllcihTdHJpbmcm
JiBsb2dJZGVudGlmaWVyKQogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBkaXNjb25uZWN0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6UmVsZWFzZUxh
eWVyIHsgbV9pZGVudGlmaWVyIH0sIDApOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1f
bWFuYWdlci0+cmVtb3ZlTGF5ZXIoKnRoaXMpOwpAQCAtMTQwLDYgKzE0MiwxMyBAQCB2b2lkIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxl
KQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpczxSZW1vdGVWaWRl
b0ZyYW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlU2FtcGxlID0gZG93
bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpOworICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1
ZVNhbXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1w
bGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKQEAgLTE0OCw3
ICsxNTcsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpFbnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpFbnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCkBA
IC0xNzAsMTEgKzE3OSwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0RGlk
RmFpbChib29sIHZhbHVlKQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiB7CisgICAgZGlz
Y29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwgPSB0
cnVlOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBp
ZiAoYXV0byogZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIG51bGxwdHIpKQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmgKaW5kZXggNTYzNjlhZGRmMGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4uMDQ0
NGVjZjJiODYyNzk0NDMyMTExM2U2OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiwg
V2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lkIGRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJDb3Jl
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRl
Um9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKQEAgLTc2LDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERpZEZh
aWwoYm9vbCk7CiAgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVm
KTsKIAorICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwog
ICAgIFdlYWtQdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwog
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZjkzOGY0ZDZhNGVlZTM2Y2E2MGUzYzky
ZDlkOGZmZjA4MGI2NWRlLi45OTUyYTNlMDFjMTE1MmMyMzE5NjA4ZjBjZWE1M2E3Y2Y4Y2VkZGVi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjItMDItMDcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJl
cHJlc2VudCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBw
cmVzZW50IGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTA2ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI4ODg3OCkgd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLmxheW91dF90ZXN0X2Zp
bmRlcl9sZWdhY3lfdW5pdHRlc3QuTGF5b3V0VGVzdEZpbmRlclRlc3RzIHRlc3RzIGFyZSBmYWls
aW5nIHdpdGggV2luZG93cyBQeXRob24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAz
MGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zMzI1NzNjOWRiMmEyZjA2
MDE1ZGI5Y2RlNWJlMjI5Y2EzNDk1MDY4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBA
IC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91
cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09BKQor
I2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkg
LT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBjb250
ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAh
VVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
KSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0
cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRp
YShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4
dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZv
cm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNlbmRp
ZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpAQCAtMjMyLDcg
KzIzOCw3IEBAIGRlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikg
LT4gT3B0aW9uYWxbY3BwX3R5cGVfY29udGFpbmVyXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAg
ICBjb250YWluZXJfbmFtZSA9IG1bMV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJlIGNvbnRhaW5l
cnMgZXhjZXB0IHRoZXNlIGJlbG93LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRy
JywgJ1JlZiddOgorICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZicsICdS
ZXRhaW5QdHInLCAnc3RkOjpvcHRpb25hbCddOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRl
bXBsYXRlcyA9IG1bMl0KICAgICBhcml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYsMTMgQEAgY2xh
c3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHdl
YmtpdF9pcGNfdHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQogICAgICAgICAgICAgICAg
IGFzc2VydChpc2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkK
ICAgICAgICAgICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJS
ZXBseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYu
dHlwZSl9IHtzdHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHlu
YW1pY19zcGFuKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0g
W2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRlcyBhIGRhbmds
aW5nIHJlZmVyZW5jZSBzcGFuPGludCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisgICAgICAgICAg
ICAgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4
OQorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50
eXBlKX0ge3N0cih2Lm5hbWUpfSB7eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAgICAgICAgc2Vs
Zi5vdXRfZXhwcnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAgICAgICAgICAg
ICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYu
aW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0u
YnVmU2l6ZSIpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxl
TWFwLmNwcAppbmRleCBkMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4Li5j
NDVjNjdhMzE2NmJmZmI5ODc3YmMwZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcsNyArNTcsNiBA
QCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RlY29kZVRpbWU7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV90cmFja0lEOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmlu
ZyYgdHJhY2tJRCkgZmluYWwgeyBtX3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVzZW50
YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1l
JiBvZmZzZXQpIGZpbmFsIHsgbV9wcmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsgbV9kZWNvZGVU
aW1lICs9IG9mZnNldDsgfQpAQCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjcmVhdGUobV9wcmVzZW50YXRpb25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVyYXRpb24sIHN0
YXRpY19jYXN0PFNhbXBsZUZsYWdzPihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5nKSk7CiAgICAg
fQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsg
fQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQ
bGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9u
ZSwgeyBudWxscHRyIH0gfTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451346</attachid>
            <date>2022-02-09 01:12:08 -0800</date>
            <delta_ts>2022-02-09 03:23:07 -0800</delta_ts>
            <desc>WIP with CaptureSampleManager</desc>
            <filename>bug-236099-20220209111203.patch</filename>
            <type>text/plain</type>
            <size>140535</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYTc2YzY2MTA1MWVk
NGRkYzY1MzEyOTdkODE4Y2UyMjg2Y2ZiZS4uZDI0ZGI0YmQ1NGE2MTkwYjBkOGFkNTA2ZDEwYzc2
N2IyNDRhYjI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmlkZW9GcmFtZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbSwgYmFzZSBjbGFzcyBmb3IgTWVkaWEgU3RyZWFtIHZpZGVvIGZyYW1lcy4K
KyAgICAgICAgQ3VycmVudGx5IGluaGVyaXRzIGZyb20gTWVkaWFTYW1wbGUsIGJ1dCBsYXRlciB3
aWxsIHJlbW92ZSB0aGUgTWVkaWFTYW1wbGUuCisKKyAgICAgICAgVGhlIFdlYkNvcmU6OlZpZGVv
RnJhbWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB2YXJpb3VzIGVudHJ5LXBvaW50cyB0aGF0
CisgICAgICAgIGN1cnJlbnRseSBhcmUgY3VycmVudGx5IHR5cGVkIGFzOgorICAgICAgICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9TYW1wbGVNZXRhZGF0
YSwgLi4uKS4KKyAgICAgICAgVGhlIG5ldyBjbGFzcyBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eSA6IHB1YmxpYyBWaWRlb0ZyYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlc2UgQVBJcy4KKyAg
ICAgICAgVGhlIEFQSSBlbnRyeXBvaW50cyBhcmUgbm90IHlldCBjaGFuZ2VkIGluIG9yZGVyIHRv
IHBhcnRpYWxseSByb2xsIHRoZSBjaGFuZ2VzIGluLgorICAgICAgICBMYXRlciBvbiwgdGhlIGVu
dHJ5cG9pbnRzIHdpbGwgYmUgc2ltaWxhciB0bzoKKyAgICAgICAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9TYW1wbGVNZXRhZGF0YSwgLi4uKS4KKworICAg
ICAgICBSZW1vdmVzIE1lZGlhU2FtcGxlOjpzZXRUcmFja0lEIGFzIHRoYXQgaXMgbm90IHVzZWQu
CisgICAgICAgIENoYW5nZXMgTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgdG8gY29uc3Qs
IHNvIHRoYXQgaXQgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIGNvbnN0IGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GcmFtZTo6ZGVjb2RlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Zy
YW1lOjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjp0cmFj
a0lEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6b2Zmc2V0VGltZXN0YW1wc0J5KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GcmFtZTo6aXNEaXZpc2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6ZGl2aWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmNy
ZWF0ZU5vbkRpc3BsYXlpbmdDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmZsYWdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmJ5dGVSYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpkdW1wIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2Ft
cGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFt
ZXI6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorCiAyMDIyLTAyLTA5
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBv
YnNvbGV0ZSBkZXBlbmRlbmNpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0NDFiZjc1NDBmYTllYzAwZGIwZDJk
NDI2MDdkMTk4YzdjZDVhZWYuLjcxNWIyMjZjZmEzM2VlNzBiMTk3Y2UxOGVjYTYwZDM0Y2IzMTY1
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIyLTAyLTA4ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb250ZW50IHByb2Nlc3M6CisgICAgICAgIEFk
ZCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSwgV2ViQ29udGVudCBwcm9jZXNzIHNpZGUg
cHJveHkgb2JqZWN0IHRoYXQKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDIGNhbiB1c2UuCisKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5
IGNhbiBiZSBzZW50IHRvIHRoZSBHUFVQIGFuZCB0aGUgdGhlIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci4gU28KKyAgICAgICAgdGhlIGNhcHR1cmVkIGNvbnRlbnQgc2hvd3MgaW4gY29tcG9zaXRp
bmcgdGhyb3VnaCB2aWRlbyBlbGVtZW50LgorCisgICAgICAgIEF0IHRoZSBtb21lbnQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGNhbm5vdCBwYWludCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHkgdG8gdGhlCisgICAgICAgIGRvY3VtZW50IENTUyBwYWludGVkIGNvbnRlbnQsIENv
bnRleHQyRCBvciBXZWJHTCBjYW52YXMuCisKKyAgICAgICAgR1BVUDoKKyAgICAgICAgUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAgaXMgYSBtYXBwaW5nCisgICAgICAgIFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIC0+IE1lZGlhU2FtcGxlLiBDdXJyZW50bHkgYWxsIG9iamVjdHMKKyAgICAg
ICAgbWFwIHRvIG5vcm1hbCBNZWRpYVNhbXBsZUFWRk9iakMuCisKKyAgICAgICAgQWRkIGFuIGV4
YW1wbGUgaW1wbGVtZW50YXRpb24gd2hlcmUgYSByZW1vdGUgTWVkaWFTYW1wbGUgaXMgcmV0dXJu
ZWQgYnkgSVBDOgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKS4KKworICAgICAgICBBZGQgYW4gZXhhbXBsZSBpbXBs
ZW1lbnRhdGlvbiB3aGVyZSBhIHJlbW90ZSBNZWRpYVNhbXBsZSBpcyBwcm92aWRlZCBieQorICAg
ICAgICB0aGUgR1BVUDogdGhlIGZyYW1lIGRlbGl2ZXJ5IHZpYSBSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUuIFRoaXMKKyAgICAgICAgaXMgZGlzYWJsZWQg
Zm9yIG5vdy4KKworICAgICAgICBUaGUgR1BVUCBvYmplY3QgcG9pbnRlZCBieSBSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllciBpczoKKyAgICAgICAgLSBjcmVhdGVkIGluIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGluIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIHRocmVhZAorICAgICAgICAtIGNvbnN1bWVkIGluIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSBpbiBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIHRocmVhZAorICAgICAgICAtIHJlbGVhc2VkIGluIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSBpbiBHUFVQIG1haW4gdGhy
ZWFkCisgICAgICAgIEFsbCBvZiB0aGVzZSBtZXNzYWdlcyBhcmUgYXN5bmNocm9ub3VzIGFuZCBj
YW4gYXJyaXZlIHRvIHRoZWlyIGRlc3RpbmF0aW9uIGluIGFueSBvcmRlci4KKyAgICAgICAgRm9y
IGV4YW1wbGUsIHJlcXVlc3QgdG8gcmVsZWFzZSB0aGUgdmlkZW8gZnJhbWUgY2FuIGhhcHBlbiBi
ZWZvcmUgdGhlIG1lc3NhZ2UgdG8gY3JlYXRlIHRoZSB2aWRlbyBmcmFtZSBoYXMgYmVlbgorICAg
ICAgICByZWNlaXZlZC4KKworICAgICAgICBUbyBzb2x2ZSB0aGUgb3JkZXJpbmcgaXNzdWUsIGlu
dHJvZHVjZSByZWFkZXJzLXdyaXRlcnMgcmVmZXJlbmNlIGNvdW50aW5nIG1ldGhvZCB2aWEgZm9s
bG93aW5nIGNsYXNzZXM6CisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNl
CisgICAgICAgICAtIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZQorICAgICAgICAgLSBP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcgorCisgICAgICAgIE9iamVjdElkZW50aWZp
ZXIgaWRlbnRpZmllcyB0aGUgb2JqZWN0LgorICAgICAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVS
ZWZlcmVuY2UgaWRlbnRpZmllcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBjb250ZW50IHBvaW50ZWQg
YnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVkb2NvZGUgZXhhbXBsZXM6CisgICAgICAg
ICAgV3JpdGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gMCwgdmVy
c2lvbiA9IDAgfSBtZWFuczoKKyAgICAgICAgICAgICJFbmQgdGhlIGxpZmUtdGltZSBvZiBpZGVu
dGlmaWVyIDEsIHZlcnNpb24gMC4gQ3JlYXRlIHZlcnNpb24gPSAxIgorICAgICAgICAgICAgVGhp
cyBpcyBob3cgaW5pdGlhbCBvYmplY3QgaXMgYXNzaWduZWQgdG8gdGhlIHJlZmVyZW5jZS4KKyAg
ICAgICAgICBXcml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIgPSAxLCBwZW5kaW5nUmVhZHMgPSA3
NywgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAgICJFbmQgdGhlIGxpZmUtdGltZSBv
ZiBpZGVudGlmaWVyIDEsIHZlcnNpb24gMzIgd2hlbiBhbGwgNzcgcmVhZHMgaGF2ZSBjb21wbGV0
ZWQuIENyZWF0ZSB2ZXJzaW9uID0gMzMiCisKKyAgICAgICAgT2JqZWN0SWRlbnRpZmllclJlYWRS
ZWZlcmVuY2UgZGVjbGFyZXMgYSByZWFkIGRlcGVuZGVuY3kgdG8gYSBzcGVjaWZpYyB2ZXJzaW9u
IG9mIHRoZSBjb250ZW50IHBvaW50ZWQgYnkgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIFBzZXVk
b2NvZGUgZXhhbXBsZXM6CisgICAgICAgICAgIFJlYWRSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0g
MSwgdmVyc2lvbiA9IDMyIH0gbWVhbnMKKyAgICAgICAgICAgIkNvbXBsZXRlIG9uZSByZWFkIG9m
IGlkZW50aWZpZXIgMSwgdmVyc2lvbiAzMiIuCisKKyAgICAgICAgQ3JlYXRlcywgdXBkYXRlcyBh
bmQgZGVzdHJ1Y3Rpb25zIGFyZSBXcml0ZVJlZmVyZW5jZXMuCisgICAgICAgIFJlYWRzIGFyZSBS
ZWFkUmVmZXJlbmNlcy4KKworICAgICAgICBUaGUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXIgY3JlYXRlcyB3cml0ZSBhbmQgcmVhZCByZWZlcmVuY2VzIGluIHRoZSBQcm94eSAtdXNp
bmcgcHJvY2VzcyAoV2ViQ29udGVudCBwcm9jZXNzKS4KKworICAgICAgICBUaGUgYWRkZWQgVGhy
ZWFkU2FmZU9iamVjdEhlYXAgcmVzb2x2ZXMgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMg
aW4gdGhlIHJlYWwgb2JqZWN0IHByb2Nlc3MgKEdQVVAgaW4gdGhpcyBjYXNlKS4KKyAgICAgICAg
UmVhZHMgYW5kIHdyaXRlcyBhcmUgYmxvY2tpbmcgdGhlIHJlcXVlc3RpbmcgdGhyZWFkIGFwcHJv
cHJpYXRlbHk6CisgICAgICAgICAtIFJlYWQgb2YgdW5rbm93biB2ZXJzaW9uIG9mIHRoZSBpZGVu
dGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUgd3JpdGUgY3JlYXRlcyB0aGUgdmVyc2lvbgorICAgICAg
ICAgLSBXcml0ZSBvZiBuZXcgdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9ja3MgdW50aWwg
dGhlIHJlYWRzIGhhdmUgcmV0aXJlZCwgb3IgY3JlYXRlcyBwYXJhbGxlbCwgbmV3IHZlcnNpb24K
KyAgICAgICAgICAgb2YgdGhlIGNvbnRlbnQgaW4gY2FzZSBvZiBjb3B5LW9uLXdyaXRlIHNjaGVt
ZXMuCisKKyAgICAgICAgSW4gdGhpcyBjb21taXQgb2JqZWN0cyBwb2ludGVkIGJ5IFJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyIGFyZSBpbW11dGFibGUgdW50aWwgZGVzdHJveWVkLCBzbyB0aGVy
ZSBpcyBubyB1cGRhdGUgb3IKKyAgICAgICAgY29weS1vbi13cml0ZSBzY2hlbWUgaGVyZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCBjb25z
dCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZFZpZGVvRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJh
bWUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuaDogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4uCisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUNWKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAg
ICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rlcjo6
c3RhcnRNZXNzYWdlVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6Cisg
ICAgICAgICogU2hhcmVkL0lQQ1Rlc3Rlci5oOgorICAgICAgICAoV2ViS2l0Ojppc1Rlc3RpbmdJ
UEMpOgorICAgICAgICAqIFNoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6T2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6Ok9i
amVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjpyZWZlcmVuY2UgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6
OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5j
ZTo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5n
UmVhZHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyOjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZVRyYWNrZXI6OndyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjphZGQpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdU
Rjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+Pjo6aGFz
aCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxUPj46OmVxdWFsKToKKyAgICAgICAgKiBTaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhl
YXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZFNhZmVPYmplY3RIZWFwOjpSZWZl
cmVuY2VTdGF0ZTo6UmVmZXJlbmNlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpIZWxkVHlwZT46
OnJldGlyZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBlPjo6cmV0aXJlUmVtb3ZlKToKKyAg
ICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpjbGVhcik6CisgICAgICAgICogU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0lQQ1Rlc3Rlci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6cHJlc2VudGF0aW9uVGltZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4ZWxGb3Jt
YXQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmhhbmRs
ZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FpdEZvcldhc0luaXRpYWxp
emVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp3YXNJbml0aWFsaXplZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAg
ICAgKGlzVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZVByb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRp
c2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisKIDIwMjItMDItMDgg
IEppZ2VuIFpob3UgIDxqaWdlbi56aG91QHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5c3RhdGlv
bl0gRml4IGJ1aWxkIGJyZWFrIGFmdGVyIHIyODkyNDcgaWYgRU5BQkxFX1NFUlZJQ0VfV09SS0VS
IGlzIG9mZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzMyYjAwMzMwMmMzZWY5NjJmYTcyZmIzZjg4
NGNmNWY4MjcxZDQ5Zi4uMzU5MTZjZDgxYTU3YzZhYzIzZjQ2MjhmMTlmZjMzMDZjNzkxNjY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzQ0LDYgKzEzNDQsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vVXNlckFnZW50LmgKICAgICBwbGF0
Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgKICAgICBwbGF0Zm9ybS9WYWxpZGF0
aW9uQnViYmxlLmgKKyAgICBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKICAgICBwbGF0Zm9ybS9WaWRl
b0ZyYW1lTWV0YWRhdGEuaAogICAgIHBsYXRmb3JtL1ZpZGVvU2FtcGxlTWV0YWRhdGEuaAogICAg
IHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4
Y2QyN2QzN2MyOWQ3OWY0YWIzM2E4YmQ3NWU3YTU4YS4uNjE0MmQyNDNkYjI4ODBjNTFlZmVmNThh
MDRjOWIwYmE3NTNmNjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5MjYsNiArMTkyNiw3IEBAIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBw
bGF0Zm9ybS9UaW1lci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKK3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0
Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKIHBsYXRmb3JtL1dpZGdldC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NmE4
NjUwNGUxNmIzMDMzMzVjZmE5ZjE4ZTE5OTA5ZWIyYTQ0NTIzLi4yZTM2Yjc2MjFiYzkyMzdlNzky
OWIzN2Y3MGVlMGFiZjNhNWJjOTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA3LDYgKzI0MDcsNyBAQAogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I0NDEwRTEyNzk1OEZDNTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NDEwREYyNzk1OEZD
NDAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAv
KiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQw
MDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0
aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTExNTE3LDYgKzExNTE4LDggQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8q
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRl
b0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDQxMEUyMjc5NThGREUw
MDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZWRpYVNhbXBsZVZpZGVvRnJhbWVBVkYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAv
KiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyog
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAxNDQsNiArMzAxNDcsOCBAQAogCQkJCUEz
QUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3MUM5MTYwNzFE
MTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovLAogCQkJ
CTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi8sCisJCQkJ
N0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTdCNUEz
REFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggKi8sCiAJCQkJNDFERUVGQjQyNzE5
QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovLAogCQkJCTQxNjA0OTMxMjc0
M0IwRTcwMEE4NkZBMCAvKiBWaWRlb1NhbXBsZU1ldGFkYXRhLmggKi8sCiAJCQkJNTE1Rjc5NTEx
Q0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAgKi8sCkBAIC0z
NzgxOSw2ICszNzgyNCw3IEBACiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9j
aXR5RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8q
IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0IyNTc5
OUZBMTAwNjU2M0JCIC8qIFZpZGVvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I1QTNEQUYyN0FCRjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVx
dWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggMTgzOTk3MjI2MGY3MGUwMDczNjc5
NzkxNzIyNjI1ZjU2YjI1M2YwOC4uYjRmZTcxNjU3OWZmOGU3ZmMzNDBkODdjYzg5MmYxYmJiNGIw
ZDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC00OSw5ICs0OSwx
MCBAQCBzdHJ1Y3QgUGxhdGZvcm1TYW1wbGUgewogICAgICAgICBDTVNhbXBsZUJ1ZmZlclR5cGUs
CiAgICAgICAgIEdTdHJlYW1lclNhbXBsZVR5cGUsCiAgICAgICAgIEJ5dGVSYW5nZVNhbXBsZVR5
cGUsCisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGUsIC8vIEZJWE1FOiBUbyBiZSBy
ZW1vdmVkIHdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1wbGUuCiAgICAgfSB0eXBlOwog
ICAgIHVuaW9uIHsKLSAgICAgICAgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKKyAgICAg
ICAgY29uc3QgTW9ja1NhbXBsZUJveCogbW9ja1NhbXBsZUJveDsKICAgICAgICAgQ01TYW1wbGVC
dWZmZXJSZWYgY21TYW1wbGVCdWZmZXI7CiAgICAgICAgIEdzdFNhbXBsZSogZ3N0U2FtcGxlOwog
ICAgICAgICBzdGQ6OnBhaXI8TVRQbHVnaW5CeXRlU291cmNlUmVmLCBDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBieXRlUmFuZ2VTYW1wbGU7CkBAIC02Niw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVk
aWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQXRvbVN0cmluZyB0cmFj
a0lEKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmlu
ZyYpID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgPSAwOwpAQCAt
OTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1N5bmNJbmZvID0gMSA8PCAzLAogICAg
IH07CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCA9IDA7CiAKICAgICBzdHJ1Y3QgQnl0
ZVJhbmdlIHsKICAgICAgICAgc2l6ZV90IGJ5dGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZTgxNmVjZDA4Y2I5NTUyNGQ2YWEy
ZDcxYWZjYjlmMGI5MTc4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJh
bWUoKSA9IGRlZmF1bHQ7CisKK1ZpZGVvRnJhbWU6On5WaWRlb0ZyYW1lKCkgPSBkZWZhdWx0Owor
CitNZWRpYVRpbWUgVmlkZW9GcmFtZTo6ZGVjb2RlVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworTWVkaWFUaW1lIFZpZGVvRnJh
bWU6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4geyB9OworfQorCitBdG9tU3RyaW5nIFZpZGVvRnJhbWU6OnRyYWNrSUQoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3NpemVf
dCBWaWRlb0ZyYW1lOjpzaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1l
OjpwcmVzZW50YXRpb25TaXplKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFZpZGVvRnJhbWU6Om9mZnNldFRpbWVzdGFtcHNC
eShjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFZpZGVvRnJhbWU6OnNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBWaWRlb0Zy
YW1lOjppc0RpdmlzYWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4gVmlkZW9GcmFtZTo6ZGl2aWRlKGNv
bnN0IE1lZGlhVGltZSYsIFVzZUVuZFRpbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OworfQorCitSZWY8V2ViQ29yZTo6TWVk
aWFTYW1wbGU+IFZpZGVvRnJhbWU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKK3sK
KyAgICBDUkFTSCgpOworfQorCitNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgVmlkZW9GcmFtZTo6
ZmxhZ3MoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3M6Ok5v
bmU7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gVmlkZW9GcmFt
ZTo6Ynl0ZVJhbmdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGZyb20gdGhlIGJh
c2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKK3sK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMmQ5NTAxMGQzNmViNjJiOWVhZTFiOTk4MzdiODQ3NzE0MWUwNWZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgdmlkZW8gZnJhbWUgZnJvbSBhIGRlY29kZXIsIGNh
cHR1cmUgc291cmNlLCBvciBzaW1pbGFyLgorLy8gRklYTUU6IEN1cnJlbnRseSBmb3IgaW1wbGVt
ZW50YXRpb24gcHVycG9zZXMgaW5oZXJ0cyBmcm9tIE1lZGlhU2FtcGxlIHVudGlsIGNhcHR1cmUg
Y29kZQorLy8gc3RvcHMgcmVmZXJyaW5nIHRvIE1lZGlhU2FtcGxlCitjbGFzcyBWaWRlb0ZyYW1l
IDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+Vmlk
ZW9GcmFtZSgpOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZSgp
OworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgbm90IGludGVuZGVkIHRvIGJl
IHVzZWQgZm9yIHRoZXNlIG9iamVjdHMuCisgICAgLy8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3Zl
cnJpZGVzLgorICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lID0g
VXNlRW5kVGltZTo6RG9Ob3RVc2UpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dCBmaW5hbDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcw
NmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFkNzEuLjliZjRiMGI4ZDVjNDgxYTUzNGZkOTBjZjE2
Yzk1NTlmYjZjZDcxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMzQsNiArMzM0LDkgQEAgdm9pZCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYg
c2FtcGxlKQogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIC8vIEZJWE1FOiBMb2NhbCBwbGF5YmFjayBvZiBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgaXMgbm90IGltcGxlbWVudGVkLgorICAgIGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihz
YW1wbGUpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9IHNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRvIG5v
dyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxhdGVuY3kpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCmluZGV4IDJiYmQ2YTRjYjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5
NTUuLjUxMjY5NmExM2FjNzJhYzg4ZjgwMDg2NTYyZTMxMTA0NWM0MWFjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Nyw2ICs5ODcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBp
ZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
CiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBEb2VzIG5vdCBjdXJyZW50bHkgc3Vw
cG9ydCBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuCisgICAgaWYgKCFpczxNZWRpYVNhbXBsZUFWRk9i
akM+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIG1faW1h
Z2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlw
ZV8zMkJHUkEpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oCmluZGV4IDYzZGI5YzAwM2MwNTE5YzY2NTY2MTIxZTdjNmZiNTFkZjJmNzcxYzEuLjdiZTcz
NTFlNWJhYTdkMjFlNjNmYzQ5OWEyNzEyMzVlY2Y0ZmI5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC01NCwxMyArNTQsMTIgQEAgcHVibGljOgog
ICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbVN0cmlu
ZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0
VHJhY2tJRChjb25zdCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogCiAgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHByZXNl
bnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVy
cmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVy
cmlkZTsKQEAgLTk3LDMgKzk2LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFT
YW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgp
LnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZTsgfQor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDJjZTZjZWRlYTU1ZGZlNDI5NTNjMmM5YmYyZjI2OWVh
MTNjNDZjM2IuLmEzYTMxNTZiZmJhMGNhNzk5MWY2NmRkM2VmMjRjMzI0NGQwZTNkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTE1Myw3ICsx
NTMsNyBAQCBzaXplX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpzaXplSW5CeXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUu
Z2V0KCkpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3Jt
U2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1w
bGU6OkNNU2FtcGxlQnVmZmVyVHlwZSwgeyAuY21TYW1wbGVCdWZmZXIgPSBtX3NhbXBsZS5nZXQo
KSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDllN2MwODk2MDZhN2IxMzlhOWE2MjM4ZTUxZGY4ZjBmZGVkN2QzMzcuLjI3
Zjk3OTVlYTRkYThhNzQ4MjA2OTM3ZDQyM2Q2OGJiNTYzNWJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFt
cE9mZnNldCkKICAgICB9CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlR1N0cmVhbWVy
OjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsg
UGxhdGZvcm1TYW1wbGU6OkdTdHJlYW1lclNhbXBsZVR5cGUsIHsgLmdzdFNhbXBsZSA9IG1fc2Ft
cGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuaAppbmRleCAxZDcxYTMzOTY5Y2ZiYzY3NWRlZWNlYTc4ZTY0ZjJkNjg5OWU0MWVi
Li4zYjVhNjlhYTc2YTZhYWYxN2E1NjE3NmMxZmIyMzlhNGY5MTBiMGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgTWVk
aWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAg
IE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Ry
YWNrSWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVy
cmlkZSB7IG1fdHJhY2tJZCA9IHRyYWNrSWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQog
ICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwpA
QCAtNjIsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBs
ZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRU
aW1lKSBvdmVycmlkZSAgeyByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07IH0KICAgICBSZWY8
TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZsYWdzOyB9
Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
ICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1
Y2I2MGI5ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViLi40YWM2OWFjZDlhMDBjZjZl
MTk5YTMzYWFjNDczZDhjZDg1ZGM1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcApAQCAtNTgsMTAgKzU4LDkgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZGVj
b2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgp
OyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9i
b3guZHVyYXRpb24oKTsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkg
b3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3Mo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92
ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRTaXplKCk7IH0KICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgTWVkaWFT
YW1wbGU6OlNhbXBsZUZsYWdzIE1vY2tNZWRpYVNhbXBsZTo6ZmxhZ3MoKSBjb25zdAogICAgIHJl
dHVybiBTYW1wbGVGbGFncyhmbGFncyk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTW9ja01lZGlhU2FtcGxlOjpw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0geyBQ
bGF0Zm9ybVNhbXBsZTo6TW9ja1NhbXBsZUJveFR5cGUsIHsgJm1fYm94IH0gfTsKICAgICByZXR1
cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMjlmNGM3ODE4MTgwZGUyY2IyNDk1MDcy
ZTg0NjBhNTBhZDM2NGE0MC4uZGM0ZDMxY2Y2ZjQ4NWY4MTEwZmQ5OWEwYTQzYWE3OTQxNjQyOGU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDcgQEAgc2V0KFdlYktpdF9NRVNT
QUdFU19JTl9GSUxFUwogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94
eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkK
ICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5CisgICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcAogCiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKICAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3MjI5YzFiOTg3
MDg4ODFiN2JhZWMzY2Y3YTAyNDczNTcyZTM1ZGUxLi41ZmU2MzQ3MTJjMGVjYmU2MWQwYWYzNzUw
Yzk4YjYyZTk5MjFhN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC02Nyw2ICs2Nyw3IEBAICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTkxLDYgKzE5Miw3IEBAICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IGE4NjMyODE0N2I1NmM1YzU2MGFhNWFiYTM5YmZhZDMyNDVjMjYxNTcuLjkzZTljZjJi
ZDkzNjk0ODkyNDY0NWE5MjA0ZmJhZGFmZjZhYjcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzgxLDYgKzM4MSwxMiBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVNZXNz
YWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVW
aWV3TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCAzNTFmZmFlMGE1ODY2MGMxZDEyZmY5YWNkODc3ZDI3YzUxYzA3ZDMzLi5jM2Mw
ZDVhYzZlMWJhODQwYWRjZTY2YzhjNGE1OTY3Nzg5MDA4Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0yMDEsNiArMjAxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKIAlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlciBcCkBAIC0yOTksNiArMzAwLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCiAJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwIFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkgXAog
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDRkNTI0ZThiODY3OWE4MzBjNDVlYjZiNWJjMTA0Yjc1NDEwNGI2M2UuLjg2MmZmMGM2OTZm
NDY2NTRkMjZmZWUyMjY1N2EzOWMwYTZlMjFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE0MSw2ICsx
NDEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2VuZGlmCiAKQEAgLTIxOCw2ICsyMTksMTYgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3Byb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aXR5KCk7CiAgICAgfQorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwPiB2aWRlb0ZyYW1lT2JqZWN0SGVhcCgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICAv
LyBGSVhNRTogdXNlIHRoZSBmbGFnIHRoYXQgbWVhbnMgImlzIElPS2l0IGRpc2FibGVkPyIgdW50
aWwgdGhlIHJlbW90ZSB2aWRlbyBmcmFtZXMKKyAgICAgICAgLy8gc3VwcG9ydCBwYWludGluZy4K
KyAgICAgICAgaWYgKChmYWxzZSkpCisgICAgICAgICAgICByZXR1cm4gJm1fcHJvY2Vzcy52aWRl
b0ZyYW1lT2JqZWN0SGVhcCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fcHJvY2VzczsKIH07CkBAIC0y
NTcsNiArMjY4LDkgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElO
R19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQ
cm9jZXNzLmF1ZGlvU2Vzc2lvbk1hbmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0
aW9uQ2xpZW50KG1fcm91dGluZ0FyYml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OmNyZWF0ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1l
dGVycy5vdmVycmlkZUxhbmd1YWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlcyhwYXJhbWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3
ICszMTQsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51
bGxwdHI7CiAgICAgfQogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1f
dmlkZW9GcmFtZU9iamVjdEhlYXAucmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQgb2JqZWN0cyByZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBz
byB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3lj
bGUgYnkgZGVzdHJveWluZyB0aGVtLgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5j
bGVhcigpOwpAQCAtOTQxLDggKzk1NywxNSBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnNldENhcHR1cmVBdHRyaWJ1dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKwor
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZp
ZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9i
amVjdEhlYXAuZ2V0KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisK
ICNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bs
YXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdl
U3VtbWFyeUZsYWdzIGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUx
M2E5MzMyNWRkZDRjMzQyYjE0OS4uMTFhY2MwMGM3NGViNWQxMmY4MjgyZDQ0NjYzOTdkODdkN2U5
NzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKworCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4KICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CkBAIC0xNDEsNiArMTQ2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgYWxsb3dzQXVkaW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NB
dWRpb0NhcHR1cmU7IH0KICAgICBib29sIGFsbG93c1ZpZGVvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzVmlkZW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NEaXNwbGF5Q2FwdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzRGlzcGxheUNhcHR1cmU7IH0KKyAgICBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcCYgdmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdDsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMDUs
NiArMzExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFs
c2UgfTsKICAgICBib29sIG1fYWxsb3dzVmlkZW9DYXB0dXJlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OworICAgIElQQzo6U2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0Zy
YW1lT2JqZWN0SGVhcDsKICNlbmRpZgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBlY2I0YjU3NjdjYzlhOGUyNjg2NDZkY2Uz
OWQyNjYyYzM0MmMzM2I2Li45ODAwNTc4YjUyMDg0MzE3ZTg4NjUyZGZjNTJjNzZjYzFjMmZmNDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTENWLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC02OCw2ICs3Miw5IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDCiAgICAgLCBtX3N0cmVhbUNv
bm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRlcmlu
Z0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
ICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLnZpZGVv
RnJhbWVPYmplY3RIZWFwKCkpCisjZW5kaWYKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVx
dWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkKICAg
ICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQ
cm9jZXNzSWRlbnRpZmllcigpKQogewpAQCAtMjIzLDYgKzIzMCwxNCBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXNXaXRoUXVhbGlm
aWVkSWRlbnRpZgogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+
cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1hZ2VCdWZmZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOworICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAt
PmFkZFZpZGVvRnJhbWUoV1RGTW92ZSh3cml0ZSksIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQx
OWUzNmJiMTcuLjEwYzA2MzYxODY3ZDVlODgzZWI5ZDZhODUzMjVjZDkxMGZiZGUzMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIldDQ29udGVu
dEJ1ZmZlcklkZW50aWZpZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKQEAg
LTYxLDYgKzY1LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nlc3Mgc2lkZSBpbXBsZW1lbnRhdGlv
biBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29udGV4dEdMIGNhbGxz
CiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMgYmFzZWQgb24gdGhl
IHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNSw5IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFJlbW90ZVZpZGVvRnJh
bWVXcml0ZVJlZmVyZW5jZSYmKTsKKyNlbmRpZgogICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVk
aWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaW11bGF0
ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZl
bnRGb3JUZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQ
dHI8UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0IFdURl9HVUFSREVEX0JZX0xP
Q0sobV9zdHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZD4gbV9yZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworI2Vu
ZGlmCiAgICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IG1fcmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVTUyBUaHJlYWRBc3NlcnRpb24g
bV9zdHJlYW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpp
bmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4ZTMwMmIyLi40MDMzYzMwMGQ1
NTU4MjI4ZDIwNTI5ZmMyNmQ4ZTFhYTRjYWViZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRp
YShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4
dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZv
cm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2Ft
cGxlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXM+IHByb3BlcnRpZXMpIFN5bmNocm9ub3VzCisjZW5kaWYKICAgICB2b2lkIFNpbXVs
YXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRF
dmVudEZvclRlc3RpbmcgZXZlbnQpCiAKICAgICB2b2lkIE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMzZmQzYTc5ZWMxOTY0ZjMyOGE0NTliOWEwY2U3MzQz
NjdjOWYyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsK
K30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisg
ICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
CisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0
aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2
ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpCit7CisgICAgQVNT
RVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOworfQorCit2b2lkIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQo
bV9jb25zdW1lVGhyZWFkKTsKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBudWxscHRyKSkg
eworICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAvLyBDbGllbnRzIG1pZ2h0IGhv
bGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlzIGhhcHBlbnMuIFRoZXkgc2hvdWxkIGFsc28gc3Rv
cCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBkbyBub3QsCisgICAgICAgIC8vIGF2b2lkIGJpZyBt
ZW1vcnkgbGVha3MgYnkgY2xlYXJpbmcgdGhlIGZyYW1lcy4gVGhlIGNsaWVudHMgc2hvdWxkIGZh
aWwgZ3JhY2VmdWxseSAoZG8gbm90aGluZykgaW4gY2FzZSB0aGV5IGZhaWwgdG8gbG9vayB1cAor
ICAgICAgICAvLyBmcmFtZXMuCisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIC8vIFRPRE86IGFk
ZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5nLgorICAgIH0KK30KKwordm9pZCBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UmJiB3cml0ZSwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZyYW1lKQorewor
ICAgIHJldGlyZShXVEZNb3ZlKHdyaXRlKSwgV1RGTW92ZShmcmFtZSksIHN0ZDo6bnVsbG9wdCk7
Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1l
KFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmIHdyaXRlKQoreworICAgIGFzc2VydElz
Q3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIHJldGlyZVJlbW92ZShXVEZNb3ZlKHdyaXRl
KSk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUx
NTljODA0NjZmNWYxM2Y5M2JjNDI1NzA5NWQ5MWI0ODBlYTE2M2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRTYWZlT2JqZWN0SGVh
cC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CisKKy8vIEhvbGRzIHJlZmVyZW5jZXMgdG8gYWxsIFZpZGVvRnJhbWUg
aW5zdGFuY2VzIHRoYXQgYXJlIG1hcHBlZCBmcm9tIFdlYiBwcm9jZXNzIHRvIEdQVSBwcm9jZXNz
IHR3byBwcm9jZXNzZXMuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUgaXMgbm8gc3BlY2lhbCBzdGF0
ZSBmb3IgUmVtb3RlVmlkZW9GcmFtZSwgdGhlIG9iamVjdCBoZWFwIHN0b3JlcyBWaWRlb0ZyYW1l
IGluc3RhbmNlcyAoTWVkaWFTYW1wbGUpLgorLy8gQXMgY3VycmVudGx5IHRoZXJlIGlzIG5vIFJl
bW90ZVZpZGVvRnJhbWUsIHJlc3BvbnNpYmxlIGZvciBkaXNwYXRjaGluZyB0aGUgVmlkZW9GcmFt
ZSBtZXRob2RzIHRvIHRoZSBvYmplY3RzLgorLy8gQ29uc3VtZSB0aHJlYWQgaXMgdGhlIHRocmVh
ZCB0aGF0IHVzZXMgdGhlIFZpZGVvRnJhbWUuIEZvciBHUFVQIHRoaXMgaXMgdGhlIG1lZGlhIHBs
YXllciB0aHJlYWQsIHRoZSBtYWluIHRocmVhZC4KKy8vIEZJWE1FOiBjdXJyZW50bHkgVmlkZW9G
cmFtZSBpbnN0YW5jZXMgYXJlIE1lZGlhU2FtcGxlIGluc3RhbmNlcy4KK2NsYXNzIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVPYmplY3RIZWFwPFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+Piwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmKTsKKyAgICB+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKTsKKworICAgIHZvaWQgYWRk
VmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiwgUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlPiYmKTsKKworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOworcHJpdmF0
ZToKKyAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcChHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKKworICAgIC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgcmVsZWFzZVZpZGVvRnJhbWUoUmVtb3Rl
VmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9j
b25zdW1lVGhyZWFkKTsKKyAgICBjb25zdCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklRVUVfQUREUkVT
UzsKK307CisKKworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMjc4Y2UzZDAzOWRiZTE3MzFkNWFmNmM4ZTQ5OTEwYTM5NTJh
NzEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjggQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCittZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcCBOb3RSZWZDb3VudGVkIHsKKyAgICBSZWxlYXNlVmlkZW9GcmFtZShXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBpZGVudGlmaWVyKQorfQorI2VuZGlmClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwCmluZGV4IDcyNGE4Yzk2YjdlN2U1ZTBkYmFiYTA4MjMxYmI4Yjc4ZjliYmYwYzAuLmJmNDYx
Y2RmZjhhZGQ2MTRkZmIwZWJmMTQ5MzkzZTRlYTVjM2FiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNs
dWRlICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5o
IgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgpAQCAtMzUsMTggKzM3LDIyIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
K3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGltZW91dCB7IDMwX3MgfTsKKwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvbiwgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCiB7Ci0gICAgYXV0byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoaWRl
bnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOworICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKGdwdUNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIFdURk1vdmUoY29u
bmVjdGlvbikpKTsKICAgICByZXR1cm4gbGF5ZXItPm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
ID8gV1RGTW92ZShsYXllcikgOiBudWxscHRyOwogfQogCi1SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbikKLSAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvbiwgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24p
CisgICAgOiBtX2dwdUNvbm5lY3Rpb24oZ3B1Q29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAg
ICAgLCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAobV9ncHVD
b25uZWN0aW9uLnZpZGVvRnJhbWVPYmplY3RIZWFwKCkpCiB7CiAgICAgQVNTRVJUKG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKTsKIH0KQEAgLTExMyw3ICsxMTksMjMgQEAgdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+cGF1c2UoKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCit2b2lk
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHNhbXBsZSkKK3sKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUoc2FtcGxlKSwgZGVmYXVsdFRp
bWVvdXQpOworICAgIGlmICghbWVkaWFTYW1wbGUpIHsKKyAgICAgICAgQVNTRVJUX0lTX1RFU1RJ
TkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFpczxNZWRpYVNhbXBs
ZUFWRk9iakM+KG1lZGlhU2FtcGxlKSkgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvJiBhdmZNZWRpYVNhbXBsZSA9IGRv
d25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oKm1lZGlhU2FtcGxlKTsKKyAgICBNZWRpYVNhbXBs
ZUFWRk9iakM6OnNldEFzRGlzcGxheUltbWVkaWF0ZWx5KGF2Zk1lZGlhU2FtcGxlKTsKKyAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShhdmZNZWRpYVNhbXBsZSk7
Cit9CisKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
Q1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vdGVTYW1wbGUpCiB7CiAgICAgUmVm
UHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUuc3VyZmFjZSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA3MjViM2QyNmI3MWM3ODg2
ZGM0ODg4MjdkMGE2ZjdkMjUyYWE3YTBkLi44MDJjOTBmZTllYjY2NGJhOTMyMWQ3YThiZGU1ZDk4
NGY0MDNmMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTMwLDEwICsz
MCwxMiBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL01l
ZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ7CkBAIC00MiwxMSArNDQs
MTMgQEAgY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7CiB9OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDsKIAogY2xhc3MgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIDogcHVi
bGljIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogICAgIH5SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIoKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Q2xpZW50Ojp3ZWFrUHRyRmFjdG9yeTsKQEAgLTYxLDcgKzY1LDcgQEAgcHVibGljOgogICAg
IENHUmVjdCBib3VuZHMoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRl
bnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICB2b2lkIHNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYpOwpAQCAtNzMsNyArNzcs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpOwogICAgIHZvaWQg
cGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYpOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZUNWKFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOwogICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMo
KTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUm
Jik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik7CkBAIC04NSwxMiArOTAsMTYgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJD
b3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudAogICAgIHZvaWQgc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkRmFpbCgpIGZpbmFsOwogCisgICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jb25z
dW1lVGhyZWFkKTsKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFu
c2ZlclNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAg
IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIgbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOworICAgIFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyAg
ICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworCiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
CmluZGV4IGU1MDQ4MzE0MWVmZWZhZmI0M2RjYTYwOGNkYzM3ZDYyMTZmN2VjZGYuLjNjYTFmOTMy
NzA3MjdkZTBjMmI3NTQ0N2FiODliNjQ2MzJhYmE3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw4IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBOb3RSZWZDb3VudGVkIHsKICAgICBV
cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKICAgICBGbHVzaCgpCiAgICAgRmx1c2hBbmRSZW1v
dmVJbWFnZSgpCi0gICAgRW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBz
YW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVm
ZXJlbmNlIHNhbXBsZSkKKyAgICBFbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUgc2FtcGxlKQogICAgIENsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKICAgICBQbGF5KCkKICAg
ICBQYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cAppbmRleCBhNTQ0NWQ3ZmQ1Y2NiYjVhZDAwY2RlY2VjNWQwM2Y2MzM0YjVkMTUxLi43NmU3OTlj
MzVhZjJlZGQyMzY2ZDdjYWNkZDNlNWU3MTk3NWM1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb24KIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
cjo6Y3JlYXRlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBib29sIGhpZGVSb290TGF5ZXIsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgTGF5ZXJDcmVh
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyLCBoaWRlUm9vdExheWVy
LCBzaXplLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAg
ICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoaWRl
bnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gbGF5ZXIgPSBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwogICAgICAgICBhdXRv
JiBsYXllclJlZmVyZW5jZSA9ICpsYXllcjsKICAgICAgICAgbGF5ZXJSZWZlcmVuY2UuaW5pdGlh
bGl6ZShoaWRlUm9vdExheWVyLCBzaXplLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIsIGxheWVyID0g
V1RGTW92ZShsYXllcildKGF1dG8gbGF5ZXJJZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBkaXNw
YXRjaFRvVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZN
b3ZlKGxheWVyKSwgbGF5ZXJJZCA9IFdURk1vdmUobGF5ZXJJZCldKCkgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZTE5
ZTM0NWQxYzk3MDgyZDIzNjQwNzE0YWQ3ZTZhYzgyOTcwNzUxZC4uZDg3NzMyNjQxNjZkZWFlZjU4
ZjE1ZDZmNTZhOWJiZDAyMzI5OGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uaApAQCAtMjksMTEgKzI5LDE0IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBXb3JrZXJGZXRjaFJlc3VsdDsK
IHN0cnVjdCBXb3JrZXJPcHRpb25zOworc3RydWN0IFNoYXJlZFdvcmtlcktleTsKK2NsYXNzIFJl
c291cmNlRXJyb3I7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggYzUzZWY5OTQzZjVmZjM3ZWZkNjgzOWUyNWZjZGVk
ZTNmMzZiNTUxZS4uNjJkODdkMTQ5MGFhYTQ2YmM1ODNlMjA1NjNlZTg0ZDVkNjQyZjMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNDYsNiArMzQ2LDEw
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpS
ZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2UnLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Un
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZScsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLApAQCAtODgyLDYgKzg4Niw5IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBD
b25maWd1cmF0aW9uJzogWyciUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVu
dFNldHVwRmVhdHVyZXNXZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UmVzcGVjdFNlbGVj
dGlvbkFuY2hvcic6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIn
XSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnOiBbJyJS
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5o
IiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyciSWRlbnRpZmllclR5cGVz
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBiYWJhMGIwODg3N2M0NzJh
NTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBkYTU5NTQ4MzAwY2U2ZmUz
ZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogCisjaW5j
bHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0IFNlbmRNZXNzYWdlQ29u
dGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwogICAgIHN0ZDo6YXRvbWlj
PGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBv
bmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpAQCAtMTE1LDcgKzExOCw5
IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rlc3RRdWV1ZSkKICAgICAg
ICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRlc3Rpbmcgd29yayBxdWV1
ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5l
Y3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZlck5hbWUgPSBXVEZNb3Zl
KGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5nSVBDVGVzdHMrKzsKICAg
ICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxkU3RvcCwgV1RGTW92ZShk
cml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwogICAgIH0pOwogfQogCkBA
IC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZOZWVkZWQoKQogICAgIH0K
IH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBvbmdvaW5nSVBDVGVzdHM7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENU
ZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCmluZGV4IDQ0OTkwOTM1
YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2ZDQzOTJjM2ZhN2I1Zjdm
NWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rl
c3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCkBAIC0yNSw3ICsy
NSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKIAog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0b21pYz4KQEAgLTMzLDYg
KzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIEFTU0VSVF9JU19URVNU
SU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3RlZCBjb25uZWN0aW9uIHNl
bnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0ZXN0aW5nIElQQy4iKQor
CisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rpb24gdG8gY2hlY2sgd2hl
biBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQgSVBDIHRlc3Rpbmcgc2tp
cHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5kZXJuZWF0aC4KK2Jvb2wg
aXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7CkBAIC01Miw2ICs1OSwx
MyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkU3RvcCB7IGZhbHNl
IH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wgaXNUZXN0aW5nSVBDKCkK
K3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYmFjOTc3ZDUzZWJiZmE4NmQyYjJkZjE3Y2ZmZmVkY2I4MTM2MGFiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaApAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUeXBlIGZvciB0aGUga2V5
IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVuY2VzIHRvIG9iamVjdCBz
dGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKCkgPSBkZWZhdWx0
OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRfdCB2
ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1f
dmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDog
bV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9Cisg
ICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWlu
dDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVyICYm
IG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmll
ci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgbV92ZXJz
aW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRpZmllcjsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAgZGVjb2RlciA+PiBpZGVu
dGlmaWVyCisgICAgICAgICAgICA+PiB2ZXJzaW9uOworICAgICAgICBpZiAoIWRlY29kZXIuaXNW
YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgKnZlcnNp
b24gfTsKKyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90
IG1fdmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgT2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAgIHVzaW5nIFJlZmVyZW5j
ZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgT2JqZWN0SWRlbnRpZmllclJl
YWRSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAgOiBtX3JlZmVyZW5jZShy
ZWZlcmVuY2UpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlZmVyZW5jZS5pZGVudGlmaWVyKCk7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yZWZlcmVuY2UudmVyc2lvbigpOyB9CisgICAgUmVmZXJlbmNlIHJlZmVy
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVyZW5jZTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlYWRS
ZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgZGVjb2RlciA+PiByZWZlcmVu
Y2U7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVu
Y2UgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZmVy
ZW5jZSBtX3JlZmVyZW5jZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmpl
Y3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAgIHVzaW5nIFJlZmVyZW5j
ZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgT2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlKFJlZmVyZW5jZSByZWZlcmVuY2UsIHVpbnQ2NF90IHBlbmRpbmdSZWFkcykK
KyAgICAgICAgOiBtX3JlZmVyZW5jZShyZWZlcmVuY2UpCisgICAgICAgICwgbV9wZW5kaW5nUmVh
ZHMocGVuZGluZ1JlYWRzKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZlcmVuY2UuaWRlbnRpZmllcigpOyB9CisgICAgdWludDY0X3QgdmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLnZlcnNpb24oKTsgfQorICAgIHVpbnQ2NF90
IHBlbmRpbmdSZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1JlYWRzOyB9CisgICAgUmVm
ZXJlbmNlIHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisgICAgT2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiByZXRpcmVkUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1
cm4geyBpZGVudGlmaWVyKCksIHZlcnNpb24oKSArIDEgfTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWZlcmVuY2U7CisgICAgICAgIGVuY29kZXIgPDwgbV9w
ZW5kaW5nUmVhZHM7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZT4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZT4g
cmVmZXJlbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwZW5kaW5nUmVhZHM7
CisKKyAgICAgICAgZGVjb2RlciA+PiByZWZlcmVuY2UKKyAgICAgICAgICAgID4+IHBlbmRpbmdS
ZWFkczsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2UgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCAqcGVuZGluZ1JlYWRzIH07CisgICAgfQorCitw
cml2YXRlOgorICAgIFJlZmVyZW5jZSBtX3JlZmVyZW5jZTsKKyAgICB1aW50NjRfdCBtX3BlbmRp
bmdSZWFkcyB7IDAgfTsKK307CisKKy8vIENsYXNzIHRvIGdlbmVyYXRlIHJlYWQgYW5kIHdyaXRl
IHJlZmVyZW5jZXMgdG8gYW4gT2JqZWN0SWRlbnRpZmVyLgordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NsYXNzIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcik7CitwdWJsaWM6Cisg
ICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+
OworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8
VD47CisKKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcihUIGlk
ZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAg
IH0KKyAgICBleHBsaWNpdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcihSZWZlcmVu
Y2UgcmVmZXJlbmNlKQorICAgICAgICA6IG1faWRlbnRpZmllcihyZWZlcmVuY2UuaWRlbnRpZmll
cigpKQorICAgICAgICAsIG1fdmVyc2lvbihyZWZlcmVuY2UudmVyc2lvbigpKQorICAgIHsKKyAg
ICB9CisgICAgLy8gVGhyZWFkIHNhZmUuCisgICAgUmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3QK
KyAgICB7CisgICAgICAgIG1fcGVuZGluZ1JlYWRzKys7CisgICAgICAgIHJldHVybiBSZWZlcmVu
Y2UgeyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbiB9OworICAgIH0KKyAgICAvLyBOb3QgdGhyZWFk
IHNhZmUuIENsaWVudCBtdXN0IGNvb3JkaW5hdGUgd3JpdGVzIGFuZCByZWFkcyBhbnl3YXkuCisg
ICAgV3JpdGVSZWZlcmVuY2Ugd3JpdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsg
eyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbisrIH0sIG1fcGVuZGluZ1JlYWRzLmV4Y2hhbmdlKDAp
IH07CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9pZGVudGlmaWVyOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgVCBtX2lkZW50aWZp
ZXI7CisgICAgbXV0YWJsZSBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9wZW5kaW5nUmVhZHMgeyAw
IH07CisgICAgbXV0YWJsZSB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4gcmVmZXJlbmNlKQoreworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5j
ZS5pZGVudGlmaWVyKCkpOworICAgIGFkZChoYXNoZXIsIHJlZmVyZW5jZS52ZXJzaW9uKCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiByZWZl
cmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoIiA8PCByZWZl
cmVuY2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7
CisgICAgcmV0dXJuIHRzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCBy
ZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQor
eworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoIiA8PCByZWZlcmVu
Y2UuaWRlbnRpZmllcigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiLCAiIDw8
IHJlZmVyZW5jZS5wZW5kaW5nUmVhZHMoKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOworfQorCit9
CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj4geworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gSGFzaFRyYWl0czxUPjo6ZW1w
dHlWYWx1ZUlzWmVybzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+IHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4m
IHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChyZWZlcmVuY2Up
OworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8VD4mIGEsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZTxUPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1
bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVh
cC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YTA5ZTViYThhNDgxYjM2NTAxNjc0ZjJlMGVjNzkyZDM4NWE1YTg2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFkU2FmZU9iamVjdEhlYXAuaApAQCAt
MCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIklQQ1Rlc3Rlci5o
IgorI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVk
ZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
Q29udGFpbmVyIHRoYXQgaG9sZHMgaWRlbnRpZmllciAtPiBvYmplY3QgbWFwcGluZyBiZXR3ZWVu
IHR3byBwcm9jZXNzZXMuCisvLyBVc2VkIGluIHNjZW5hcmlvcyB3aGVyZSB0aGUgaG9sZGVyIHBy
b2Nlc3MgcHJvY2Vzc2VzIG1lc3NhZ2VzIHdpdGggdGhlIG9iamVjdCByZWZlcmVuY2VzIGluIG11
bHRpcGxlCisvLyB0aHJlYWRzLiBgVGhyZWFkU2FmZU9iamVjdEhlYXBgIHRyYWNrcyB0aGUgcmVh
ZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byB0aGUgY29udGVudCBwb2ludGVkCisvLyBieSBhIHBh
cnRpY3VsYXIgaWRlbnRpZmllci4KKy8vIFBlbmRpbmcgcmVhZHMgbWF5IGJsb2NrIG5ldyB3cml0
ZXMuIEFsdGVybmF0aXZlbHkgbmV3IHdyaXRlcyBjYW4gc2tpcCBhaGVhZCBvZiB0aGUgcmVhZHMs
CisvLyBmb3IgZXhhbXBsZSBpbiBjb3B5LW9uLXdyaXRlIHNjZW5hcmlvcy4KKy8vIFBlbmRpbmcg
d3JpdGVzIGJsb2NrIHJlYWRzLgorLy8gQ3VycmVudGx5IGltcGxlbWVudGVkIG9ubHkgZm9yIHJl
YWQtb25seSAoY3JlYXRlLXJlYWQtZGVzdHJveSkgb3IgY29weS1vbi13cml0ZSB0eXBlcywKKy8v
IGUuZy4gbm8gdHdvLXBoYXNlIGdldCgpIG9wZXJhdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5
ZXQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK2Ns
YXNzIFRocmVhZFNhZmVPYmplY3RIZWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRo
cmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPj4geworcHVibGljOgorICAg
IHVzaW5nIFJlYWRSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlcjxJZGVudGlmaWVyPjo6UmVhZFJlZmVyZW5jZTsKKyAgICB1c2luZyBXcml0ZVJlZmVy
ZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZp
ZXI+OjpXcml0ZVJlZmVyZW5jZTsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxJZGVudGlmaWVyPjo6UmVmZXJlbmNlOworCisg
ICAgLy8gV2FpdHMgdW50aWwgYSB3cml0ZSBjcmVhdGVzIHRoZSByZWZlcmVuY2UgYW5kIHRoZW4g
cmV0aXJlcyB0aGUgcmVhZCBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICBIZWxkVHlwZSByZXRp
cmUoUmVhZFJlZmVyZW5jZSYmLCBJUEM6OlRpbWVvdXQpOworCisgICAgLy8gSW5zZXJ0cyBhIG5l
dyB2ZXJzaW9uIG9mIHRoZSBvYmplY3Qgb3IgcmVtb3ZlcyBhbiBvbGQgb25lIGFuZCB0aGVuIHJl
dGlyZXMgdGhlIHdyaXRlIG9yCisgICAgLy8gdGltZXMgb3V0LgorICAgIC8vIElmIHRpbWVvdXQg
aXMgcGFzc2VkLCB3YWl0cyB1bnRpbCBwZW5kaW5nIHJlYWRzIGFyZSBkb25lLgorICAgIC8vIEl0
IGlzIGEgY2FsbGVyIGVycm9yIHRvIG5vdCB3YWl0IGFuZCBtdXRhdGUgdGhlIG9sZCBvYmplY3Qu
CisgICAgdm9pZCByZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiwgc3RkOjpvcHRpb25hbDxIZWxkVHlw
ZT4mJiBuZXdPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1lb3V0Pik7CisKKyAgICB2b2lk
IHJldGlyZVJlbW92ZShXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIHZvaWQgY2xlYXIoKTsKK3By
aXZhdGU6CisgICAgTG9jayBtX29iamVjdHNMb2NrOworICAgIENvbmRpdGlvbiBtX29iamVjdHND
b25kaXRpb247CisgICAgc3RydWN0IFJlZmVyZW5jZVN0YXRlIHsKKyAgICAgICAgdWludDY0X3Qg
cmV0aXJlZFJlYWRzIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaW5h
bFJlYWQ7IC8vIFJlbW92ZSBhZnRlciBgZmluYWxSZWFkYCByZWFkcy4KKyAgICAgICAgc3RkOjpv
cHRpb25hbDxIZWxkVHlwZT4gb2JqZWN0OyAvLyBPYmplY3Qgb3IgdG9tYnN0b25lLgorCisgICAg
ICAgIFJlZmVyZW5jZVN0YXRlKCkgPSBkZWZhdWx0OworICAgICAgICBleHBsaWNpdCBSZWZlcmVu
Y2VTdGF0ZShIZWxkVHlwZSYmIG9iamVjdCkKKyAgICAgICAgICAgIDogb2JqZWN0KFdURk1vdmUo
b2JqZWN0KSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIC8vIFRvbWJzdG9uZSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUodWludDY0X3QgZmluYWxS
ZWFkKQorICAgICAgICAgICAgOiBmaW5hbFJlYWQoZmluYWxSZWFkKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICB9OworICAgIEhhc2hNYXA8UmVmZXJlbmNlLCBSZWZlcmVuY2VTdGF0ZT4gbV9v
YmplY3RzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vYmplY3RzTG9jayk7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK0hlbGRUeXBlIFRocmVh
ZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFJlYWRSZWZlcmVu
Y2UmJiByZWFkLCBJUEM6OlRpbWVvdXQgdGltZW91dCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5m
aW5kKHJlYWQucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgp
KSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlm
IChzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICBIZWxkVHlwZSByZXN1bHQgPSAqc3Rh
dGUub2JqZWN0OworICAgICAgICAgICAgICAgIHN0YXRlLnJldGlyZWRSZWFkcysrOworICAgICAg
ICAgICAgICAgIGlmIChzdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHN0YXRlLmZpbmFsUmVhZCA+PSBzdGF0ZS5yZXRpcmVkUmVhZHMpOyAvLyBUcnVzdGVkIGFz
c2VydCBiZWNhdXNlIHRoaXMgaXMgZW5zdXJlZCBvbiBgZmluYWxSZWFkYCBhc3NpZ25tZW50Lgor
ICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkID09IHN0YXRlLnJldGlyZWRS
ZWFkcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoaXQpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRpb24ubm90aWZ5
QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRpdGlvbi53YWl0VW50aWwobV9vYmpl
Y3RzTG9jaywgdGltZW91dC5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0g
d2hpbGUgKHRydWUpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhl
YXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmUoV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSwg
c3RkOjpvcHRpb25hbDxIZWxkVHlwZT4mJiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8SVBDOjpUaW1l
b3V0PiB0aW1lb3V0KQoreworICAgIGNvbnN0IGJvb2wgd2FpdEZvclBlbmRpbmdSZWFkcyA9IHRp
bWVvdXQuaGFzX3ZhbHVlKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsK
KyAgICBkbyB7CisgICAgICAgIGF1dG8gaXQgPSBtX29iamVjdHMuZmluZCh3cml0ZS5yZWZlcmVu
Y2UoKSk7CisgICAgICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAg
IGF1dG8mIHN0YXRlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVh
ZCAmJiBzdGF0ZS5vYmplY3QpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IGBm
aW5hbFJlYWRgIGlzIGFzc2lnbmVkIG9uIHdyaXRlLiBDYW5ub3QgaGF2ZSB0aGUgc2FtZSB2ZXJz
aW9uIHdpdGggd3JpdGVzLgorICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChzdGF0ZS5yZXRpcmVkUmVhZHMgPiB3cml0ZS5wZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFdyaXRlIHVuZGVyZmxvdzogbW9yZSByZWFkcyBoYXZlIGJlZW4gZG9uZSB0aGFu
IHRoZSBzZW5kZXIgY2xhaW1zIGlzIHRoZSBtYXhpbXVtLgorICAgICAgICAgICAgICAgIEFTU0VS
VF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC8vIEl0IGlzIGxpa2VseSBhIGNhbGxlciBlcnJvciB0byB0cnkgdG8g
YWRkIGEgbmV3IHJlZmVyZW5jZSB3aXRoIHRoZSBzYW1lIGNsaWVudCBvYmplY3Qgd2l0aG91dAor
ICAgICAgICAgICAgLy8gd2FpdGluZyBmb3IgcGVuZGluZyByZWFkcyBvbiB0aGUgb2xkIHJlZmVy
ZW5jZS4KKyAgICAgICAgICAgIEFTU0VSVCh3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICFzdGF0ZS5v
YmplY3QgfHwgKnN0YXRlLm9iamVjdCAhPSBvYmplY3QpOworCisgICAgICAgICAgICBpZiAoc3Rh
dGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpIHx8ICF3YWl0Rm9yUGVuZGlu
Z1JlYWRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA8IHdyaXRl
LnBlbmRpbmdSZWFkcygpKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbFJlYWQgPSB3
cml0ZS5wZW5kaW5nUmVhZHMoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5yZXRp
cmVkUmVhZHMgPT0gd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIG1f
b2JqZWN0cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX29iamVjdHMuYWRkKFdURk1vdmUod3Jp
dGUpLnJldGlyZWRSZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmplY3Qp
IH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBuZXdTdGF0ZSA9IGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnRyeSB3YXMgYSB0b21ic3Rv
bmUuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3RhdGUuZmluYWxSZWFkICYmICEq
bmV3U3RhdGUuZmluYWxSZWFkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vYmpl
Y3RzLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghbmV3U3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U3RhdGUub2JqZWN0ID0gV1RGTW92ZSgqb2JqZWN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gV3JpdGUgcmVwbGF5OiB0aGUgcmV0aXJlZCB3cml0ZSBhbHJlYWR5IGV4aXN0
cywgdGhlIGVudHJ5IHdhcyBub3QgYSB0b21ic3RvbmUuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKCF3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICF3cml0ZS5wZW5k
aW5nUmVhZHMoKSkgeworICAgICAgICAgICAgLy8gV3JpdGUgdGhlIHRvbWJzdG9uZS4KKyAgICAg
ICAgICAgIG1fb2JqZWN0cy5hZGQod3JpdGUucmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsg
d3JpdGUucGVuZGluZ1JlYWRzKCkgfSk7CisgICAgICAgICAgICBpZiAob2JqZWN0KQorICAgICAg
ICAgICAgICAgIG1fb2JqZWN0cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlZFJlZmVyZW5jZSgp
LCBSZWZlcmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICBtX29i
amVjdHNDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKHRpbWVvdXQpOworICAgICAgICBpZiAoIW1fb2JqZWN0c0NvbmRp
dGlvbi53YWl0VW50aWwobV9vYmplY3RzTG9jaywgdGltZW91dC0+ZGVhZGxpbmUoKSkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICh0cnVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRocmVhZFNhZmVPYmplY3RI
ZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlUmVtb3ZlKFdyaXRlUmVmZXJlbmNlJiYg
b2JqZWN0KQoreworICAgIHJldGlyZShXVEZNb3ZlKG9iamVjdCksIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUg
SGVsZFR5cGU+Cit2b2lkIFRocmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBl
Pjo6Y2xlYXIoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAg
bV9vYmplY3RzLmNsZWFyKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUJ5dGVSYW5nZS5jcHAKaW5kZXggNGRlMWQwZWQyYTdiZTQ5ZTNjYmJiOTVlMzc3ZjU0NTA5ZmFj
MDdhZC4uNzhmNzMxMzRjZTZhN2EyMTRjZGM5ZGUwNWM0NzUzNzJlMTdjOWEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxl
Qnl0ZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEF0b21TdHJp
bmcgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnRyYWNrSUQoKSBjb25zdAogICAgIHJldHVybiBBdG9t
U3RyaW5nOjpudW1iZXIobV90cmFja0lEKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1w
bGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxl
Qnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAg
ICAgUGxhdGZvcm1TYW1wbGU6OkJ5dGVSYW5nZVNhbXBsZVR5cGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFu
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5oCmluZGV4IGI4ZTRkNzZjZTZmMzkyODU3NmU5ZmIxZWY5NjJiNDA0OTdl
M2RjMzEuLmY4MzM2YmYwMTM3MjEwOTBkYTE5Mzc4ZmI1YTQ1M2M4ZGFjYTU3NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBs
ZUJ5dGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9ieXRlUmFuZ2U7IH0KIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFs
OwotICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWw7Cisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAg
ICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGUzMTM5MTA1OWNiM2NiMjAwYTQ4MzcxOTlhNDlkMzIx
OWM4NDQ3M2QuLjAzMzJhODQ0ZTA2YTliNTBjYmM1Y2I3MzNhOTc4OGM2NzcwMzc5ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtNzAsNiArNzAsNyBAQCBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFTb3VyY2VQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExp
c3RlbmVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmNwcApAQCAtNzQxLDYgKzc0Miw3IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCkBAIC04NzgsNiArODgwLDcgQEAgUmVtb3RlRGV2aWNlTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVBpcGVsaW5lTGF5
b3V0TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVlcnlTZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVRdWV1ZU1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5j
cHAKaW5kZXggMmFmNzgyOTBmNTA3M2VhMWM5NzYxOTcyMzhjZjU2MjRmNjlkOGExYS4uZTE2NjVj
NWY4MjVmMDM1ODMxNjIyZjYxZDYzZGRhOTgxMWFhMTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVy
U3RvcmFnZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTE4
MywyMSArMTg0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNlbWFwaG9yZS0+
c2lnbmFsKCk7CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAotICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiByZW1vdGVTYW1wbGU7
Ci0gICAgICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgc2FtcGxlLnZpZGVvUm90YXRp
b24oKSAhPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSkgewotICAgICAgICAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVmZmVyKHNhbXBsZSk7Ci0gICAgICAgICAg
ICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLmdl
dCgpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICByZW1vdGVTYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSk7Ci0g
ICAgICAgIGlmIChyZW1vdGVTYW1wbGUpIHsKLSAgICAgICAgICAgIGlmIChtX3Jlc291cmNlT3du
ZXIpCi0gICAgICAgICAgICAgICAgcmVtb3RlU2FtcGxlLT5zZXRPd25lcnNoaXBJZGVudGl0eSht
X3Jlc291cmNlT3duZXIpOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUobV9pZCwg
V1RGTW92ZSgqcmVtb3RlU2FtcGxlKSwgbWV0YWRhdGEpLCAwKTsKLSAgICAgICAgfQotICAgIH0K
LQogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRp
YVNhbXBsZSYgc2FtcGxlKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikK
QEAgLTI2Miw2ICsyNDgsNTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmVzZXQgeyBm
YWxzZSB9OwogfTsKIAorCisvLyBTb3VyY2VQcm94eSB0aGF0IHNlbmRzIHRoZSByZWFsIHZpZGVv
IGZyYW1lIHRvIHRoZSByZWNlaXZlci4KK2NsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk6OkluUHJvY2Vzc1ZpZGVvRnJhbWVTb3VyY2VQcm94eSBmaW5hbCA6IHB1YmxpYyBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eSB7CisgICAgcHVibGljOgorICAgIHVz
aW5nIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5OjpTb3VyY2VQcm94
eTsKKworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwg
VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gcmVtb3RlU2FtcGxlOworICAgICAgICBpZiAo
bV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKKyAgICAgICAgICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOworICAgICAgICAgICAgcmVtb3RlU2FtcGxl
ID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtb3RlU2Ft
cGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUpOworICAgICAgICBpZiAocmVt
b3RlU2FtcGxlKSB7CisgICAgICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQorICAgICAgICAg
ICAgICAgIHJlbW90ZVNhbXBsZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJjZU93bmVy
KTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1faWQsIFdURk1vdmUoKnJlbW90
ZVNhbXBsZSksIG1ldGFkYXRhKSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisvLyBTb3Vy
Y2VQcm94eSB0aGF0IHN0b3JlcyB0aGUgc2FtcGxlIHRvIGEgdmlkZW8gZnJhbWUgb2JqZWN0IGhl
YXAgYW5kIHRoZSBwcm94eSBvYmplY3QgdG8gdGhlIHJlY2VpdmVyLgorY2xhc3MgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6UmVtb3RlVmlkZW9GcmFtZVNvdXJjZVByb3h5IGZpbmFsIDog
cHVibGljIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5IHsKK3B1Ymxp
YzoKKyAgICBSZW1vdGVWaWRlb0ZyYW1lU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lk
ZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
LCBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgdmlkZW9GcmFtZU9iamVjdEhlYXAp
CisgICAgICAgIDogbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChXVEZNb3ZlKHZpZGVvRnJhbWVPYmpl
Y3RIZWFwKSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVk
aWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KHNhbXBsZSkpOworICAg
ICAgICBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ugd3JpdGUgeyBSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlIHsgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIDAg
fSwgMCB9OworICAgICAgICBhdXRvIG5ld0ZyYW1lUmVmZXJlbmNlID0gd3JpdGUucmV0aXJlZFJl
ZmVyZW5jZSgpOworICAgICAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5hZGRWaWRlb0ZyYW1l
KHdyaXRlLCAmc2FtcGxlKTsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCByb3RhdGlvbiBm
b3IgdGhlIHNhbXBsZS4KKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzZXQgb3duZXJzaGlw
IGZvciB0aGUgc2FtcGxlLgorICAgICAgICAvLyBpZiAobV9yZXNvdXJjZU93bmVyKQorICAgICAg
ICAvLyAgICBzYW1wbGUtPnNldE93bmVyc2hpcElkZW50aXR5KG1fcmVzb3VyY2VPd25lcik7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlKG1faWQsIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6
cHJvcGVydGllcyhXVEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgc2FtcGxlKSwgbWV0YWRhdGEp
LCAwKTsKKyAgICB9Citwcml2YXRlOgorICAgIFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKK307CisKIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Q
cm94eT4mJiBjb25uZWN0aW9uUHJveHkpCiAgICAgOiBtX2Nvbm5lY3Rpb25Qcm94eShXVEZNb3Zl
KGNvbm5lY3Rpb25Qcm94eSkpCiB7CkBAIC0zMjQsNyArMzU1LDEyIEBAIHZvaWQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0
aENvbnN0cmFpCiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlu
cyhpZCkpOwotICAgICAgICBhdXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQs
IG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nlc3NJZGVudGl0eSB7IG1fY29u
bmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZVByb3h5PiBwcm94eTsKKyAgICAgICAgaWYgKGF1dG8g
dmlkZW9GcmFtZU9iamVjdEhlYXAgPSBtX2Nvbm5lY3Rpb25Qcm94eS0+dmlkZW9GcmFtZU9iamVj
dEhlYXAoKSkgeworICAgICAgICAgICAgcHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVZpZGVvRnJh
bWVTb3VyY2VQcm94eT4oaWQsIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIFByb2Nl
c3NJZGVudGl0eSB7IG1fY29ubmVjdGlvblByb3h5LT5yZXNvdXJjZU93bmVyKCkgfSwgV1RGTW92
ZShzb3VyY2UpLCAqdmlkZW9GcmFtZU9iamVjdEhlYXApOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwcm94eSA9IG1ha2VVbmlxdWU8SW5Qcm9jZXNzVmlkZW9GcmFtZVNvdXJjZVByb3h5Pihp
ZCwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgUHJvY2Vzc0lkZW50aXR5IHsgbV9j
b25uZWN0aW9uUHJveHktPnJlc291cmNlT3duZXIoKSB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAg
ICAgICB9CiAgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIFdURk1vdmUocHJveHkpKTsKICAgICB9
IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9y
LmVycm9yTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggZmE4MjljN2M0OTAz
ZDUxYjU3YTc4OTcxNzg0NzNmODBjYmYyODZkZS4uZDhmNDg4ZDZhNDUzOWY2YmZhNjU3YzQyZTQ2
OTg2MTM1Y2IxZjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtNDcsNiArNDcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDYgKzY2LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFRDQ0lkZW50aXR5KCkgeyB9CiAjZW5kaWYKICAg
ICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YShXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlKSB7IH0KKworICAgICAgICAvLyBSZXR1cm5zIHRoZSBvYmplY3QgaGVh
cCB0byBzdG9yZSByZW1vdGUgdmlkZW8gZnJhbWVzLCBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVk
LgorICAgICAgICAvLyBJbiB0aGlzIHNjZW5hcmlvIHJlbW90ZSB2aWRlbyBmcmFtZXMgYXJlIHBy
b3ZpZGVkLgorICAgICAgICAvLyBPdGhlcndpc2Ugbm9uLXJlbW90ZSB2aWRlbyBmcmFtZXMgYXJl
IHByb3ZpZGVkLgorICAgICAgICB2aXJ0dWFsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcD4gdmlkZW9GcmFtZU9iamVjdEhlYXAoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAg
ICAgfTsKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFVuaXF1ZVJl
ZjxDb25uZWN0aW9uUHJveHk+JiYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KCk7CkBAIC05Myw2ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaG91bGRBcHBseVJv
dGF0aW9uKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBib29sIHNob3Vs
ZEFwcGx5Um90YXRpb24pOwogCiAgICAgY2xhc3MgU291cmNlUHJveHk7CisgICAgY2xhc3MgSW5Q
cm9jZXNzVmlkZW9GcmFtZVNvdXJjZVByb3h5OworICAgIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVT
b3VyY2VQcm94eTsKICAgICBmcmllbmQgY2xhc3MgU291cmNlUHJveHk7CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNv
dXJjZVByb3h5Pj4gbV9wcm94aWVzOwogICAgIFVuaXF1ZVJlZjxDb25uZWN0aW9uUHJveHk+IG1f
Y29ubmVjdGlvblByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjBkM2U5ODIwNWQ1ZGQzOTg0ZTU4N2NkMzAxMGU5ODMwZDIzODc1
MC4uMWEzZjA5MGFiOWJiMDE5N2I4MmY5NzhhY2ZlMDk3MDMzODA3ZTk4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTAzLDYgKzUx
MDMsMTMgQEAKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVl
dWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVl
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNE
QUFDNCAvKiBJUENUZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8q
IElQQ1Rlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEz
REExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcg
LyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZD
NkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RDNTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZC
NEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUxMjgsNiArNTEzNSw3IEBACiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0
RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCRERBMzNGMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JE
REEzNDAyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTM3RjZGMjdCMTQ3NUYw
MDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRT
YWZlT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1
NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3ODEsNiArNjc4OSwxMCBAQAogCQkJ
CUNEODI1MkQxMjVENDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIu
aCAqLywKIAkJCQlDRDgyNTJEMzI1RDQ2NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLm1lc3NhZ2VzLmluICovLAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAv
KiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNE
QTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJ
CQkJN0I1QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAg
Ki8sCisJCQkJN0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oICovLAorCQkJCTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZG
N0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYy
MkYxMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8s
CkBAIC02ODcxLDYgKzY4ODMsOCBAQAogCQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDRE
Qzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2
MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEz
REE4MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8s
CisJCQkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLmggKi8sCiAJCQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJh
Y2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZp
ZGVvVHJhY2tQcm94eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApAQCAtNzI0OCw2ICs3MjYyLDcg
QEAKIAkJCQkxQURDQjg2ODE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEu
Y3BwICovLAogCQkJCTFBRENCODY5MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5oICovLAogCQkJCTVDRDc0OEI1MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllci5oICovLAorCQkJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2
RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0
NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1
REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwICovLApAQCAtNzI4Nyw2ICs3
MzAyLDcgQEAKIAkJCQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFz
aFRhYmxlUmVhZE9ubHkuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4
dENoZWNrZXJTdGF0ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0
UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZD
RDMgLyogVGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4
M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAw
ODNGNTFDIC8qIFRvdWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1
RkU2M0EgLyogVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlMjlm
NGJkNTYxMzJlY2Q2NzE3MWJjMzdjYjJjYzU2MWJlMTI5MzU5Li43NTI4YTRhMDFlMTc4ZDY0NDFl
MDY5M2MzOGMxOTYxMTgxOTkyMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTEgQEAKICNp
bmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFdFQkdMKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0
YjA3YzQwM2Y2MGI4YWQxM2RhZDliODdiZGVkMGEuLmNhMGM4ZDc2ZmYyYzhlZWQ0YzFiMWVjODZj
Y2YyZmQzNDRiMWUwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIyLDIzIEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK1JlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChp
c0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlOjpSZXBs
eShyZXN1bHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRM
b3N0KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6Y3JlYXRlKCptX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBXVEZNb3ZlKCpyZXN1bHQpKTsKK30K
KyNlbmRpZgorCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJl
RnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0
dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCAyOWYwMTk4NzE5NTU5OTg3OTJlZTc3OTVk
OWFhNjBjMmYzOTczOTcxLi41ZDFjYWIyMThmNzg1Y2JhMTE0NmE4OTEyMmIzMGQxMGNjNjgzMDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNjUsNiArNjUs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsK
ICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUoKSBmaW5hbDsKKyNlbmRpZgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NH
TGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7CiAgICAg
Ym9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCBmZjdlMTQ4ZDZi
NWVlYmEwMjRhOTNlM2ViMjEyNjJiYWI3MjI4MDhjLi4wYjhiYmExNmNmZWMxNmIyYmExODcxNzFh
ZmQ5YjNiMzEzMWQ2N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05OSw5ICs5OCw2IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwot
I2VuZGlmCiBwcml2YXRlOgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICAgICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdC
YWNrZW5kKQpAQCAtMTE0LDIwICsxMTAsNiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi1SZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQotewotICAg
IGlmICghbV9kaXNwbGF5QnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KLSAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNv
cHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZh
Y2UtPnN1cmZhY2UoKSk7Ci0gICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1h
Z2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwotfQotI2VuZGlmCi0KIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDI1MDI2MTVkYTI3MmIzYmY0NmNmNDY0OTYxYjdmOGViMmExZjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
ZmllclR5cGU+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2lu
ZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyV3JpdGVS
ZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9G
cmFtZVJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBP
YmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cj47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMDFmNTY4YmNmZmYzNzZmODA1ODgzMGJlNTVjNWYzNTU2ZWY1Njk3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5
TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxSZW1vdGVWaWRlb0Zy
YW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZVZpZGVv
RnJhbWVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgV1RGTW92ZShwcm9wZXJ0aWVzKSkpOwor
fQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Ojpwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmIHJlZmVy
ZW5jZSwgY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQoreworICAgIHJl
dHVybiB7CisgICAgICAgIFdURk1vdmUocmVmZXJlbmNlKSwKKyAgICAgICAgbWVkaWFTYW1wbGUu
cHJlc2VudGF0aW9uVGltZSgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb01pcnJvcmVkKCks
CisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwKKyAgICAgICAgZXhwYW5kZWRJ
bnRTaXplKG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSkKKyAgICB9OworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFByb3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQorICAg
IDogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBt
X3JlZmVyZW5jZVRyYWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3ByZXNlbnRh
dGlvblRpbWUocHJvcGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01pcnJvcmVk
KHByb3BlcnRpZXMuaXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGllcy5yb3Rh
dGlvbikKKyAgICAsIG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCit7CisgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5
Ojp+UmVtb3RlVmlkZW9GcmFtZVByb3h5KCkKK3sKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lm
TmVlZGVkKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJh
Y2tlci5pZGVudGlmaWVyKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndyaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZl
cmVuY2VUcmFja2VyLndyaXRlKCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVm
ZXJlbmNlVHJhY2tlci5yZWFkKCk7Cit9CisKK01lZGlhVGltZSBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnByZXNlbnRhdGlvblRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByZXNlbnRhdGlv
blRpbWU7Cit9CisKK1dlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAoreworICAgIHJldHVybiB7IFdlYkNvcmU6OlBsYXRm
b3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCB7IH0gfTsKK30KKworTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yb3RhdGlvbjsKK30KKworYm9vbCBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzTWly
cm9yZWQ7Cit9CisKK3VpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNz
LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlkZW9GcmFtZVBy
b3h5Ojp2aWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVsZWFzZVVudXNlZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFByb3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQoreworICAgIFJlbW90ZVZp
ZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSB7IHsgcHJvcGVydGllcy5yZWZlcmVuY2UuaWRl
bnRpZmllcigpLCBwcm9wZXJ0aWVzLnJlZmVyZW5jZS52ZXJzaW9uKCkgfSwgMCB9OworICAgIGNv
bm5lY3Rpb24uc2VuZChNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVh
c2VWaWRlb0ZyYW1lKHdyaXRlKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6ZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdw
dVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LCBudWxscHRyKSkKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJh
bWUod3JpdGUoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Omdw
dVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQoreworICAg
IGlmIChhdXRvKiBncHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgbnVsbHB0cikpCisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU3OTViNDdhZmQxMDM3NWZjYmQ4MDc2MjExODEwMzdlMDQ4Y2JjMTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVj
dGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBH
UFVQcm9jZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgUmVtb3RlVmlkZW9GcmFtZVByb3h5IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWUsIHByaXZhdGUgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVtb3RlVmlkZW9GcmFtZVByb3h5KTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3Qg
UHJvcGVydGllcyB7CisgICAgICAgIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSBy
ZWZlcmVuY2U7IC8vIFRoZSByZWNlaXZlciBob2xkcyB0aGUgcmVmLCBzbyBpdCBtdXN0IGJlIHJl
bGVhc2VkLgorICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZTsKKyAgICAgICAgYm9v
bCBpc01pcnJvcmVkIHsgZmFsc2UgfTsKKyAgICAgICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7
IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwor
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3Rh
dGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVu
Y2UmJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmKTsKKworICAgIHN0YXRpYyBSZWZQdHI8
UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBQcm9w
ZXJ0aWVzJiYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lUHJveHkoKSBmaW5hbDsKKworICAgIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ugd3JpdGUoKSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNp
emUoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgorICAg
IE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9Sb3Rh
dGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aWRlb01pcnJvcmVk
KCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZp
ZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsKKyAgICAvLyBGSVhNRTogV2hlbiBW
aWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgor
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgZmluYWw7
CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworCisgICAgc3Rh
dGljIHZvaWQgcmVsZWFzZVVudXNlZChJUEM6OkNvbm5lY3Rpb24mLCBQcm9wZXJ0aWVzJiYpOwor
cHJpdmF0ZToKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
LCBQcm9wZXJ0aWVzJiYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgp
OworCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCBvdmVycmlkZXMuCisgICAg
dm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikg
ZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMgZGVm
YXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uIHsgbnVsbHB0ciB9OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2VUcmFja2VyIG1fcmVmZXJlbmNlVHJhY2tlcjsKKyAgICBjb25zdCBNZWRpYVRpbWUgbV9w
cmVzZW50YXRpb25UaW1lOworICAgIGNvbnN0IGJvb2wgbV9pc01pcnJvcmVkOworICAgIGNvbnN0
IFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbjsKKyAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHByZXNlbnRhdGlvblRpbWUKKyAgICAgICAgPDwgaXNNaXJyb3JlZAor
ICAgICAgICA8PCByb3RhdGlvbgorICAgICAgICA8PCBzaXplOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVy
dGllcz4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2U+
IHJlZmVyZW5jZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhVGltZT4gcHJlc2VudGF0aW9uVGlt
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTWlycm9yZWQ7CisgICAgc3RkOjpvcHRpb25h
bDxWaWRlb1JvdGF0aW9uPiB2aWRlb1JvdGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6SW50U2l6ZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWUKKyAgICAg
ICAgPj4gaXNNaXJyb3JlZAorICAgICAgICA+PiB2aWRlb1JvdGF0aW9uCisgICAgICAgID4+IHNp
emU7CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnJlZmVyZW5jZSksIFdURk1v
dmUoKnByZXNlbnRhdGlvblRpbWUpLCAqaXNNaXJyb3JlZCwgKnZpZGVvUm90YXRpb24sICpzaXpl
IH07Cit9CisKK30KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1w
bGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWUpCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFT
YW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpS
ZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGU1ZWY0NmU2MDgy
Mzk0NjJhYTQwNDhjYjdkM2ZhMDM0MmU5OGI1NzUuLjZiNjJkYWRjNzI5MjFmYjI1YzNkOGM4OWI3
NTAzOWNiNzc3ZWM4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgog
I2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC00OSwx
MiArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGwKIAogU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgbWFuYWdlciwgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGll
bnQmIGNsaWVudCkKICAgICA6IFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihjbGll
bnQpCisgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIp
Ci0gICAgLCBtX2Nvbm5lY3Rpb24oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKQogICAgICwgbV9pZGVudGlmaWVyKFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiB7CiAgICAgbWFuYWdl
ci5hZGRMYXllcigqdGhpcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hZGRDbGllbnQoKnRoaXMpOworICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiB9CiAKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjppbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzgsNyArODAsNyBAQCB2
b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0TG9nSWRlbnRpZmllcihTdHJpbmcmJiBs
b2dJZGVudGlmaWVyKQogCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBkaXNjb25uZWN0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6UmVsZWFzZUxheWVy
IHsgbV9pZGVudGlmaWVyIH0sIDApOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFu
YWdlci0+cmVtb3ZlTGF5ZXIoKnRoaXMpOwpAQCAtMTQwLDYgKzE0MiwxMyBAQCB2b2lkIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQog
ewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChpczxSZW1vdGVWaWRlb0Zy
YW1lUHJveHk+KHNhbXBsZSkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlU2FtcGxlID0gZG93bmNh
c3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpOworICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZSB7IHJlbW90ZVNhbXBsZS5yZWFkKCkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGF1dG8gcmVtb3RlU2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6
OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFj
ZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5zdXJmYWNlKCkpIHsKQEAgLTE0OCw3ICsx
NTcsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRp
YVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpF
bnF1ZXVlU2FtcGxlIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOworICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpF
bnF1ZXVlU2FtcGxlQ1YgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCkBAIC0x
NzEsMTEgKzE4MCwxOCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0RGlkRmFp
bChib29sIHZhbHVlKQogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmdwdVByb2Nlc3ND
b25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogewogICAgIG1fc2hhcmVk
VmlkZW9GcmFtZVdyaXRlci5kaXNhYmxlKCk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25u
ZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2RpZEZhaWwgPSB0cnVlOwogICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZh
aWwoKTsKIH0KIAordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBpZiAoYXV0byogZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIp
KQorICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30K
KwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNTYzNjlhZGRm
MGFiZjM0NmIwZDIxYzg1MDZkNjljYjNkM2I0MGUzOS4uMDQ0NGVjZjJiODYyNzk0NDMyMTExM2U2
OWQyNmIxMmIyNTViZmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiwgV2ViQ29yZTo6U2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpDbGllbnQmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29u
bmVjdGlvbklmTmVlZGVkKCk7CiAKICAgICAvLyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIKICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJ
bnRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKQEAgLTc2LDYg
Kzc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERpZEZhaWwoYm9vbCk7CiAgICAgYm9vbCBj
b3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKIAorICAgIEdQVVByb2Nlc3ND
b25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFdlYWtQdHI8U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4IGIxZWY4ZjU2NDUy
ZjFmYzY5MWZlZGU0YzQ4NDljM2I1YjA2YzY2OTMuLmI4ZDlkMWFlMTE2NDU4Y2NlYzQwMDVlYjVm
NzRmMWFiMGJhZjQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApAQCAtMTUwLDE4ICsx
NTAsMzMgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6YXVkaW9TdG9yYWdlQ2hh
bmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmMKICAgICBpdGVyYXRvci0+dmFsdWUtPnNl
dFN0b3JhZ2UoaXBjSGFuZGxlLmhhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzLCBX
VEZNb3ZlKHNlbWFwaG9yZSksIG1lZGlhVGltZSwgZnJhbWVDaHVua1NpemUpOwogfQogCi12b2lk
IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShSZWFsdGlt
ZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVWaWRlb1NhbXBsZSYmIHNh
bXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYmIHBy
b3BlcnRpZXMsIFZpZGVvU2FtcGxlTWV0YWRhdGEmJiBtZXRhZGF0YSkKIHsKICAgICBBU1NFUlQo
IVdURjo6aXNNYWluUnVuTG9vcCgpKTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3ZpZGVvU291
cmNlcy5maW5kKGlkZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3ZpZGVvU291cmNl
cy5lbmQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8g
ZmluZCBzb3VyY2UgJWxsdSBmb3IgcmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGUiLCBpZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgICAgICBSZW1vdmVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VV
bnVzZWQobV9jb25uZWN0aW9uLCBXVEZNb3ZlKHByb3BlcnRpZXMpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdURk1v
dmUoc2FtcGxlKSwgbWV0YWRhdGEpOworICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9TYW1wbGVB
dmFpbGFibGUoV1RGTW92ZShzYW1wbGUpLCBXVEZNb3ZlKG1ldGFkYXRhKSk7CiB9CiAKK3ZvaWQg
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlQ1YoUmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVmlkZW9TYW1wbGUmJiBz
YW1wbGUsIFZpZGVvU2FtcGxlTWV0YWRhdGEmJiBtZXRhZGF0YSkKK3sKKyAgICBBU1NFUlQoIVdU
Rjo6aXNNYWluUnVuTG9vcCgpKTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3ZpZGVvU291cmNl
cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3ZpZGVvU291cmNlcy5l
bmQoKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gZmlu
ZCBzb3VyY2UgJWxsdSBmb3IgcmVtb3RlVmlkZW9TYW1wbGVBdmFpbGFibGVDViIsIGlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXRlcmF0b3ItPnZh
bHVlLT52aWRlb1NhbXBsZUF2YWlsYWJsZShXVEZNb3ZlKHNhbXBsZSksIFdURk1vdmUobWV0YWRh
dGEpKTsKK30KKwordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6CisKIFJlbW90ZUNh
cHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6UmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJl
YWx0aW1lQXVkaW9Tb3VyY2U+JiYgc291cmNlKQogICAgIDogbV9zb3VyY2UoV1RGTW92ZShzb3Vy
Y2UpKQogewpAQCAtMjMyLDcgKzI0NywxNyBAQCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6
UmVtb3RlVmlkZW86OlJlbW90ZVZpZGVvKFNvdXJjZSYmIHNvdXJjZSkKIHsKIH0KIAotdm9pZCBS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRh
IG1ldGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlVmlkZW86
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYm
IHByb3BlcnRpZXMsIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRhdGEpCit7CisgICAgYXV0byB2
aWRlb0ZyYW1lID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoV1RGTW92ZShyZWZlcmVu
Y2UpLCBXVEZNb3ZlKHByb3BlcnRpZXMpKTsKKyAgICBzd2l0Y2hPbihtX3NvdXJjZSwgWyZdKFJl
ZjxSZW1vdGVSZWFsdGltZVZpZGVvU291cmNlPiYgc291cmNlKSB7CisgICAgICAgIHNvdXJjZS0+
dmlkZW9TYW1wbGVBdmFpbGFibGUodmlkZW9GcmFtZSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9u
U2l6ZSgpLCBtZXRhZGF0YSk7CisgICAgfSwgWyZdKFJlZjxSZW1vdGVSZWFsdGltZURpc3BsYXlT
b3VyY2U+JiBzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5yZW1vdGVWaWRlb1NhbXBsZUF2YWls
YWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZVZpZGVvOjp2aWRlb1NhbXBsZUF2YWlsYWJsZUNWKFJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2FtcGxlLCBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFk
YXRhKQogewogICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpKQog
ICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6
Y3JlYXRlKHJlbW90ZVNhbXBsZS52aWRlb0Zvcm1hdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
aW5kZXggODZmNDkwYjc4MGZlNDljYTExYTEwNGFmN2I2OWJkMzNlNjhjMTcyNi4uN2U4OGNlZTQ2
YWUyN2ExZDFmNjM2MzMzMWVlMGQ1MDM5NWIyNjRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
QEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmgi
CiAjaW5jbHVkZSAiUmVtb3RlUmVhbHRpbWVEaXNwbGF5U291cmNlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgpAQCAtNzAsNyArNzIsOCBA
QCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzCiAgICAgdm9pZCBhdWRpb1N0b3JhZ2VDaGFuZ2Vk
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSYmLCBjb25zdCBNZWRpYVRp
bWUmLCBzaXplX3QgZnJhbWVTYW1wbGVTaXplKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgTWVkaWFUaW1lLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRl
b1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwg
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiYsIFdlYkNvcmU6OlZpZGVvU2FtcGxl
TWV0YWRhdGEmJik7CisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZUNWKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
LCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhJiYpOwogCiAgICAgdm9pZCBzZXRDb25uZWN0
aW9uKElQQzo6Q29ubmVjdGlvbiopOwogCkBAIC0xMDUsNyArMTA4LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgdXNpbmcgU291cmNlID0gc3RkOjp2YXJpYW50PFJlZjxSZW1vdGVSZWFsdGltZVZpZGVv
U291cmNlPiwgUmVmPFJlbW90ZVJlYWx0aW1lRGlzcGxheVNvdXJjZT4+OwogICAgICAgICBleHBs
aWNpdCBSZW1vdGVWaWRlbyhTb3VyY2UmJik7CiAKLSAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShSZW1vdGVWaWRl
b0ZyYW1lUmVmZXJlbmNlJiYsIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYmLCBX
ZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKTsKKyAgICAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIFdlYkNvcmU6OlZpZGVvU2Ft
cGxlTWV0YWRhdGEpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU291cmNlIG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NTFiM2NkNzk5
YTFmNzU0ZjJlODAzYzQ2ODg5MGU4ZjVhYWZhNjYuLjEwZThiMTMyMzI0ZmFmNjM4M2FmNzQ5ZDVh
NWU0OTY1ODY3ZDAzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTI1LDcgKzI1LDggQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0
dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUp
OwotICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0cnVjdCBX
ZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhKQorICAgIFZpZGVvU2FtcGxlQXZh
aWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzLCBzdHJ1Y3QgV2Vi
Q29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBWaWRlb1NhbXBsZUF2YWls
YWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1l
dGFkYXRhIG1ldGFkYXRhKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNWI3MzljNDZkM2IyNmIxNTRkZGNlZTFhM2FmNjFi
NmQzZTAxYjA3Li5mNmMxYmMyZWIzYjViMzhmZTNlMWUyZGE1ZWNmMjdkNmJkMDFhZTUwIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjItMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2Vu
dCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50
IGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTAyICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBFbWJlZCBhZGRlZC9tb2Rp
ZmllZC9kZWxldGVkIHN0YXR1cyBpbnRvIGNoYW5nZWQgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi41
ZDc0MTUyMWFkYjU5OGE4MmZhODFlMTg5NTE3MzllZDBiMjU5NzhkIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVm
ZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBh
cmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJ
ZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRG
T1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZv
ckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRl
bnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAg
ICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lk
IFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5
VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50
MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9u
b3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpIFN5bmNocm9ub3VzCisjZW5kaWYK
ICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiB7fQogfX0KQEAgLTIzMiw3ICsy
MzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+
IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJldHVybiBOb25lCiAgICAg
Y29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVzIGFyZSBjb250YWluZXJz
IGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cics
ICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnLCAnUmV0
YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICB0ZW1w
bGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBAIC02NDAsNyArNjQ2LDEzIEBAIGNsYXNz
IHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAgICAgICB3ZWJr
aXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KICAgICAgICAgICAgICAgICBh
c3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5lcikpCiAg
ICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUgKyAiUmVw
bHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5
cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFt
aWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtm
IntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2VseSB0aGlzIGNyZWF0ZXMgYSBkYW5nbGlu
ZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9IHsgeyB9IH07LgorICAgICAgICAgICAg
ICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4ODkK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlw
ZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0KKwogICAgICAgICAgICAgICAgIHNlbGYu
b3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSldCiAgICAgICAgICAgICAgICAg
aWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmlu
X2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5hbWV9LmJ1
ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
YW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0OGQyODgxNTdhZGZkYzFiOC4uYzQ1
YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAg
cHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcm
IHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJhY2tJRDsgfQogICAgIHNpemVfdCBzaXpl
SW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAgICBGbG9h
dFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0
aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYg
b2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGltZSArPSBvZmZzZXQ7IG1fZGVjb2RlVGlt
ZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Y3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNvZGVUaW1lLCBtX2R1cmF0aW9uLCBzdGF0
aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElzTm9uRGlzcGxheWluZykpOwogICAgIH0K
ICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0K
LSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxh
dGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUs
IHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0K
</data>
<flag name="commit-queue"
          id="478064"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451405</attachid>
            <date>2022-02-09 10:50:01 -0800</date>
            <delta_ts>2022-02-11 02:43:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236099-20220209204959.patch</filename>
            <type>text/plain</type>
            <size>129527</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg4ODIxOTNiY2ZjZDA0
NDFlNGVhMGI5ZjY1NjQyNjhhMjBhNDQ2Ni4uZTQ0ZmY3YTVmODFmMjAxM2QwM2M1NjExY2M3YWE5
Njg3ODU5NDkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTA5ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMDkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBzZWxmLmxvY2F0aW9u
LmhyZWYgaXMgaW5jb3JyZWN0IGluIHNoYXJlZCB3b3JrZXJzIGluIGNhc2Ugb2YgcmVkaXJlY3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDNjYzM4ZGE3MzhmNGZkZmE4MTM3ZDMzZTNjMTdmMTQ1OTcxNmVmNWQuLjY4
OGVhMTQzNWY3NzJiNjNjZWUwY2NmNzY4OTExMmU5MThkY2FjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTg0IEBACisyMDIyLTAyLTA5ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXBy
ZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJl
c2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgIFdlYkNvbnRlbnQgcHJvY2VzczoKKyAgICAgICAgQWRkIFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5LCBXZWJDb250ZW50IHByb2Nlc3Mgc2lkZSBwcm94eSBvYmplY3QgdGhhdAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgY2FuIHVz
ZS4KKworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgY2FuIGJlIHNlbnQgdG8gdGhlIEdQ
VVAgYW5kIHRoZSB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLiBTbworICAgICAgICB0aGUg
Y2FwdHVyZWQgY29udGVudCBzaG93cyBpbiBjb21wb3NpdGluZyB0aHJvdWdoIHZpZGVvIGVsZW1l
bnQuCisKKyAgICAgICAgQXQgdGhlIG1vbWVudCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMgY2Fubm90IHBhaW50IFJlbW90ZVZpZGVvRnJhbWVQcm94eSB0byB0aGUKKyAgICAg
ICAgZG9jdW1lbnQgQ1NTIHBhaW50ZWQgY29udGVudCwgQ29udGV4dDJEIG9yIFdlYkdMIGNhbnZh
cy4KKworICAgICAgICBHUFVQOgorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBp
cyBhIG1hcHBpbmcKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgLT4gTWVkaWFT
YW1wbGUuIEN1cnJlbnRseSBhbGwgb2JqZWN0cworICAgICAgICBtYXAgdG8gbm9ybWFsIE1lZGlh
U2FtcGxlQVZGT2JqQy4KKworICAgICAgICBBZGQgYW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiB3
aGVyZSBhIHJlbW90ZSBNZWRpYVNhbXBsZSBpcyByZXR1cm5lZCBieSBJUEM6CisgICAgICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpLgorCisgICAgICAgIFRoZSBHUFVQIG9iamVjdCBwb2ludGVkIGJ5IFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyIGlzOgorICAgICAgICAtIGNyZWF0ZWQgaW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgaW4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgdGhyZWFkCisgICAgICAgIC0gY29uc3VtZWQgaW4gUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlIGluIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIgdGhyZWFkCisgICAgICAgIC0gcmVsZWFzZWQgaW4gUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lIGluIEdQVVAgbWFpbiB0aHJlYWQK
KyAgICAgICAgQWxsIG9mIHRoZXNlIG1lc3NhZ2VzIGFyZSBhc3luY2hyb25vdXMgYW5kIGNhbiBh
cnJpdmUgdG8gdGhlaXIgZGVzdGluYXRpb24gaW4gYW55IG9yZGVyLgorICAgICAgICBGb3IgZXhh
bXBsZSwgcmVxdWVzdCB0byByZWxlYXNlIHRoZSB2aWRlbyBmcmFtZSBjYW4gaGFwcGVuIGJlZm9y
ZSB0aGUgbWVzc2FnZSB0byBjcmVhdGUgdGhlIHZpZGVvIGZyYW1lIGhhcyBiZWVuCisgICAgICAg
IHJlY2VpdmVkLgorCisgICAgICAgIFRvIHNvbHZlIHRoZSBvcmRlcmluZyBpc3N1ZSwgaW50cm9k
dWNlIHJlYWRlcnMtd3JpdGVycyByZWZlcmVuY2UgY291bnRpbmcgbWV0aG9kIHZpYSBmb2xsb3dp
bmcgY2xhc3NlczoKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UKKyAg
ICAgICAgIC0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlCisgICAgICAgICAtIE9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyCisKKyAgICAgICAgT2JqZWN0SWRlbnRpZmllciBp
ZGVudGlmaWVzIHRoZSBvYmplY3QuCisgICAgICAgIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVy
ZW5jZSBpZGVudGlmaWVzIGEgbmV3IHZlcnNpb24gb2YgdGhlIGNvbnRlbnQgcG9pbnRlZCBieSB0
aGUgaWRlbnRpZmllci4KKyAgICAgICAgUHNldWRvY29kZSBleGFtcGxlczoKKyAgICAgICAgICBX
cml0ZVJlZmVyZW5jZSB7IGlkZW50aWZpZXIgPSAxLCBwZW5kaW5nUmVhZHMgPSAwLCB2ZXJzaW9u
ID0gMCB9IG1lYW5zOgorICAgICAgICAgICAgIkVuZCB0aGUgbGlmZS10aW1lIG9mIGlkZW50aWZp
ZXIgMSwgdmVyc2lvbiAwLiBDcmVhdGUgdmVyc2lvbiA9IDEiCisgICAgICAgICAgICBUaGlzIGlz
IGhvdyBpbml0aWFsIG9iamVjdCBpcyBhc3NpZ25lZCB0byB0aGUgcmVmZXJlbmNlLgorICAgICAg
ICAgIFdyaXRlUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDc3LCB2
ZXJzaW9uID0gMzIgfSBtZWFucworICAgICAgICAgICAgIkVuZCB0aGUgbGlmZS10aW1lIG9mIGlk
ZW50aWZpZXIgMSwgdmVyc2lvbiAzMiB3aGVuIGFsbCA3NyByZWFkcyBoYXZlIGNvbXBsZXRlZC4g
Q3JlYXRlIHZlcnNpb24gPSAzMyIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVy
ZW5jZSBkZWNsYXJlcyBhIHJlYWQgZGVwZW5kZW5jeSB0byBhIHNwZWNpZmljIHZlcnNpb24gb2Yg
dGhlIGNvbnRlbnQgcG9pbnRlZCBieSB0aGUgaWRlbnRpZmllci4KKyAgICAgICAgUHNldWRvY29k
ZSBleGFtcGxlczoKKyAgICAgICAgICAgUmVhZFJlZmVyZW5jZSB7IGlkZW50aWZpZXIgPSAxLCB2
ZXJzaW9uID0gMzIgfSBtZWFucworICAgICAgICAgICAiQ29tcGxldGUgb25lIHJlYWQgb2YgaWRl
bnRpZmllciAxLCB2ZXJzaW9uIDMyIi4KKworICAgICAgICBDcmVhdGVzLCB1cGRhdGVzIGFuZCBk
ZXN0cnVjdGlvbnMgYXJlIFdyaXRlUmVmZXJlbmNlcy4KKyAgICAgICAgUmVhZHMgYXJlIFJlYWRS
ZWZlcmVuY2VzLgorCisgICAgICAgIFRoZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tl
ciBjcmVhdGVzIHdyaXRlIGFuZCByZWFkIHJlZmVyZW5jZXMgaW4gdGhlIFByb3h5IC11c2luZyBw
cm9jZXNzIChXZWJDb250ZW50IHByb2Nlc3MpLgorCisgICAgICAgIFRoZSBhZGRlZCBUaHJlYWRT
YWZlT2JqZWN0SGVhcCByZXNvbHZlcyB0aGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyBpbiB0
aGUgcmVhbCBvYmplY3QgcHJvY2VzcyAoR1BVUCBpbiB0aGlzIGNhc2UpLgorICAgICAgICBSZWFk
cyBhbmQgd3JpdGVzIGFyZSBibG9ja2luZyB0aGUgcmVxdWVzdGluZyB0aHJlYWQgYXBwcm9wcmlh
dGVseToKKyAgICAgICAgIC0gUmVhZCBvZiB1bmtub3duIHZlcnNpb24gb2YgdGhlIGlkZW50aWZp
ZXIgYmxvY2tzIHVudGlsIHRoZSB3cml0ZSBjcmVhdGVzIHRoZSB2ZXJzaW9uCisgICAgICAgICAt
IFdyaXRlIG9mIG5ldyB2ZXJzaW9uIG9mIHRoZSBpZGVudGlmaWVyIGJsb2NrcyB1bnRpbCB0aGUg
cmVhZHMgaGF2ZSByZXRpcmVkLCBvciBjcmVhdGVzIHBhcmFsbGVsLCBuZXcgdmVyc2lvbgorICAg
ICAgICAgICBvZiB0aGUgY29udGVudCBpbiBjYXNlIG9mIGNvcHktb24td3JpdGUgc2NoZW1lcy4K
KworICAgICAgICBJbiB0aGlzIGNvbW1pdCBvYmplY3RzIHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIgYXJlIGltbXV0YWJsZSB1bnRpbCBkZXN0cm95ZWQsIHNvIHRoZXJlIGlz
IG5vIHVwZGF0ZSBvcgorICAgICAgICBjb3B5LW9uLXdyaXRlIHNjaGVtZSBoZXJlLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwIGNvbnN0KToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkVmlkZW9GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5o
OiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAg
ICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVf
Zm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAg
KiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFy
dE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAg
ICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAgICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6
CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0
SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpP
YmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnBlbmRpbmdSZWFk
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5j
ZTo6cmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlOjpyZXRpcmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXI6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlVHJhY2tlcjo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV1RGOjpE
ZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+OjpoYXNoKToK
KyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlPFQ+Pjo6ZXF1YWwpOgorICAgICAgICAqIFNoYXJlZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGhyZWFkU2FmZU9iamVjdEhlYXA6OlJlZmVyZW5j
ZVN0YXRlOjpSZWZlcmVuY2VTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkhlbGRUeXBlPjo6cmV0
aXJlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmVSZW1vdmUpOgorICAgICAg
ICAoV2ViS2l0OjpIZWxkVHlwZT46OmNsZWFyKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmg6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpkaXNjb25u
ZWN0R1BVUHJvY2Vzc0lmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxpemVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVy
dGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW46IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5oLgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6flNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0
aW9uSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaDoKKwogMjAyMi0wMi0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIHNlbGYubG9jYXRpb24uaHJlZiBpcyBpbmNvcnJlY3QgaW4gc2hh
cmVkIHdvcmtlcnMgaW4gY2FzZSBvZiByZWRpcmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4
YTAxZTU3OGQ4YTM1MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIuLjgwNTAwMTNlZDY1ZjQwYzg4
ZjA0MzYxMjc4MDI1ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM0OSw2ICsx
MzQ5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL1VzZXJBZ2VudC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oCiAgICAgcGxhdGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisgICAgcGxhdGZvcm0vVmlkZW9G
cmFtZS5oCiAgICAgcGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9W
aWRlb1NhbXBsZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlmNGFiMzNhOGJkNzVlN2E1OGEu
LjYxNDJkMjQzZGIyODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYwNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0xOTI2LDYgKzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxh
dGZvcm0vVGhyZWFkVGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCiBwbGF0Zm9ybS9Vc2Vy
QWN0aXZpdHkuY3BwCitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAogcGxhdGZvcm0vV2ViQ29yZUNy
b3NzVGhyZWFkQ29waWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCiBwbGF0
Zm9ybS9XaWRnZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDkyMGRlNDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2
NTM5Ni4uNzA5ZTY2MWM1MzE2Mzc3NWExM2M5ZTcxZTYyYWQ3M2RhNWYzMjNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQw
Nyw2ICsyNDA3LDcgQEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29u
dGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5
NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThGQzUwMDBCNEY4QSAvKiBNZWRp
YVNhbXBsZVZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8q
IFZpZGVvRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVD
QjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUxOCw2ICsxMTUxOSw4IEBACiAJCTdC
MTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBERjI3OTU4RkM0MDAw
QjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjQ0MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1l
QVZGLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcg
LyogVmlkZW9GcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
aWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUQyN0FC
RjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgx
NTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3
MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMw
MTQ3LDYgKzMwMTUwLDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFn
ZW50LmggKi8sCiAJCQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFs
aWRhdGlvbkJ1YmJsZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRl
b0ZyYW1lLmNwcCAqLywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5oICovLAogCQkJCTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRh
dGEuaCAqLywKIAkJCQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAgLyogVmlkZW9TYW1wbGVNZXRh
ZGF0YS5oICovLAogCQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwICovLApAQCAtMzc4MjMsNiArMzc4MjgsNyBAQAogCQkJCTBGMUEwQzM4
MjI5QTQ4MTgwMEQzN0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRl
b0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyog
VmlkZW9GcmFtZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkw
MDBDQjhENzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lZGlhU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmlu
ZGV4IDE4Mzk5NzIyNjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLmI0ZmU3MTY1Nzlm
ZjhlN2ZjMzQwZDg3Y2M4OTJmMWJiYjRiMGQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaApAQCAtNDksOSArNDksMTAgQEAgc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAg
ICAgICAgQ01TYW1wbGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1wbGVUeXBlLAog
ICAgICAgICBCeXRlUmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHlUeXBlLCAvLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1l
ZGlhU2FtcGxlLgogICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1vY2tTYW1wbGVC
b3gqIG1vY2tTYW1wbGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1w
bGVCb3g7CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVyOwogICAgICAg
ICBHc3RTYW1wbGUqIGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNv
dXJjZVJlZiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxlOwpAQCAtNjYs
NyArNjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6
ZUluQnl0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9u
U2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNv
bnN0IE1lZGlhVGltZSYpID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBI
YXNTeW5jSW5mbyA9IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxh
Z3MoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29u
c3QgPSAwOwogCiAgICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVfdCBieXRlT2Zm
c2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGU4MTZlY2QwOGNiOTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9G
cmFtZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitWaWRlb0ZyYW1lOjp+
VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29kZVRp
bWUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07
Cit9CisKK01lZGlhVGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRvbVN0cmluZyBWaWRl
b0ZyYW1lOjp0cmFja0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4geyB9OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJD
b3JlOjpGbG9hdFNpemUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBWaWRl
b0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBjb25zdAoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjpwYWly
PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4+IFZpZGVvRnJhbWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIg
fTsKK30KKworUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25E
aXNwbGF5aW5nQ29weSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKworTWVkaWFTYW1wbGU6
OlNhbXBsZUZsYWdzIFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVk
aWFTYW1wbGU6OlNhbXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhU2Ft
cGxlOjpCeXRlUmFuZ2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IFJlbW92ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6ZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9WaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3
Yjg0NzcxNDFlMDVmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyBhIHZpZGVv
IGZyYW1lIGZyb20gYSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxhci4KKy8vIEZJ
WE1FOiBDdXJyZW50bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVydHMgZnJvbSBN
ZWRpYVNhbXBsZSB1bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVycmluZyB0byBNZWRp
YVNhbXBsZQorY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogVGhl
c2UgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgorICAgIC8v
IFdlYkNvcmU6Ok1lZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRp
YVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlh
VGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJp
bmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXpl
SW5CeXRlcygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkZsb2F0
U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2Ft
cGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2Vu
dGF0aW9uVGltZSwgVXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3Bs
YXlpbmdDb3B5KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3Mg
ZmxhZ3MoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJ5
dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tbQppbmRleCBjMTI2YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45
YmY0YjBiOGQ1YzQ4MWE1MzRmZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpA
QCAtMzM0LDYgKzMzNCw5IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJh
Y2sgb2YgUmVtb3RlVmlkZW9GcmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAo
IWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBzYW1wbGVUb0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21T
YW1wbGVCdWZmZXI7CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
TW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVy
ZXJMYXRlbmN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIy
ZDJkZjk5Nzc1ZWU1ZWUyN2M3OGEyMGQ1OTU1Li41MTI2OTZhMTNhYzcyYWM4OGY4MDA4NjU2MmUz
MTEwNDVjNDFhYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODcsNiArOTg3
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhN
RTogRG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgorICAg
IGlmICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9
IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlw
ZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2NjEy
MWU3YzZmYjUxZGYyZjc3MWMxLi43YmU3MzUxZTViYWE3ZDIxZTYzZmM0OTlhMjcxMjM1ZWNmNGZi
OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAt
NTQsMTMgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faWQ7IH0KLSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJp
ZGUgeyBtX2lkID0gaWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2Ft
cGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4g
Ynl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBz
QnkoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CkBAIC05NywzICs5Niw3IEBAIHByb3RlY3Rl
ZDoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVk
aWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxl
OjpDTVNhbXBsZUJ1ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2Vk
ZWE1NWRmZTQyOTUzYzJjOWJmMmYyNjllYTEzYzQ2YzNiLi5hM2EzMTU2YmZiYTBjYTc5OTFmNjZk
ZDNlZjI0YzMyNDRkMGUzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tCkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0
VG90YWxTYW1wbGVTaXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVk
aWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2Ft
cGxlQnVmZmVyID0gbV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlh
NjIzOGU1MWRmOGYwZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2
MzViZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3
ICsyMzUsNyBAQCB2b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnko
Y29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNh
bXBsZSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1w
bGUgTWVkaWFTYW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQ
bGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVU
eXBlLCB7IC5nc3RTYW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2
NzVkZWVjZWE3OGU2NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5
YTRmOTEwYjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcg
KzUzLDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNv
bnN0IFN0cmluZyYgdHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9
CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25z
dCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0
ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUo
Y29uc3QgTWVkaWFUaW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0
ciwgbnVsbHB0ciB9OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5n
Q29weSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJy
YXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIx
YWViZDY1Yi4uNGFjNjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHBy
aXZhdGU6CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2JveC5kZWNvZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRU
cmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6
ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsg
fQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1T
YW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0
Zm9ybVNhbXBsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdl
PiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZs
b2F0U2l6ZSgpOyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC04Nyw3ICs4Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1w
bGU6OmZsYWdzKCkgY29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1Q
bGF0Zm9ybVNhbXBsZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3Jt
U2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBs
YXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBl
LCB7ICZtX2JveCB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDI5ZjRjNzgxODE4MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLjBkOGY2ZWFlMTkwMGNh
ZjYwOTZhYjA1MTFlMTNiYzBjOGRlZGIzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYg
KzE3OCw3IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAKIAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAg
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyCkBAIC0yNzksNiArMjgwLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19J
Tl9GSUxFUwogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlCiAgICAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eQogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcgogICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CmluZGV4IDcyMjljMWI5ODcwODg4MWI3YmFlYzNjZjdhMDI0NzM1NzJl
MzVkZTEuLjVmZTYzNDcxMmMwZWNiZTYxZDBhZjM3NTBjOThiNjJlOTkyMWE3ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3
LDcgQEAgJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xOTEsNiArMTkyLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVS
ZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTg2MzI4MTQ3YjU2YzVjNTYw
YWE1YWJhMzliZmFkMzI0NWMyNjE1Ny4uOTNlOWNmMmJkOTM2OTQ4OTI0NjQ1YTkyMDRmYmFkYWZm
NmFiNzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CkBAIC0zODEsNiArMzgxLDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b0ZyYW1lUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdl
c1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM1MWZmYWUwYTU4NjYw
YzFkMTJmZjlhY2Q4NzdkMjdjNTFjMDdkMzMuLmMzYzBkNWFjNmUxYmE4NDBhZGNlNjZjOGM0YTU5
Njc3ODkwMDgyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIwMSw2ICsyMDEs
NyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eSBcCiAJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyIFwKIAlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlIFwKIAlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKQEAgLTI5OSw2ICszMDAs
NyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAor
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgXAogCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWVi
NmI1YmMxMDRiNzU0MTA0YjYzZS4uNGEzMTJlZTNkMzNiNjcyYWJlYzMzZDg3MzgwN2Q1Y2Q2OTJh
NTU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQxLDYgKzE0MSw3IEBACiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjZW5kaWYKIApAQCAtMjU3
LDYgKzI1OCw5IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoR1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgZ3B1UHJv
Y2Vzcy5hdWRpb1Nlc3Npb25NYW5hZ2VyKCkuc2Vzc2lvbigpLnNldFJvdXRpbmdBcmJpdHJhdGlv
bkNsaWVudChtX3JvdXRpbmdBcmJpdHJhdG9yLmdldCgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOjpjcmVhdGUoKnRoaXMpOworI2VuZGlmCiAKICAgICBpZiAoIXBhcmFtZXRl
cnMub3ZlcnJpZGVMYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICBvdmVycmlkZVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMocGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CkBAIC0zMDAsNyAr
MzA0LDkgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxs
cHRyOwogICAgIH0KICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3Zp
ZGVvRnJhbWVPYmplY3RIZWFwLnJlc2V0KCk7CisjZW5kaWYKICAgICAvLyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kIG9iamVjdHMgcmVmIHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28g
d2UgbmVlZCB0byBtYWtlIHN1cmUKICAgICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xl
IGJ5IGRlc3Ryb3lpbmcgdGhlbS4KICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xl
YXIoKTsKQEAgLTk0MSw4ICs5NDcsMTUgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXRDYXB0dXJlQXR0cmlidXRpb25TdHJpbmcoKSBjb25zdAogewogfQogI2VuZGlmCisKK1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRl
b0ZyYW1lT2JqZWN0SGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwLmdldCgpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorCiAj
aWYgUExBVEZPUk0oTUFDKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwbGF5
Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1
bW1hcnlGbGFncyBmbGFncykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDYyNGUzZmEzNTFjZjBiMDM1ZTJlMTNh
OTMzMjVkZGQ0YzM0MmIxNDkuLjExYWNjMDBjNzRlYjVkMTJmODI4MmQ0NDY2Mzk3ZDg3ZDdlOTc1
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiwxMSBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIFJlbW90ZVdDTGF5ZXJUcmVlSG9zdDsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOworI2VuZGlmCisKKwogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29y
ZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVudApAQCAtMTQxLDYgKzE0Niw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVk
aW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxvd3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQogICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJhbWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYg
KzMxMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2FsbG93c1ZpZGVvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CiAjZW5kaWYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVzZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlk
MjY2MmMzNDJjMzNiNi4uOTgwMDU3OGI1MjA4NDMxN2U4ODY1MmRmYzUyYzc2Y2MxYzJmZjQzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xDVi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
NjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25u
ZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdC
YWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAs
IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0Zy
YW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAg
LCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIyMyw2ICsyMzAsMTQgQEAgdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmll
ZElkZW50aWYKICAgICBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJl
YWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAgYXNzZXJ0
SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5h
ZGRWaWRlb0ZyYW1lKFdURk1vdmUod3JpdGUpLCBtX2NvbnRleHQtPnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKCkpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaAppbmRleCBlYjIwZDE2YzM3N2Y1ZjNlMDA3ZjIxYmEyNTYyNGRkMTll
MzZiYjE3Li4xMGMwNjM2MTg2N2Q1ZTg4M2ViOWQ2YTg1MzI1Y2Q5MTBmYmRlMzE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlICJXQ0NvbnRlbnRC
dWZmZXJJZGVudGlmaWVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC02
MSw2ICs2NSw5IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YktpdCB7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOworI2VuZGlmCiAKIC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24g
b2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwog
Ly8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSBy
ZWNlaXZlZCBtZXNzYWdlcy4KQEAgLTEwOCw2ICsxMTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
dm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1l
V3JpdGVSZWZlcmVuY2UmJik7CisjZW5kaWYKICAgICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlh
KFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2ltdWxhdGVF
dmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50
Rm9yVGVzdGluZyk7CiAKQEAgLTEzMCw2ICsxNDAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRy
PFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0w+IG1fY29udGV4dCBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fc3RyZWFtVGhyZWFkKTsKICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXI7CiAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
IG1fcmVuZGVyaW5nQmFja2VuZDsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJlZjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcDsKKyNlbmRp
ZgogICAgIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdCBtX3JlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3Q7CiAgICAgTk9fVU5JUVVFX0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1f
c3RyZWFtVGhyZWFkOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5k
ZXggYzhhYjI5NzcyOTMwYmZkNDA4YTAzY2ViMzdhMGMyOTg5OGUzMDJiMi4uOTA5N2I0MjcwYmY1
M2RhMjRjMDkzYTU3ZWEzY2NiMTdhMjkwN2ZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgpAQCAtNDIsNiArNDIsOSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBQYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdl
QnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1
cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3Jt
YXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSByZXN1bHQpCisjZW5kaWYK
ICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAKICAgICB2b2lkIE1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZmODhmYzE2NzdjYjlmMmY0
NzI4NDZlODNmM2YyNTRlM2E5OTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30K
KworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOworfQorCit2
b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sKKyAgICBh
c3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBpZiAoYXV0byogZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBudWxscHRyKSkgeworICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAvLyBD
bGllbnRzIG1pZ2h0IGhvbGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlzIGhhcHBlbnMuIFRoZXkg
c2hvdWxkIGFsc28gc3RvcCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBkbyBub3QsCisgICAgICAg
IC8vIGF2b2lkIGJpZyBtZW1vcnkgbGVha3MgYnkgY2xlYXJpbmcgdGhlIGZyYW1lcy4gVGhlIGNs
aWVudHMgc2hvdWxkIGZhaWwgZ3JhY2VmdWxseSAoZG8gbm90aGluZykgaW4gY2FzZSB0aGV5IGZh
aWwgdG8gbG9vayB1cAorICAgICAgICAvLyBmcmFtZXMuCisgICAgICAgIGNsZWFyKCk7CisgICAg
ICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5nLgorICAgIH0KK30KK3Zv
aWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZFZpZGVvRnJhbWUoUmVtb3RlVmlkZW9G
cmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4m
JiBmcmFtZSkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJv
cGVydGllcz4gcmVzdWx0OworICAgIGlmIChmcmFtZSkKKyAgICAgICAgcmVzdWx0ID0gUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKCpmcmFtZSk7CisgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Oldhc0luaXRpYWxpemVkKHJlc3Vs
dCksICB3cml0ZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgcmV0aXJlKFdURk1vdmUo
d3JpdGUpLCBXVEZNb3ZlKGZyYW1lKSwgc3RkOjpudWxsb3B0KTsKK30KKwordm9pZCBSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdy
aXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRo
cmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1vdmUod3JpdGUpKTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1OWM4MDQ2NmY1ZjEzZjkzYmM0
MjU3MDk1ZDkxYjQ4MGVhMTYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlRocmVhZFNhZmVPYmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKKwor
Ly8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwgVmlkZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUg
bWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8v
IEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVjaWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0Zy
YW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZpZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNh
bXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUgaXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVz
cG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBWaWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9i
amVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlk
ZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUgbWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1h
aW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRseSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUg
TWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAg
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9iamVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisgICAgdm9pZCBhZGRWaWRlb0ZyYW1lKFJlbW90ZVZp
ZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYp
OworCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbik7Citwcml2YXRlOgorICAgIFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMuCisgICAgdm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UmJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAg
IGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBUaHJlYWRBc3Nl
cnRpb24gbV9jb25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworfTsKKworCisKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyNzhjZTNkMDM5ZGJlMTczMWQ1YWY2YzhlNDk5MTBhMzk1MmE3MTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKK21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNv
dW50ZWQgeworICAgIFJlbGVhc2VWaWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdy
aXRlUmVmZXJlbmNlIGlkZW50aWZpZXIpCit9CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZi
N2U3ZTVlMGRiYWJhMDgyMzFiYjhiNzhmOWJiZjBjMC4uYmY0NjFjZGZmOGFkZDYxNGRmYjBlYmYx
NDkzOTNlNGVhNWMzYWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgor
I2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmg+CkBAIC0zNSwxOCArMzcsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90
ZVZpZGVvU2FtcGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBT
ZWNvbmRzIGRlZmF1bHRUaW1lb3V0IHsgMzBfcyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBncHVDb25uZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRv
IGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4o
bmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bm5lY3Rpb24pKSk7CisgICAgYXV0byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI+KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Z3B1Q29ubmVjdGlvbiwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJl
dHVybiBsYXllci0+bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6
IG51bGxwdHI7CiB9CiAKLVJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCitSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVj
dGlvbihncHVDb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAg
LCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMp
KQorICAgICwgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFt
ZU9iamVjdEhlYXAoKSkKIHsKICAgICBBU1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
OwogfQpAQCAtMTEzLDcgKzExOSwyMyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cGF1c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwog
fQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShS
ZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNl
JiYgc2FtcGxlKQoreworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RI
ZWFwLT5yZXRpcmUoV1RGTW92ZShzYW1wbGUpLCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFt
ZWRpYVNhbXBsZSkgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1w
bGUpKSB7CisgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVB
VkZPYmpDPigqbWVkaWFTYW1wbGUpOworICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNw
bGF5SW1tZWRpYXRlbHkoYXZmTWVkaWFTYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5lbnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNh
bXBsZTsKICAgICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oCmluZGV4IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgyN2QwYTZmN2QyNTJh
YTdhMGQuLjgwMmM5MGZlOWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAi
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKQEAgLTQyLDExICs0NCwxMyBAQCBjbGFzcyBSZW1vdGVW
aWRlb1NhbXBsZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogCiBjbGFz
cyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPiBjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVj
dGlvbj4mJik7CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOwogCiAgICAg
dXNpbmcgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OndlYWtQdHJG
YWN0b3J5OwpAQCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0IGJvdW5kcygpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
Jik7CisgICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0
TG9nSWRlbnRpZmllcihTdHJpbmcmJik7CkBAIC03Myw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBw
YXVzZSgpOwotICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UmJik7CisgICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJik7CiAgICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hh
cmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNo
YXJlZFZpZGVvRnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAg
LTg1LDEyICs5MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0
dXNEaWRGYWlsKCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dw
dUNvbm5lY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJl
YWRlciBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBt
X2NvbnN1bWVUaHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZl
ZmFmYjQzZGNhNjA4Y2RjMzdkNjIxNmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4
OWI2NDYzMmFiYTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0
aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uKQogICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1
ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVl
U2FtcGxlKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ugc2FtcGxlKQorICAg
IEVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAg
Q2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVj
Y2JiNWFkMDBjZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2Rk
M2U1ZTcxOTc1YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9p
ZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RM
YXllciwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rp
b24uY29weVJlZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwg
bV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0g
KmxheWVyOwogICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIs
IHNpemUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0
byBsYXllcklkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklk
ID0gV1RGTW92ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CmluZGV4IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2Vh
YzQxYTYuLjIyNGJmZmY2ZjhlNmJiZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWExMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYgKzM0Nyw5IEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVN
ZWRpYVNvdXJjZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVy
ZW5jZScsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJywK
ICAgICAgICAgJ1dlYktpdDo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllcics
CiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCkBAIC04ODMsNiArODg2LDgg
QEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0Lmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQ
YXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0
U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJl
bmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6U2VsZWN0aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6U2VsZWN0aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6VGFwSWRlbnRpZmllcic6IFsnIklkZW50aWZpZXJUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0lQQ1Rlc3Rlci5jcHAKaW5kZXggYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNhYTNkODgwMTAyZjU3
Yzg5YS4uYThkMjU3ZWM2NzM1ZjEwZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9JUENUZXN0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNs
dWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBA
IC00OCw2ICs0OSw4IEBAIHN0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewogICAgIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsK
IH07CisKK3N0YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQQ1Rlc3RzIHsgMCB9
OwogfQogCiBleHRlcm4gIkMiIHsKQEAgLTExNSw3ICsxMTgsOSBAQCB2b2lkIElQQ1Rlc3Rlcjo6
c3RhcnRNZXNzYWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmluZyYm
IGRyaXZlcgogICAgIGlmICghbV90ZXN0UXVldWUpCiAgICAgICAgIG1fdGVzdFF1ZXVlID0gV29y
a1F1ZXVlOjpjcmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAgICBtX3Rlc3RRdWV1
ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9w
ID0gbV9zaG91bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgb25nb2luZ0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1bk1lc3NhZ2VUZXN0
aW5nKGNvbm5lY3Rpb24sIHNob3VsZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFtZSkpOworICAgICAg
ICBvbmdvaW5nSVBDVGVzdHMtLTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDYgKzEzOSwxMSBAQCB2
b2lkIElQQ1Rlc3Rlcjo6c3RvcElmTmVlZGVkKCkKICAgICB9CiB9CiAKK2Jvb2wgaXNUZXN0aW5n
SVBDKCkKK3sKKyAgICByZXR1cm4gb25nb2luZ0lQQ1Rlc3RzOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaAppbmRleCA0NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJl
Y2ZkM2I4NDcxODVlLi5lYTQ5MzM1NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRmNjUzMzI3ZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CkBAIC0zMyw2ICszMiwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNU
ZXN0aW5nSVBDKCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hv
dWxkIG9ubHkgaGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKworI2lmIEVOQUJMRShJUENfVEVT
VElOR19BUEkpCisKKy8vIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0aW5nIElQQy1yZWxh
dGVkIGZhaWx1cmVzLCBzbyB0aGF0IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBhc3NlcnRpb25zCisv
LyBhbmQgZXhwb3NlcyBidWdzIHVuZGVybmVhdGguCitib29sIGlzVGVzdGluZ0lQQygpOworCiBj
bGFzcyBJUENUZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgogICAgIElQQ1Rlc3RlcigpOwpAQCAtNTIsNiArNTksMTMgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OwogfTsKIAorI2Vsc2UKKwor
Y29uc3RleHByIGlubGluZSBib29sIGlzVGVzdGluZ0lQQygpCit7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiAjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvT2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09i
amVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUyNTdkODQyNWJh
MDQzNmQ0NzM5YTk4YzQ1ZTkyM2EzZjI5MTc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKQEAgLTAsMCAr
MSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworLy8gVHlwZSBmb3IgdGhlIGtleSBpbiBtYXBwaW5nIGZyb20gb2Jq
ZWN0IGlkZW50aWZpZXIgcmVmZXJlbmNlcyB0byBvYmplY3Qgc3RhdGUuCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAg
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAg
ICB7CisgICAgfQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faWRlbnRpZmllcihXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZlcnNpb247IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
b3RoZXIubV9pZGVudGlmaWVyID09IG1faWRlbnRpZmllciAmJiBvdGhlci5tX3ZlcnNpb24gPT0g
bV92ZXJzaW9uOworICAgIH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2
NF90IG1fdmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAgIE9iamVjdElkZW50
aWZpZXJSZWFkUmVmZXJlbmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lv
bikKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNp
b247IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8
IG1fdmVyc2lvbjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U+IGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUPiBpZGVudGlmaWVy
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgICAgICBkZWNv
ZGVyID4+IGlkZW50aWZpZXIKKyAgICAgICAgICAgID4+IHZlcnNpb247CisgICAgICAgIGlmICgh
ZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgKnZlcnNpb24gfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVCBtX2lkZW50aWZp
ZXI7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9OworfTsKKworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsKK3B1YmxpYzoK
KyAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoVCBpZGVudGlmaWVyLCB1aW50NjRf
dCB2ZXJzaW9uLCB1aW50NjRfdCBwZW5kaW5nUmVhZHMpCisgICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV9w
ZW5kaW5nUmVhZHMocGVuZGluZ1JlYWRzKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorICAgIHVpbnQ2NF90IHBlbmRpbmdSZWFkcygp
IGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1JlYWRzOyB9CisgICAgT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxUPiByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV92
ZXJzaW9uIH07IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJldGlyZSgpIGNv
bnN0ICYmIHsgcmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gKyAxIH07IH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKKyAgICAgICAg
ZW5jb2RlciA8PCBtX3ZlcnNpb247CisgICAgICAgIGVuY29kZXIgPDwgbV9wZW5kaW5nUmVhZHM7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRpZmllcjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGVuZGluZ1JlYWRzOworCisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cgorICAgICAgICAgICAgPj4gdmVyc2lvbgorICAgICAgICAgICAgPj4gcGVuZGluZ1JlYWRzOwor
ICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZSB7
IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqdmVyc2lvbiwgKnBlbmRpbmdSZWFkcyB9OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24g
eyAwIH07CisgICAgdWludDY0X3QgbV9wZW5kaW5nUmVhZHMgeyAwIH07Cit9OworCisvLyBDbGFz
cyB0byBnZW5lcmF0ZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIGFuIE9iamVjdElkZW50
aWZlci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlVHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZVRyYWNrZXIpOworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSBPYmpl
Y3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9
IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2Ug
PSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+OworCisgICAgZXhwbGljaXQgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXIoVCBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgLy8gVGhyZWFkIHNhZmUuCisgICAg
UmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcGVuZGluZ1JlYWRz
Kys7CisgICAgICAgIHJldHVybiB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uIH07CisgICAgfQor
ICAgIC8vIE5vdCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0ZSB3cml0ZXMgYW5k
IHJlYWRzIGFueXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fdmVyc2lvbisrLCBtX3BlbmRpbmdSZWFk
cy5leGNoYW5nZSgwKSB9OworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0
IFQgbV9pZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjphdG9taWM8dWludDY0X3Q+IG1fcGVu
ZGluZ1JlYWRzIHsgMCB9OworICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9Owor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVy
LCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sKKyAgICBhZGQoaGFz
aGVyLCByZWZlcmVuY2UuaWRlbnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVuY2Uu
dmVyc2lvbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJz
aW9uKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAi
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmllcigp
IDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRzOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4m
IHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
KCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9u
KCkgPDwgIiwgIiA8PCByZWZlcmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIikiOworICAgIHJldHVy
biB0czsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8
VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hU
cmFpdHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+PiB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVy
UmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhh
c2gocmVmZXJlbmNlKTsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0
OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2U8VD4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBiOwor
ICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBEZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhyZWFk
U2FmZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RI
ZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzkyOWI3ZTQ2NmMyYzJiNGU5OGZkNWI1MzZlOGM5ODY3YjNmYjgw
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmpl
Y3RIZWFwLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKKy8vIENvbnRhaW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIgLT4gb2JqZWN0IG1h
cHBpbmcgYmV0d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2VuYXJpb3Mgd2hlcmUg
dGhlIGhvbGRlciBwcm9jZXNzIHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRoZSBvYmplY3QgcmVm
ZXJlbmNlcyBpbiBtdWx0aXBsZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVPYmplY3RIZWFwYCB0
cmFja3MgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNvbnRlbnQgcG9pbnRl
ZAorLy8gYnkgYSBwYXJ0aWN1bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5nIHJlYWRzIG1heSBi
bG9jayBuZXcgd3JpdGVzLiBBbHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2FuIHNraXAgYWhlYWQg
b2YgdGhlIHJlYWRzLAorLy8gZm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0ZSBzY2VuYXJpb3Mu
CisvLyBQZW5kaW5nIHdyaXRlcyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRseSBpbXBsZW1lbnRl
ZCBvbmx5IGZvciByZWFkLW9ubHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9yIGNvcHktb24td3Jp
dGUgdHlwZXMsCisvLyBlLmcuIG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRpb25zIGFyZSBub3Qg
aW1wbGVtZW50ZWQgeWV0LgordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUg
SGVsZFR5cGU+CitjbGFzcyBUaHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT4+IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVuY2U7CisgICAgdXNp
bmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcgUmVmZXJlbmNlID0g
dHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJl
ZmVyZW5jZTsKKworICAgIC8vIFdhaXRzIHVudGlsIGEgd3JpdGUgY3JlYXRlcyB0aGUgcmVmZXJl
bmNlIGFuZCB0aGVuIHJldGlyZXMgdGhlIHJlYWQgb3IKKyAgICAvLyB0aW1lcyBvdXQuCisgICAg
SGVsZFR5cGUgcmV0aXJlKFJlYWRSZWZlcmVuY2UmJiwgSVBDOjpUaW1lb3V0KTsKKworICAgIC8v
IEluc2VydHMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IG9yIHJlbW92ZXMgYW4gb2xkIG9u
ZSBhbmQgdGhlbiByZXRpcmVzIHRoZSB3cml0ZSBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAgICAv
LyBJZiB0aW1lb3V0IGlzIHBhc3NlZCwgd2FpdHMgdW50aWwgcGVuZGluZyByZWFkcyBhcmUgZG9u
ZS4KKyAgICAvLyBJdCBpcyBhIGNhbGxlciBlcnJvciB0byBub3Qgd2FpdCBhbmQgbXV0YXRlIHRo
ZSBvbGQgb2JqZWN0LgorICAgIHZvaWQgcmV0aXJlKFdyaXRlUmVmZXJlbmNlJiYsIHN0ZDo6b3B0
aW9uYWw8SGVsZFR5cGU+JiYgbmV3T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6VGltZW91dD4p
OworCisgICAgdm9pZCByZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICB2b2lk
IGNsZWFyKCk7Citwcml2YXRlOgorICAgIExvY2sgbV9vYmplY3RzTG9jazsKKyAgICBDb25kaXRp
b24gbV9vYmplY3RzQ29uZGl0aW9uOworICAgIHN0cnVjdCBSZWZlcmVuY2VTdGF0ZSB7CisgICAg
ICAgIHVpbnQ2NF90IHJldGlyZWRSZWFkcyB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZmluYWxSZWFkOyAvLyBSZW1vdmUgYWZ0ZXIgYGZpbmFsUmVhZGAgcmVhZHMuCisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+IG9iamVjdDsgLy8gT2JqZWN0IG9yIHRvbWJz
dG9uZS4KKworICAgICAgICBSZWZlcmVuY2VTdGF0ZSgpID0gZGVmYXVsdDsKKyAgICAgICAgZXhw
bGljaXQgUmVmZXJlbmNlU3RhdGUoSGVsZFR5cGUmJiBvYmplY3QpCisgICAgICAgICAgICA6IG9i
amVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAvLyBU
b21ic3RvbmUgY29uc3RydWN0b3IuCisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRlKHVp
bnQ2NF90IGZpbmFsUmVhZCkKKyAgICAgICAgICAgIDogZmluYWxSZWFkKGZpbmFsUmVhZCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgfTsKKyAgICBIYXNoTWFwPFJlZmVyZW5jZSwgUmVmZXJl
bmNlU3RhdGU+IG1fb2JqZWN0cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb2JqZWN0c0xvY2spOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+CitI
ZWxkVHlwZSBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGly
ZShSZWFkUmVmZXJlbmNlJiYgcmVhZCwgSVBDOjpUaW1lb3V0IHRpbWVvdXQpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gaXQg
PSBtX29iamVjdHMuZmluZChyZWFkLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
b2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7Cisg
ICAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgSGVsZFR5cGUg
cmVzdWx0ID0gKnN0YXRlLm9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGF0ZS5yZXRpcmVkUmVh
ZHMrKzsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChzdGF0ZS5maW5hbFJlYWQgPj0gc3RhdGUucmV0aXJlZFJlYWRzKTsg
Ly8gVHJ1c3RlZCBhc3NlcnQgYmVjYXVzZSB0aGlzIGlzIGVuc3VyZWQgb24gYGZpbmFsUmVhZGAg
YXNzaWdubWVudC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCA9PSBz
dGF0ZS5yZXRpcmVkUmVhZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVt
b3ZlKGl0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9vYmplY3RzQ29u
ZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24ud2Fp
dFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQuZGVhZGxpbmUoKSkpCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9IHdoaWxlICh0cnVlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRocmVh
ZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFdyaXRlUmVmZXJl
bmNlJiYgd3JpdGUsIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+JiYgb2JqZWN0LCBzdGQ6Om9wdGlv
bmFsPElQQzo6VGltZW91dD4gdGltZW91dCkKK3sKKyAgICBjb25zdCBib29sIHdhaXRGb3JQZW5k
aW5nUmVhZHMgPSB0aW1lb3V0Lmhhc192YWx1ZSgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX29i
amVjdHNMb2NrIH07CisgICAgZG8geworICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZpbmQo
d3JpdGUucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgpKSB7
CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlmIChz
dGF0ZS5maW5hbFJlYWQgJiYgc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgLy8gV3Jp
dGUgcmVwbGF5OiBgZmluYWxSZWFkYCBpcyBhc3NpZ25lZCBvbiB3cml0ZS4gQ2Fubm90IGhhdmUg
dGhlIHNhbWUgdmVyc2lvbiB3aXRoIHdyaXRlcy4KKyAgICAgICAgICAgICAgICBBU1NFUlRfSVNf
VEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID4gd3JpdGUucGVuZGluZ1JlYWRzKCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSB1bmRlcmZsb3c6IG1vcmUgcmVhZHMgaGF2ZSBi
ZWVuIGRvbmUgdGhhbiB0aGUgc2VuZGVyIGNsYWltcyBpcyB0aGUgbWF4aW11bS4KKyAgICAgICAg
ICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJdCBpcyBsaWtlbHkgYSBjYWxsZXIgZXJy
b3IgdG8gdHJ5IHRvIGFkZCBhIG5ldyByZWZlcmVuY2Ugd2l0aCB0aGUgc2FtZSBjbGllbnQgb2Jq
ZWN0IHdpdGhvdXQKKyAgICAgICAgICAgIC8vIHdhaXRpbmcgZm9yIHBlbmRpbmcgcmVhZHMgb24g
dGhlIG9sZCByZWZlcmVuY2UuCisgICAgICAgICAgICBBU1NFUlQod2FpdEZvclBlbmRpbmdSZWFk
cyB8fCAhc3RhdGUub2JqZWN0IHx8ICpzdGF0ZS5vYmplY3QgIT0gb2JqZWN0KTsKKworICAgICAg
ICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVhZHMoKSB8fCAh
d2FpdEZvclBlbmRpbmdSZWFkcykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVk
UmVhZHMgPCB3cml0ZS5wZW5kaW5nUmVhZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUu
ZmluYWxSZWFkID0gd3JpdGUucGVuZGluZ1JlYWRzKCk7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAgICAg
ICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgICAgICBpZiAob2Jq
ZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vYmplY3RzLmFk
ZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmUoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmpl
Y3QpIH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBuZXdTdGF0ZSA9IGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnRyeSB3YXMgYSB0b21i
c3RvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3RhdGUuZmluYWxSZWFkICYm
ICEqbmV3U3RhdGUuZmluYWxSZWFkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9v
YmplY3RzLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICghbmV3U3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U3RhdGUub2JqZWN0ID0gV1RGTW92ZSgqb2JqZWN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV3JpdGUgcmVwbGF5OiB0aGUgcmV0aXJlZCB3cml0ZSBhbHJlYWR5IGV4
aXN0cywgdGhlIGVudHJ5IHdhcyBub3QgYSB0b21ic3RvbmUuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKCF3YWl0Rm9yUGVuZGluZ1JlYWRzIHx8ICF3cml0ZS5w
ZW5kaW5nUmVhZHMoKSkgeworICAgICAgICAgICAgLy8gV3JpdGUgdGhlIHRvbWJzdG9uZS4KKyAg
ICAgICAgICAgIG1fb2JqZWN0cy5hZGQod3JpdGUucmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRl
IHsgd3JpdGUucGVuZGluZ1JlYWRzKCkgfSk7CisgICAgICAgICAgICBpZiAob2JqZWN0KQorICAg
ICAgICAgICAgICAgIG1fb2JqZWN0cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlKCksIFJlZmVy
ZW5jZVN0YXRlIHsgV1RGTW92ZSgqb2JqZWN0KSB9KTsKKyAgICAgICAgICAgIG1fb2JqZWN0c0Nv
bmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQodGltZW91dCk7CisgICAgICAgIGlmICghbV9vYmplY3RzQ29uZGl0aW9uLndh
aXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0LT5kZWFkbGluZSgpKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVu
dGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRl
bnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJiBvYmplY3Qp
Cit7CisgICAgcmV0aXJlKFdURk1vdmUob2JqZWN0KSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlw
ZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpjbGVh
cigpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBtX29iamVj
dHMuY2xlYXIoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJh
bmdlLmNwcAppbmRleCA0ZGUxZDBlZDJhN2JlNDllM2NiYmI5NWUzNzdmNTQ1MDlmYWMwN2FkLi43
OGY3MzEzNGNlNmE3YTIxNGNkYzlkZTA1YzQ3NTM3MmUxN2M5YTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgQXRvbVN0cmluZyBNZWRp
YVNhbXBsZUJ5dGVSYW5nZTo6dHJhY2tJRCgpIGNvbnN0CiAgICAgcmV0dXJuIEF0b21TdHJpbmc6
Om51bWJlcihtX3RyYWNrSUQpOwogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVS
YW5nZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFu
Z2U6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBQbGF0
Zm9ybVNhbXBsZTo6Qnl0ZVJhbmdlU2FtcGxlVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0
ZVJhbmdlLmgKaW5kZXggYjhlNGQ3NmNlNmYzOTI4NTc2ZTlmYjFlZjk2MmI0MDQ5N2UzZGMzMS4u
ZjgzMzZiZjAxMzcyMTA5MGRhMTkzNzhmYjVhNDUzYzhkYWNhNTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJh
bmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQnl0ZVJhbmdlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0ZDo6
b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5
dGVSYW5nZTsgfQogCiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7Ci0gICAg
V2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbDsKKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQg
c2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggZTJmNGJkNGE0YWRjNDFjYzMyOTE2YmY1YzYzZmI0Njg0NDEwODA3
Mi4uOTE0NjA1MmI1NjA0Njg1YjQ0M2U4MjY2MTE1NDA5ODdiN2VmOTc2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC03MCw2ICs3MCw3IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQ
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBA
IC03NDUsNiArNzQ2LDcgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTg4Miw2ICs4ODQsOCBAQCBSZW1vdGVEZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVF
eHRlcm5hbFRleHR1cmVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVRdWVyeVNldE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2ZjYzFmMWJmNzkxMTRkYzViMDlhNGI4MmUzNDFlYTNkMGMzOTMxZS4uZmY2
ZmE4Y2NiYWZhNDQxMmZiODBkMmZiNDFhOWNlZGFmNmM2ZGMzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTA4LDYgKzUxMDgsMTMg
QEAKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAv
KiBJUENUZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREExMjdB
N0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVB
M0RBMzI3QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAv
KiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjVBM0RDNTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8q
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEy
MzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUxMzMsNiArNTE0MCw3IEBACiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAv
KiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCRERBMzNGMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzNDAy
NzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNE
MyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRTYWZlT2Jq
ZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcy
MDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2
NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3OTUsNiArNjgwMywxMCBAQAogCQkJCUNEODI1
MkQxMjVENDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywK
IAkJCQlDRDgyNTJEMzI1RDQ2NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLm1lc3NhZ2VzLmluICovLAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAvKiBSZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTAyN0E3
REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1
QTNEQTMyN0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8sCisJ
CQkJN0I1QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICov
LAorCQkJCTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
bWVzc2FnZXMuaW4gKi8sCiAJCQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZGN0I2RiAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYyMkYxMTAw
RkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCkBAIC02
ODg1LDYgKzY4OTcsOCBAQAogCQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDREQzg4MDA5
NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2MjNENERD
ODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEzREE4MjdB
N0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCisJCQkJ
N0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgg
Ki8sCiAJCQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94
eS5jcHAgKi8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJh
Y2tQcm94eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApAQCAtNzI2Miw2ICs3Mjc2LDcgQEAKIAkJ
CQkxQURDQjg2ODE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICov
LAogCQkJCTFBRENCODY5MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
ICovLAogCQkJCTVDRDc0OEI1MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllci5oICovLAorCQkJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVE
QkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1
REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMx
N0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwICovLApAQCAtNzMwMSw2ICs3MzE2LDcg
QEAKIAkJCQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxl
UmVhZE9ubHkuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNr
ZXJTdGF0ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2du
aXRpb25VcGRhdGVSZXN1bHQuaCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyog
VGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMg
LyogVG91Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFD
IC8qIFRvdWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0Eg
LyogVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlMjlmNGJkNTYx
MzJlY2Q2NzE3MWJjMzdjYjJjYzU2MWJlMTI5MzU5Li41YzVkZTE4MjEyNjdiZDg1NmRlZTU3NzE2
NWY0NTRjYmQ0MjQyN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTEgQEAKICNpbmNsdWRl
ICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFdFQkdMKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKQEAgLTIwOCw2
ICsyMTMsMTAgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0
aW9uLCBkZWNvZGVyKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU1TKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCisgICAgICAgIHJldHVybiBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyNlbmRpZgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb1Nl
c3Npb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKaW5kZXggN2FlMWVlNzZkYzRiMDdjNDAzZjYwYjhhZDEzZGFkOWI4
N2JkZWQwYS4uMDBkNGE4YmRkYzVjMDQxZmZiMDM5NDkwMmU5Nzk5NzE1MTVjMzRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0zNSw2ICszNSwxMCBA
QAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVy
Lmg+CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJh
bWVQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTExOCw2ICsxMjIsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImIGIK
ICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6Y3JlYXRlKCptX2dwdVByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUobWVkaWFTYW1wbGUtPndyaXRlKCkpKTsKKyAgICBp
ZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbWVkaWFTYW1wbGU7Cit9CisjZW5kaWYK
KwogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZyb21NZWRp
YShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlmMDE5ODcxOTU1OTk4NzkyZWU3Nzk1ZDlhYTYwYzJm
Mzk3Mzk3MS4uNWQxY2FiMjE4Zjc4NWNiYTExNDZhODkxMjJiMzBkMTBjYzY4MzA3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTY1LDYgKzY1LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9p
ZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZp
bmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkgZmluYWw7CisjZW5kaWYKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVy
cm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwogICAgIGJvb2wgY29w
eVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggZmY3ZTE0OGQ2YjVlZWJhMDI0
YTkzZTNlYjIxMjYyYmFiNzIyODA4Yy4uMGI4YmJhMTZjZmVjMTZiMmJhMTg3MTcxYWZkOWIzYjMx
MzFkNjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ1ZV
dGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxh
eWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTksOSArOTgsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKLSNlbmRpZgog
cHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkK
QEAgLTExNCwyMCArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKLXsKLSAgICBpZiAoIW1f
ZGlzcGxheUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJp
Z2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJm
YWNlKCkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxl
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRl
b1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKLX0KLSNlbmRpZgotCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjQyNTAyNjE1ZGEyNzJiM2JmNDZjZjQ2NDk2MWI3ZjhlYjJhMWYxYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXJUeXBl
PjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3Rl
VmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
PFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyID0gT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGEwMjZmMWE0ZDY0NWZlY2MyYTYxZDQwNDBhYWE3YjQxZDUwNTE4MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmNwcApAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXBNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2Vz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZVByb3h5
PiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVWaWRl
b0ZyYW1lUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpKSk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGll
cyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFT
YW1wbGUmIG1lZGlhU2FtcGxlKQoreworICAgIHJldHVybiB7CisgICAgICAgIG1lZGlhU2FtcGxl
LnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgp
LAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCkKKyAgICB9OworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgOiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVj
dGlvbikKKyAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihpZGVudGlmaWVyKQoreworICAgIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5KCkKKyAgICA6IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24obnVsbHB0cikK
KyAgICAsIG1fcmVmZXJlbmNlVHJhY2tlcihSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSkKK3sKK30KKworUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVtb3RlVmlkZW9GcmFt
ZVByb3h5KCkKK3sKKyAgICBkaXNjb25uZWN0R1BVUHJvY2Vzc0lmTmVlZGVkKCk7Cit9CisKK1Jl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5pZGVudGlmaWVyKCk7
Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OndyaXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLndyaXRl
KCk7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5yZWFk
KCk7Cit9CisKK01lZGlhVGltZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByZXNlbnRhdGlvblRp
bWUoKSBjb25zdAoreworICAgICh2b2lkKSB3YWl0Rm9yV2FzSW5pdGlhbGl6ZWQoKTsKKyAgICBy
ZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4geyBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSwg
eyB9IH07Cit9CisKK01lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0Cit7CisgICAgKHZvaWQpIHdhaXRGb3JXYXNJbml0
aWFsaXplZCgpOworICAgIHJldHVybiBtX3ZpZGVvUm90YXRpb247Cit9CisKK2Jvb2wgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QKK3sKKyAgICAodm9pZCkgd2Fp
dEZvcldhc0luaXRpYWxpemVkKCk7CisgICAgcmV0dXJuIG1fdmlkZW9Jc01pcnJvcmVkOworfQor
Cit1aW50MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OmhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgLy8gU2tpcCBtZXNzYWdlcyBpbnRl
bmRlZCBmb3IgYWxyZWFkeSByZW1vdmVkIG1lc3NhZ2VSZWNlaXZlck1hcCgpIGRlc3RpbmF0aW9u
cy4KKyAgICAvLyBUaGVzZSBhcmUgYnVzaW5lc3MgYXMgdXN1YWwuIFRoZXNlIGNhbiBoYXBwZW4g
Zm9yIGV4YW1wbGUgYnk6CisgICAgLy8gIC0gVGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZCBpbW1l
ZGlhdGVseSBkZXN0cm95ZWQsIGJlZm9yZSBXYXNJbml0aWFsaXplZCB3YXMgaGFuZGxlZC4KKyAg
ICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6Oldhc0luaXRpYWxpemVkOjpuYW1lKCkpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6ZGlzY29ubmVjdEdQVVByb2Nl
c3NJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24g
PSBzdGQ6OmV4Y2hhbmdlKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIG51bGxwdHIpKSB7CisgICAg
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgICAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwOjpSZWxlYXNlVmlkZW9GcmFtZSh3cml0ZSgpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIH0KK30KKworYm9v
bCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OndhaXRGb3JXYXNJbml0aWFsaXplZCgpIGNvbnN0Cit7
CisgICAgaWYgKG1fd2FzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtX2dwdVByb2Nlc3NDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkud2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6V2FzSW5pdGlhbGl6ZWQ+KGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzSWZOZWVkZWQoKTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCit7CisgICAgYXV0byBncHVQ
cm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiwg
bnVsbHB0cik7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7
CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKK30KKwordm9pZCBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6Ondhc0luaXRpYWxpemVkKHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4m
JiBwcm9wZXJ0aWVzKQoreworICAgIG1fd2FzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGlmICgh
cHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBXaGVuIHNvdXJjZSBm
YWlscyB0byBwcm9kdWNlIGEgc2FtcGxlIGR1ZSB0byBzb21lIGVycm9yLCB0aGUgcHJvcGVydGll
cyBhcmUgZGlzZW5nYWdlZC4KKyAgICAvLyBXZSBzaG91bGQgcGVyaGFwcyBjaGVjayB0aGlzIGF0
IHRoZSBzdWJtaXQgdGltZS4KKyAgICBtX3ByZXNlbnRhdGlvblRpbWUgPSBwcm9wZXJ0aWVzLT5w
cmVzZW50YXRpb25UaW1lOworICAgIG1fdmlkZW9Jc01pcnJvcmVkID0gcHJvcGVydGllcy0+dmlk
ZW9Jc01pcnJvcmVkOworICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHByb3BlcnRpZXMtPnZpZGVvUm90
YXRpb247Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk1
ZWFhZjU1ZGM4MzkyMTVmMDVjYjY2YWRhNDIzMWQ2NDMwYjZiYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkdQ
VVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Zp
ZGVvRnJhbWUuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3Mg
RGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOworCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6VmlkZW9GcmFtZSwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVi
bGljOgorICAgIC8vIENyZWF0ZXMgYSBwcm9taXNlIG9mIGEgTWVkaWFTYW1wbGUgdGhhdCBleGlz
dHMgaW4gR1BVIHByb2Nlc3MuIFRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgb3V0IHBhcmFtZXRl
ciBvZiB0aGUgY3JlYXRpb24gbWVzc2FnZS4KKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKKyAgICBzdHJ1Y3Qg
UHJvcGVydGllcyB7CisgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOworICAgICAg
ICBib29sIHZpZGVvSXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90YXRpb24g
dmlkZW9Sb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKKworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRp
ZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmKTsKKworICAgIH5SZW1vdGVWaWRl
b0ZyYW1lUHJveHkoKSBmaW5hbDsKKworICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ugd3Jp
dGUoKSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSByZWFkKCkgY29u
c3Q7CisKKyAgICAvLyBXZWJDb3JlOjpWaWRlb0ZyYW1lIG92ZXJyaWRlcy4KKyAgICBNZWRpYVRp
bWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IGZpbmFsOworICAgIFZpZGVvUm90YXRpb24gdmlk
ZW9Sb3RhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0
IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVWaWRlb0ZyYW1l
PiB2aWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CisgICAgLy8gRklYTUU6IFdoZW4gVmlkZW9GcmFt
ZSBpcyBub3QgTWVkaWFTYW1wbGUsIHRoZXNlIHdpbGwgbm90IGJlIG5lZWRlZC4KKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOworICAgIHVp
bnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKKworICAgIHN0YXRpYyBib29s
IGhhbmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KEdQVVByb2Nl
c3NDb25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIpOworICAgIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSgpOworICAgIHZvaWQgZGlzY29ubmVjdEdQVVByb2Nlc3NJZk5lZWRlZCgp
IGNvbnN0OworICAgIGJvb2wgd2FpdEZvcldhc0luaXRpYWxpemVkKCkgY29uc3QgV0FSTl9VTlVT
RURfUkVUVVJOOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgorICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IG92ZXJyaWRlcy4K
KyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzLgorICAgIHZvaWQgd2FzSW5pdGlhbGl6ZWQo
c3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiYmKTsKKyAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CisgICAgUmVtb3RlVmlk
ZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgbV9yZWZlcmVuY2VUcmFja2VyOworICAgIG11dGFibGUg
Ym9vbCBtX3dhc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBNZWRpYVRpbWUgbV9wcmVzZW50
YXRpb25UaW1lOworICAgIGJvb2wgbV92aWRlb0lzTWlycm9yZWQgeyBmYWxzZSB9OworICAgIFZp
ZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgcHJlc2VudGF0aW9uVGltZQorICAgICAgICA8PCB2aWRlb0lzTWlycm9yZWQKKyAgICAg
ICAgPDwgdmlkZW9Sb3RhdGlvbjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiB2aWRlb0lzTWlycm9yZWQ7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1JvdGF0
aW9uPiB2aWRlb1JvdGF0aW9uOworICAgIGRlY29kZXIgPj4gcHJlc2VudGF0aW9uVGltZQorICAg
ICAgICA+PiB2aWRlb0lzTWlycm9yZWQKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICp2aWRlb0lz
TWlycm9yZWQsICp2aWRlb1JvdGF0aW9uIH07Cit9CisKK30KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4g
bWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2Ft
cGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWUp
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRp
YVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFdl
YkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlOyB9CitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I5MzAwNjRhNjFjOGU2M2U1NmMyZTM2NjY2Yzdj
NTk3NDAyMTVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCittZXNzYWdlcyAtPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgTm90UmVmQ291bnRl
ZCB7CisgICAgV2FzSW5pdGlhbGl6ZWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZlNjA4MjM5NDYyYWE0MDQ4Y2I3ZDNm
YTAzNDJlOThiNTc1Li42YjYyZGFkYzcyOTIxZmIyNWMzZDhjODliNzUwMzljYjc3N2VjODVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFnZXIs
IFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50JiBjbGllbnQpCiAgICAg
OiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQorICAgICwgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV9jb25uZWN0
aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRoaXMp
OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGll
bnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlhbGl6
ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYgbG9nSWRlbnRpZmllcikKIAog
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9u
SWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VMYXllciB7IG1faWRlbnRpZmllciB9
LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnJlbW92ZUxheWVy
KCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTMgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9wYXVz
ZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUp
KSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJh
bWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyByZW1vdGVTYW1w
bGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBS
ZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICBpZiAo
IXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBAIC0xNDgsNyArMTU3LDcgQEAgdm9pZCBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNhbXBsZSB7ICpy
ZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNhbXBsZUNWIHsg
KnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQpAQCAtMTcxLDExICsxODAsMTggQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldERpZEZhaWwoYm9vbCB2YWx1ZSkKIHZv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3Nl
KEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKICAgICBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
ZGlzYWJsZSgpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7
CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xp
ZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWlsKCk7CiB9CiAKK3ZvaWQg
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
Zk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpl
eGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkKKyAgICAgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDU2MzY5YWRkZjBhYmYzNDZiMGQyMWM4NTA2
ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5NDQzMjExMTNlNjlkMjZiMTJiMjU1YmZhYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xp
ZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgp
OwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiAgICAgdm9pZCBp
bml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC03Niw2ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwogICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJh
bWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWMyMjll
MjIwM2VjOTA1YTQzMDdmMGRhNjQ0ZTJmYjg1MjE3NmFjZC4uMmIzZTgxMzdjZGU1MzAyZjM1NmM4
MDYxOTVhNzNkODBmN2ZjMjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTA5ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAy
MDIyLTAyLTA5ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
QXV0aG5dIFNwZWNpZnkgTG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXAgd2hlbiBpbXBvcnRp
bmcgY3JlZGVudGlhbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIz
MzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zMzI1NzNjOWRiMmEyZjA2MDE1ZGI5Y2Rl
NWJlMjI5Y2EzNDk1MDY4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5
NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVk
IFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJl
YW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShH
UkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVy
KSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBI
SUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJv
bm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRl
bnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIp
IC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIHJlc3VsdCkKKyNlbmRpZgogICAgIHZv
aWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNp
bXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIHt9CiB9fQpAQCAtMjMyLDcgKzIzOCw3IEBA
IGRlZiBjcmVhdGVfY3BwX3R5cGVfY29udGFpbmVyKHR5cGVfbmFtZSA6IHN0cikgLT4gT3B0aW9u
YWxbY3BwX3R5cGVfY29udGFpbmVyXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBjb250YWlu
ZXJfbmFtZSA9IG1bMV0KICAgICAjIEFsbCB0ZW1wbGF0ZXMgYXJlIGNvbnRhaW5lcnMgZXhjZXB0
IHRoZXNlIGJlbG93LgotICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZidd
OgorICAgIGlmIGNvbnRhaW5lcl9uYW1lIGluIFsnUmVmUHRyJywgJ1JlZicsICdSZXRhaW5QdHIn
LCAnc3RkOjpvcHRpb25hbCddOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRlbXBsYXRlcyA9
IG1bMl0KICAgICBhcml0eSA9IE5vbmUKQEAgLTY0MCw3ICs2NDYsMTMgQEAgY2xhc3Mgd2Via2l0
X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHdlYmtpdF9pcGNf
dHlwZSA9IHdlYmtpdF9pcGNfdHlwZXNbby50eXBlXQogICAgICAgICAgICAgICAgIGFzc2VydChp
c2luc3RhbmNlKHdlYmtpdF9pcGNfdHlwZSwgY3BwX3R5cGVfY29udGFpbmVyKSkKICAgICAgICAg
ICAgICAgICB2ID0gY3BwX2FyZyh3ZWJraXRfaXBjX3R5cGUsIG8ubmFtZSArICJSZXBseSIpCi0g
ICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtz
dHIodi5uYW1lKX07Il0KKyAgICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFu
KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0cih2
LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgIyBGSVhNRTogTGlrZWx5IHRoaXMgY3JlYXRlcyBhIGRhbmdsaW5nIHJlZmVy
ZW5jZSBzcGFuPGludCwgMj4gYVJlcGx5ID0geyB7IH0gfTsuCisgICAgICAgICAgICAgICAgICAg
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg4OQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0
cih2Lm5hbWUpfSB7eyB7eyB9fSB9fTsiXQorCiAgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhw
cnMgKz0gW2NwcF9leHByKHYudHlwZSwgdi5uYW1lKV0KICAgICAgICAgICAgICAgICBpZiBvLnR5
cGUuaXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMg
Kz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIp
XQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApp
bmRleCBkMTQ2Y2VjNGYyZWM0Y2Y2OTEyZDdmMDQ4ZDI4ODE1N2FkZmRjMWI4Li5jNDVjNjdhMzE2
NmJmZmI5ODc3YmMwZDgzNGZlZjg0NGE0ODY2NTE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6
CiAgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29k
ZVRpbWU7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV90cmFja0lEOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgdHJhY2tJ
RCkgZmluYWwgeyBtX3RyYWNrSUQgPSB0cmFja0lEOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIEZsb2F0U2l6ZSBw
cmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcmVzZW50YXRpb25TaXpl
OyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQp
IGZpbmFsIHsgbV9wcmVzZW50YXRpb25UaW1lICs9IG9mZnNldDsgbV9kZWNvZGVUaW1lICs9IG9m
ZnNldDsgfQpAQCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUo
bV9wcmVzZW50YXRpb25UaW1lLCBtX2RlY29kZVRpbWUsIG1fZHVyYXRpb24sIHN0YXRpY19jYXN0
PFNhbXBsZUZsYWdzPihtX2ZsYWdzIHwgSXNOb25EaXNwbGF5aW5nKSk7CiAgICAgfQogICAgIFNh
bXBsZUZsYWdzIGZsYWdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQotICAgIFBs
YXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNh
bXBsZTo6Tm9uZSwge251bGxwdHJ9fTsgfQorICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwgeyBudWxs
cHRyIH0gfTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451662</attachid>
            <date>2022-02-11 02:43:47 -0800</date>
            <delta_ts>2022-02-11 03:03:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220211124345.patch</filename>
            <type>text/plain</type>
            <size>126481</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiMmJhZDVkMTM0ZDY1
Mjk2ZjkxMjUxNWY2ZTQ1OTkzZmFjZTcxNS4uNjUzMTNlMDFhZDEwMmY2ODdjZDY1YTMzMWMyOGVk
NDM2MTQ0Y2I1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTEwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWIg
Y2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGgg
YWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwNzc4OWY3N2Q1ZGYwYTAwMzU1NjE1
ZTEwMzE3YmUzZWQxOTA0N2UuLmE1MTNjNjU2MmJiNDVjMTI2ZDY4ZmI3NzYwNzYwOWE5NjE0YzNh
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkyIEBACisyMDIyLTAyLTEwICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAg
LSBGb3Igbm93LCBjcmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5j
aHJvbm91cyBtZXNzYWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgZG9lcyBub3QgbmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRv
IHRoYXQsCisgICAgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFk
cyBhbmQgdGh1cyB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgIGZvciB0aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0
IG9wZXJhdGlvbiBpcyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5u
b3QgYmUgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9s
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisg
ICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQg
dGhlIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJl
ZCBjb250ZW50IHNob3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICBBdCB0aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBjYW5ub3QgcGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1
bWVudCBDU1MgcGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisg
ICAgICAgIEdQVVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFw
cGluZworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4g
Q3VycmVudGx5IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEg
cmVtb3RlIE1lZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisK
KyAgICAgICAgVGhlIEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaXM6CisgICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB0aHJlYWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciB0aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAg
ICBBbGwgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0
byB0aGVpciBkZXN0aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCBy
ZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBt
ZXNzYWdlIHRvIGNyZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2
ZWQuCisKKyAgICAgICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVh
ZGVycy13cml0ZXJzIHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFz
c2VzOgorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAg
LSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZp
ZXMgdGhlIG9iamVjdC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlk
ZW50aWZpZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVu
dGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVm
ZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0g
bWVhbnM6CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2
ZXJzaW9uIDAuIENyZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGlu
aXRpYWwgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3Jp
dGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmll
ciAxLCB2ZXJzaW9uIDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUg
dmVyc2lvbiA9IDMzIgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRl
Y2xhcmVzIGEgcmVhZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29u
dGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1w
bGVzOgorICAgICAgICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVy
IDEsIHZlcnNpb24gMzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0
aW9ucyBhcmUgV3JpdGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5j
ZXMuCisKKyAgICAgICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0
ZXMgd3JpdGUgYW5kIHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3Mg
KFdlYkNvbnRlbnQgcHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmpl
Y3RIZWFwIHJlc29sdmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFs
IG9iamVjdCBwcm9jZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3
cml0ZXMgYXJlIGJsb2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5Ogor
ICAgICAgICAgLSBSZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9j
a3MgdW50aWwgdGhlIHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUg
b2YgbmV3IHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBo
YXZlIHJldGlyZWQsIG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAg
IG9mIHRoZSBjb250ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAg
ICAgIEluIHRoaXMgY29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBhcmUgaW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBk
YXRlIG9yCisgICAgICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGRWaWRlb0ZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnJlbGVhc2VWaWRlb0ZyYW1lKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6IEFkZGVk
LgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
bWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluLgorICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVik6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcik6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJl
ZC9JUENUZXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0ZXI6OnN0YXJ0TWVzc2Fn
ZVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0Ojppc1Rlc3RpbmdJUEMpOgorICAgICAgICAqIFNo
YXJlZC9JUENUZXN0ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAg
ICAgKiBTaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6Ok9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWZlcmVuY2U6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjpPYmplY3RJZGVudGlm
aWVyUmVhZFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFk
UmVmZXJlbmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpP
YmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6cmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjpkZWNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6Ok9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9i
amVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cGVuZGluZ1JlYWRzIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpyZWZl
cmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2U6OnJldGlyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJX
cml0ZVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRl
bnRpZmllcldyaXRlUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6
cmVhZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyOjp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2VUcmFja2VyOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRk
KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRI
YXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAg
ICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+
OjplcXVhbCk6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6
OlJlZmVyZW5jZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgor
ICAgICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OkhlbGRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNh
bXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UmVtb3RlVmlkZW9G
cmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp+UmVt
b3RlVmlkZW9GcmFtZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5Ojp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6cmVhZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cHJlc2VudGF0aW9uVGltZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUm90YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvTWlycm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmRpc2Nvbm5lY3RHUFVQ
cm9jZXNzSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OndhaXRGb3JXYXNJbml0aWFsaXplZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d2FzSW5pdGlhbGl6ZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbjogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmguCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6U2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5l
ZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5oOgorCiAyMDIyLTAyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIEJ1YmJsZXdyYXBMYXVuY2hlciBsZWFr
cyBELUJ1cyBwcm94eSBzb2NrZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwOGEwMWU1NzhkOGEz
NTI3ZTZmZWU0NDJjZTkwODExYWY1YmFmYWMyLi44MDUwMDEzZWQ2NWY0MGM4OGYwNDM2MTI3ODAy
NWQ0NjA0ZmIzMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEzNDksNiArMTM0OSw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9Vc2VyQWdl
bnQuaAogICAgIHBsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaAogICAgIHBs
YXRmb3JtL1ZhbGlkYXRpb25CdWJibGUuaAorICAgIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaAogICAg
IHBsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5oCiAgICAgcGxhdGZvcm0vVmlkZW9TYW1wbGVN
ZXRhZGF0YS5oCiAgICAgcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAxZWRkNzE4MzhjZDI3ZDM3YzI5ZDc5ZjRhYjMzYThiZDc1ZTdhNThhLi42MTQyZDI0M2Ri
Mjg4MGM1MWVmZWY1OGEwNGM5YjBiYTc1M2Y2MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTkyNiw2
ICsxOTI2LDcgQEAgcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKIHBsYXRmb3JtL1RocmVh
ZFRpbWVycy5jcHAKIHBsYXRmb3JtL1RpbWVyLmNwcAogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNw
cAorcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVDcm9zc1RocmVhZENv
cGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcAogcGxhdGZvcm0vV2lkZ2V0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU2MzdmM2ZkNjExZWQwYTFmN2JhNWNlYmIwMTY1ZDU2NDNhM2VkYTUuLjE2NGU1
MmFlNTVmMjQzZjI1NDVkMDkzMDY0OTg5OGRjNzc1NDY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MDcsNiArMjQwNyw3
IEBACiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5RDI1
NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjQ0MTBFMTI3OTU4RkM1MDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRl
b0ZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1QTNEQUYyN0FC
RjhDNTAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNUEzREFEMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2
MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDgg
LyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MjAsNiArMTE1MjEsOCBAQAogCQk3QjE2MTkxMDI3MTk4
ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0NDEwREYyNzk1OEZDNDAwMEI0RjhBIC8qIE1l
ZGlhU2FtcGxlVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVNhbXBsZVZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0
NDEwRTIyNzk1OEZERTAwMEI0RjhBIC8qIE1lZGlhU2FtcGxlVmlkZW9GcmFtZUFWRi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhU2FtcGxlVmlkZW9GcmFtZUFWRi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUIyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJh
bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9GcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREFEMjdBQkY4QzQwMDZDNkY5
NyAvKiBWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVv
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAw
MzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcx
MkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzIwQjBBMjc0M0RC
QTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDE1MSw2ICszMDE1
NCw4IEBACiAJCQkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICovLAog
CQkJCTcxQzkxNjA3MUQxNDgzQTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmggKi8sCiAJCQkJODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJi
bGUuaCAqLywKKwkJCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5jcHAg
Ki8sCisJCQkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUuaCAqLywKIAkJ
CQk0MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi8sCiAJ
CQkJNDE2MDQ5MzEyNzQzQjBFNzAwQTg2RkEwIC8qIFZpZGVvU2FtcGxlTWV0YWRhdGEuaCAqLywK
IAkJCQk1MTVGNzk1MTFDRkNBM0M3MDBDQ0VEOTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKQEAgLTM3ODI3LDYgKzM3ODMyLDcgQEAKIAkJCQkwRjFBMEMzODIyOUE0ODE4MDBE
MzdBREIgLyogVmVsb2NpdHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVN
ZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjAyNzE5QjI5MDAwQ0I4RDc0IC8q
IFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQjBENEMw
MUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAxODM5OTcy
MjYwZjcwZTAwNzM2Nzk3OTE3MjI2MjVmNTZiMjUzZjA4Li5iNGZlNzE2NTc5ZmY4ZTdmYzM0MGQ4
N2NjODkyZjFiYmI0YjBkOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
QEAgLTQ5LDkgKzQ5LDEwIEBAIHN0cnVjdCBQbGF0Zm9ybVNhbXBsZSB7CiAgICAgICAgIENNU2Ft
cGxlQnVmZmVyVHlwZSwKICAgICAgICAgR1N0cmVhbWVyU2FtcGxlVHlwZSwKICAgICAgICAgQnl0
ZVJhbmdlU2FtcGxlVHlwZSwKKyAgICAgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSwgLy8g
RklYTUU6IFRvIGJlIHJlbW92ZWQgd2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZS4K
ICAgICB9IHR5cGU7CiAgICAgdW5pb24gewotICAgICAgICBNb2NrU2FtcGxlQm94KiBtb2NrU2Ft
cGxlQm94OworICAgICAgICBjb25zdCBNb2NrU2FtcGxlQm94KiBtb2NrU2FtcGxlQm94OwogICAg
ICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBjbVNhbXBsZUJ1ZmZlcjsKICAgICAgICAgR3N0U2FtcGxl
KiBnc3RTYW1wbGU7CiAgICAgICAgIHN0ZDo6cGFpcjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWYsIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGJ5dGVSYW5nZVNhbXBsZTsKQEAgLTY2LDcgKzY3LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBB
dG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IHNpemVJbkJ5dGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRp
bWUmKSA9IDA7CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzU3luY0luZm8g
PSAxIDw8IDMsCiAgICAgfTsKICAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSA9IDA7Cisg
ICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0ID0gMDsKIAog
ICAgIHN0cnVjdCBCeXRlUmFuZ2UgewogICAgICAgICBzaXplX3QgYnl0ZU9mZnNldCB7IDAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlODE2ZWNk
MDhjYjk1NTI0ZDZhYTJkNzFhZmNiOWYwYjkxNzg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlkZW9G
cmFtZTo6VmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworVmlkZW9GcmFtZTo6flZpZGVvRnJhbWUo
KSA9IGRlZmF1bHQ7CisKK01lZGlhVGltZSBWaWRlb0ZyYW1lOjpkZWNvZGVUaW1lKCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitNZWRp
YVRpbWUgVmlkZW9GcmFtZTo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK0F0b21TdHJpbmcgVmlkZW9GcmFtZTo6dHJh
Y2tJRCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsg
fTsKK30KKworc2l6ZV90IFZpZGVvRnJhbWU6OnNpemVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2ViQ29yZTo6RmxvYXRT
aXplIFZpZGVvRnJhbWU6OnByZXNlbnRhdGlvblNpemUoKSBjb25zdAoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6b2Zm
c2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Citib29sIFZpZGVvRnJhbWU6OmlzRGl2aXNhYmxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6cGFpcjxSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTYW1wbGU+LCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBWaWRlb0Zy
YW1lOjpkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiwgVXNlRW5kVGltZSkKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyBudWxscHRyLCBudWxscHRyIH07Cit9CisKK1Jl
ZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gVmlkZW9GcmFtZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0Nv
cHkoKSBjb25zdAoreworICAgIENSQVNIKCk7Cit9CisKK01lZGlhU2FtcGxlOjpTYW1wbGVGbGFn
cyBWaWRlb0ZyYW1lOjpmbGFncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpT
YW1wbGVGbGFnczo6Tm9uZTsKK30KKworc3RkOjpvcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJh
bmdlPiBWaWRlb0ZyYW1lOjpieXRlUmFuZ2UoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1v
dmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIFZpZGVvRnJhbWU6OmR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdAoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9G
cmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyZDk1MDEwZDM2ZWI2MmI5ZWFlMWI5OTgzN2I4NDc3MTQxZTA1
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1l
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSBjbGFzcyByZXByZXNlbnRpbmcgYSB2aWRlbyBmcmFtZSBmcm9t
IGEgZGVjb2RlciwgY2FwdHVyZSBzb3VyY2UsIG9yIHNpbWlsYXIuCisvLyBGSVhNRTogQ3VycmVu
dGx5IGZvciBpbXBsZW1lbnRhdGlvbiBwdXJwb3NlcyBpbmhlcnRzIGZyb20gTWVkaWFTYW1wbGUg
dW50aWwgY2FwdHVyZSBjb2RlCisvLyBzdG9wcyByZWZlcnJpbmcgdG8gTWVkaWFTYW1wbGUKK2Ns
YXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVkaWFTYW1wbGUgeworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9S
VCBWaWRlb0ZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBub3Qg
aW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlc2Ugb2JqZWN0cy4KKyAgICAvLyBXZWJDb3JlOjpN
ZWRpYVNhbXBsZSBvdmVycmlkZXMuCisgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIGRlY29k
ZVRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZHVyYXRp
b24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBdG9tU3RyaW5nIHRyYWNrSUQo
KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2Vu
dGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb2Zmc2V0
VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGl2aXNhYmxlKCkgY29uc3QgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0
cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFVzZUVuZFRpbWUgPSBVc2VFbmRUaW1lOjpEb05vdFVzZSkgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29u
c3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5
dGVSYW5nZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0IGZpbmFsOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KaW5k
ZXggYzEyNmI5M2U4NzA2Zjk1NTMwZjYxMjZmOGFkMjVmYWY2MjIyYWQ3MS4uOWJmNGIwYjhkNWM0
ODFhNTM0ZmQ5MGNmMTZjOTU1OWZiNmNkNzE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KQEAgLTMzNCw2ICsz
MzQsOSBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgLy8gRklYTUU6IExvY2FsIHBsYXliYWNrIG9mIFJlbW90
ZVZpZGVvRnJhbWVQcm94eSBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgaWYgKCFpczxNZWRpYVNh
bXBsZUFWRk9iakM+KHNhbXBsZSkpCisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2FtcGxl
VG9FbnF1ZXVlID0gc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVy
OwogICAgIGF1dG8gbm93ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE1vbm90b25pY1Rp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSArIHJlbmRlcmVyTGF0ZW5jeSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggMmJiZDZhNGNiMGQyMmQyZGY5OTc3NWVl
NWVlMjdjNzhhMjBkNTk1NS4uNTEyNjk2YTEzYWM3MmFjODhmODAwODY1NjJlMzExMDQ1YzQxYWM2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtOTg3LDYgKzk4NywxMCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UoKQogICAgIGlmIChtX2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IERvZXMgbm90
IGN1cnJlbnRseSBzdXBwb3J0IFJlbW90ZVZpZGVvRnJhbWVQcm94eS4KKyAgICBpZiAoIWlzPE1l
ZGlhU2FtcGxlQVZGT2JqQz4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikK
ICAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVl
PFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggNjNkYjljMDAzYzA1MTljNjY1NjYxMjFlN2M2ZmI1MWRm
MmY3NzFjMS4uN2JlNzM1MWU1YmFhN2QyMWU2M2ZjNDk5YTI3MTIzNWVjZjRmYjliMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTU0LDEzICs1NCwx
MiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9
Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9
IGlkOyB9CiAKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
bG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU2FtcGxl
RmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9y
bVNhbXBsZSgpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOwpAQCAtOTcsMyArOTYsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBs
YXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVC
dWZmZXJUeXBlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNh
bXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMmNlNmNlZGVhNTVkZmU0Mjk1
M2MyYzliZjJmMjY5ZWExM2M0NmMzYi4uYTNhMzE1NmJmYmEwY2E3OTkxZjY2ZGQzZWYyNGMzMjQ0
ZDBlM2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5t
bQpAQCAtMTUzLDcgKzE1Myw3IEBAIHNpemVfdCBNZWRpYVNhbXBsZUFWRk9iakM6OnNpemVJbkJ5
dGVzKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFRvdGFsU2FtcGxl
U2l6ZShtX3NhbXBsZS5nZXQoKSk7CiB9CiAKLVBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZG
T2JqQzo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpD
OjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1wbGUgc2FtcGxlID0g
eyBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlLCB7IC5jbVNhbXBsZUJ1ZmZlciA9
IG1fc2FtcGxlLmdldCgpIH0gfTsKICAgICByZXR1cm4gc2FtcGxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVNhbXBsZUdTdHJlYW1lci5jcHAKaW5kZXggOWU3YzA4OTYwNmE3YjEzOWE5YTYyMzhlNTFkZjhm
MGZkZWQ3ZDMzNy4uMjdmOTc5NWVhNGRhOGE3NDgyMDY5MzdkNDIzZDY4YmI1NjM1YmQwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAg
dm9pZCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6b2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlh
VGltZSYgdGltZXN0YW1wT2Zmc2V0KQogICAgIH0KIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFT
YW1wbGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyOjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0CiB7CiAgICAgUGxhdGZvcm1TYW1w
bGUgc2FtcGxlID0geyBQbGF0Zm9ybVNhbXBsZTo6R1N0cmVhbWVyU2FtcGxlVHlwZSwgeyAuZ3N0
U2FtcGxlID0gbV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1w
bGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCmluZGV4IDFkNzFhMzM5NjljZmJjNjc1ZGVlY2VhNzhl
NjRmMmQ2ODk5ZTQxZWIuLjNiNWE2OWFhNzZhNmFhZjE3YTU2MTc2YzFmYjIzOWE0ZjkxMGIwYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVNhbXBsZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw2IEBAIHB1
YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZHRzOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdHJhY2tJZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBTdHJpbmcm
IHRyYWNrSWQpIG92ZXJyaWRlIHsgbV90cmFja0lkID0gdHJhY2tJZDsgfQogICAgIHNpemVfdCBz
aXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEZsb2F0
U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcmVzZW50
YXRpb25TaXplOyB9CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1l
Jikgb3ZlcnJpZGU7CkBAIC02Miw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8UmVm
UHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlh
VGltZSYsIFVzZUVuZFRpbWUpIG92ZXJyaWRlICB7IHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIg
fTsgfQogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJy
aWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JB
SW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCmluZGV4IDVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIuLjRh
YzY5YWNkOWEwMGNmNmUxOTlhMzNhYWM0NzNkOGNkODVkYzVlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC01OCwxMCArNTgsOSBAQCBwcml2YXRlOgogICAg
IE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guZGVj
b2RlVGltZXN0YW1wKCk7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25z
dCBTdHJpbmcmIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQogICAgIHNpemVfdCBzaXplSW5C
eXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBTYW1w
bGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUo
KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgRmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsg
fQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODcsNyAr
ODYsNyBAQCBNZWRpYVNhbXBsZTo6U2FtcGxlRmxhZ3MgTW9ja01lZGlhU2FtcGxlOjpmbGFncygp
IGNvbnN0CiAgICAgcmV0dXJuIFNhbXBsZUZsYWdzKGZsYWdzKTsKIH0KIAotUGxhdGZvcm1TYW1w
bGUgTW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNb2Nr
TWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpNb2NrU2FtcGxlQm94VHlwZSwgeyAmbV9ib3gg
fSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyOWY0Yzc4MTgx
ODBkZTJjYjI0OTUwNzJlODQ2MGE1MGFkMzY0YTQwLi5kYzRkMzFjZjZmNDg1ZjgxMTBmZDk5YTBh
NDNhYTc5NDE2NDI4ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTE3OCw2ICsxNzgsNyBAQCBz
ZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXJQcm94eQogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwCiAKICAg
ICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eQogICAgIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IGY5Mjc1ZmY2MTM4YzQ5MTQ2OTBhYzBhMDllZGMxNjBhY2UwOWFiZjUuLmVjYTgwMGUyODBl
YWE0YTAxZGU1ZDBkYzhlNTIxNTczOGE5YTIyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTY3LDYgKzY3LDcgQEAgJChQUk9KRUNUX0RJ
UikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTEsNiArMTkyLDcg
QEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggOTJkMjA2MDk5MzQxNzdhZWM5N2U4ODZjNjZjZThkOTEzNzgy
NDA4My4uNWMzYzY1NDY0YTViZTBmOGY0NDZkMGRmNjdhNWRjYjM0OWU3OWI4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zODEsNiAr
MzgxLDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVt
b3RlVGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2FnZVJlY2VpdmVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVUZXh0dXJlVmll
d01lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
UmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZp
ZGVvRnJhbWVQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9SZW1vdGVWaWRlb1RyYWNrUHJveHlNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDI5ZTRjODQ2NjM0NWIzMzk4M2RlNzQ4Mjg3Yjk0MTU0
NjQ3ZjI5YmQuLjMwMTMwMDE2Zjg2OWNhY2ExYzJjZjJjY2NlZTdiNjU1OWZmNzUwYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIwMiw2ICsyMDIsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24g
XAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIgXAog
CVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAorCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eSBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlIFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVt
b3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKQEAgLTMwMCw2ICszMDEsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAogCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFTb3VyY2VQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXJQcm94eSBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNGQ1MjRlOGI4Njc5YTgzMGM0NWViNmI1YmMxMDRiNzU0MTA0YjYz
ZS4uMTAzOTM5ZTgzMzI2MTZkMGZlZDU3NGU0YzJlMmFjOWFiYmU5NjEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMTQxLDYgKzE0MSw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjZW5kaWYKIApAQCAtMjU3LDYgKzI1OCw5IEBAIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2Vz
cyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhB
VkUoQVZBVURJT19ST1VUSU5HX0FSQklURVIpCiAgICAgZ3B1UHJvY2Vzcy5hdWRpb1Nlc3Npb25N
YW5hZ2VyKCkuc2Vzc2lvbigpLnNldFJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudChtX3JvdXRpbmdB
cmJpdHJhdG9yLmdldCgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpjcmVh
dGUoKnRoaXMpOworI2VuZGlmCiAKICAgICBpZiAoIXBhcmFtZXRlcnMub3ZlcnJpZGVMYW5ndWFn
ZXMuaXNFbXB0eSgpKQogICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFy
YW1ldGVycy5vdmVycmlkZUxhbmd1YWdlcyk7CkBAIC0zMDAsNyArMzA0LDkgQEAgdm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiAgICAgICAgIG1fYXVkaW9TZXNzaW9uUHJveHkgPSBudWxscHRyOwogICAgIH0KICNlbmRp
ZgotCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
LnJlc2V0KCk7CisjZW5kaWYKICAgICAvLyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG9iamVjdHMg
cmVmIHRoZWlyIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgc28gd2UgbmVlZCB0byBtYWtlIHN1
cmUKICAgICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJ5IGRlc3Ryb3lpbmcgdGhl
bS4KICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuY2xlYXIoKTsKQEAgLTk0MSw2ICs5
NDcsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlQXR0cmli
dXRpb25TdHJpbmcoKSBjb25zdAogewogfQogI2VuZGlmCisKK1JlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp2aWRlb0ZyYW1lT2JqZWN0SGVhcCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICptX3ZpZGVvRnJhbWVPYmplY3RIZWFwLmdldCgpOworfQor
CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IDYyNGUzZmEzNTFjZjBiMDM1ZTJlMTNhOTMzMjVkZGQ0YzM0MmIxNDkuLjk5NmY1
NGYzYzg0OTUwZjVlMGU3ZjAyNGM0NzU0YTMzZWFmNDhhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTA2LDYg
KzEwNiwxMCBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
czsKIGNsYXNzIFJlbW90ZVdDTGF5ZXJUcmVlSG9zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCisK
IGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhy
ZWFkOjpNYWluPgogICAgICwgcHVibGljIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGll
bnQKQEAgLTE0MSw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NBdWRpb0NhcHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0F1ZGlvQ2FwdHVyZTsgfQogICAgIGJvb2wgYWxs
b3dzVmlkZW9DYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NWaWRlb0NhcHR1cmU7IH0K
ICAgICBib29sIGFsbG93c0Rpc3BsYXlDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NE
aXNwbGF5Q2FwdHVyZTsgfQorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwJiB2aWRlb0Zy
YW1lT2JqZWN0SGVhcCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTMwNSw2ICszMTAsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9hbGxvd3NBdWRpb0NhcHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NWaWRl
b0NhcHR1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZh
bHNlIH07CisgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOwogI2VuZGlmCiAjaWYg
SEFWRShBVURJVF9UT0tFTikKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fcHJl
c2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmlu
ZGV4IGVjYjRiNTc2N2NjOWE4ZTI2ODY0NmRjZTM5ZDI2NjJjMzQyYzMzYjYuLmU5YTEwNTFlMDMw
NzM5NjQyNjU1Y2ZkN2EyMTU4MTQwY2EzYjlkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdM
Q1YuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY4LDYgKzcyLDkgQEAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUMKICAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb246OmNyZWF0ZShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwg
V1RGTW92ZShzdHJlYW0pLCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgp
KSkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKICAgICAsIG1fcmVuZGVyaW5nQmFja2VuZChyZW5kZXJpbmdCYWNrZW5kKQor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLCBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MudmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKKyNlbmRpZgog
ICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0KFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdDo6YWNxdWlyZSgpKQogICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcihn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiB7CkBAIC0y
MjMsNiArMjMwLDIxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhc1dpdGhRdWFsaWZpZWRJZGVudGlmCiAgICAgcGFpbnRQaXhlbEJ1
ZmZlclRvSW1hZ2VCdWZmZXIobV9jb250ZXh0LT5yZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWlu
dGluZygpLCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFt
VGhyZWFkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgaWYgKGF1dG8gdmlkZW9GcmFtZSA9IG1fY29udGV4
dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSkgeworICAgICAgICBhdXRv
IHdyaXRlID0gUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCgp
OworICAgICAgICBhdXRvIG5ld0ZyYW1lUmVmZXJlbmNlID0gd3JpdGUucmV0aXJlZFJlZmVyZW5j
ZSgpOworICAgICAgICByZXN1bHQgPSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMo
V1RGTW92ZShuZXdGcmFtZVJlZmVyZW5jZSksICp2aWRlb0ZyYW1lKTsKKyAgICAgICAgbV92aWRl
b0ZyYW1lT2JqZWN0SGVhcC0+cmV0aXJlKFdURk1vdmUod3JpdGUpLCBXVEZNb3ZlKHZpZGVvRnJh
bWUpLCBzdGQ6Om51bGxvcHQpOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBh
aW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxC
dWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaAppbmRleCBlYjIwZDE2YzM3N2Y1ZjNlMDA3ZjIxYmEyNTYyNGRkMTllMzZiYjE3Li5jMjM2
ZDkyYmVlOGM4NTdjOWI1YzQzNjZkZGU2M2YyOTllZjllYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaApAQCAtNTQsNiArNTQsMTEgQEAKICNpbmNsdWRlICJXQ0NvbnRlbnRCdWZmZXJJZGVudGlm
aWVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC02MSw2ICs2Niw5IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
K2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworI2VuZGlmCiAKIC8vIEdQVSBwcm9j
ZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4
dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KQEAgLTEwOCw2ICsxMTYs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJv
cik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+JiYpPiYmKTsKKyNlbmRpZgogICAgIHZvaWQg
Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50
MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nKTsKIApAQCAtMTMwLDYgKzE0MSw5IEBAIHBy
b3RlY3RlZDoKICAgICBSZWZQdHI8UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTD4gbV9jb250ZXh0
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJlYW1UaHJlYWQpOwogICAgIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwOworI2VuZGlmCiAgICAgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKICAgICBOT19VTklRVUVfQUREUkVT
UyBUaHJlYWRBc3NlcnRpb24gbV9zdHJlYW1UaHJlYWQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgppbmRleCBjOGFiMjk3NzI5MzBiZmQ0MDhhMDNjZWIzN2EwYzI5ODk4
ZTMwMmIyLi40MDMzYzMwMGQ1NTU4MjI4ZDIwNTI5ZmMyNmQ4ZTFhYTRjYWViZmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC00Miw2ICs0Miw5IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsK
ICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBD
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNo
cm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpIFN5bmNocm9ub3VzCisjZW5k
aWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiAKICAgICB2b2lkIE1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJv
bm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM1N2QyOTIzYWZlMGY5
NTkyODA0NjBhYmU5ZjEzZGVkZGRkZWZlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxSZW1vdGVW
aWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKGNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoJmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
K30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOworfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVuaW5nRm9ySVBDKFJl
ZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBpZiAoYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBudWxscHRyKSkgeworICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAv
LyBDbGllbnRzIG1pZ2h0IGhvbGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlzIGhhcHBlbnMuIFRo
ZXkgc2hvdWxkIGFsc28gc3RvcCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBkbyBub3QsCisgICAg
ICAgIC8vIGF2b2lkIGJpZyBtZW1vcnkgbGVha3MgYnkgY2xlYXJpbmcgdGhlIGZyYW1lcy4gVGhl
IGNsaWVudHMgc2hvdWxkIGZhaWwgZ3JhY2VmdWxseSAoZG8gbm90aGluZykgaW4gY2FzZSB0aGV5
IGZhaWwgdG8gbG9vayB1cAorICAgICAgICAvLyBmcmFtZXMuCisgICAgICAgIGNsZWFyKCk7Cisg
ICAgICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5nLgorICAgIH0KK30K
Kwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUoUmVt
b3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAgYXNzZXJ0SXNDdXJy
ZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1vdmUod3JpdGUpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQzN2Zk
ZDRlYTdlNjg3OWViNDM1YTAyZThmNDJhNjYwZGQ0ZDBhMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5o
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRocmVhZFNhZmVPYmplY3RIZWFwLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRB
c3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwgVmlkZW9GcmFtZSBpbnN0
YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8gR1BVIHByb2Nlc3MgdHdv
IHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVjaWFsIHN0YXRlIGZv
ciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZpZGVvRnJhbWUgaW5z
dGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUgaXMgbm8gUmVtb3Rl
VmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBWaWRlb0ZyYW1lIG1l
dGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0aGUgdGhyZWFkIHRo
YXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUgbWVkaWEgcGxheWVy
IHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRseSBWaWRlb0ZyYW1l
IGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3MgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9iamVjdEhlYXA8UmVtb3Rl
VmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYp
OworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisgICAgdm9pZCBzdG9wTGlz
dGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29u
bmVjdGlvbik7Citwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92
ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisgICAgdm9pZCByZWxlYXNl
VmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV1RGX0dV
QVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBUaHJlYWRBc3NlcnRpb24gbV9jb25zdW1lVGhyZWFk
IE5PX1VOSVFVRV9BRERSRVNTOworfTsKKworCisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNzhjZTNkMDM5ZGJlMTczMWQ1
YWY2YzhlNDk5MTBhMzk1MmE3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK21lc3NhZ2VzIC0+
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgeworICAgIFJlbGVhc2VW
aWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlIGlkZW50aWZp
ZXIpCit9CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZiN2U3ZTVlMGRiYWJhMDgyMzFiYjhi
NzhmOWJiZjBjMC4uYmY0NjFjZGZmOGFkZDYxNGRmYjBlYmYxNDkzOTNlNGVhNWMzYWJlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CkBAIC0zNSwx
OCArMzcsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRUaW1lb3V0
IHsgMzBfcyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVyID0gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CisgICAgYXV0
byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29ubmVjdGlvbiwgaWRlbnRp
ZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBsYXllci0+bV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxwdHI7CiB9CiAKLVJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CitSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92
ZShjb25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV92aWRlb0ZyYW1l
T2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhlYXAoKSkKIHsKICAg
ICBBU1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpAQCAtMTEzLDcgKzExOSwy
MyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRlb1NhbXBsZSYmIHJl
bW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgc2FtcGxlKQoreworICAgIGF1
dG8gbWVkaWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZShz
YW1wbGUpLCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFtZWRpYVNhbXBsZSkgeworICAgICAg
ICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUpKSB7CisgICAgICAgIEFTU0VS
VF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGF2
Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigqbWVkaWFTYW1wbGUp
OworICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoYXZmTWVk
aWFTYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxl
KGF2Zk1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW90ZVNh
bXBsZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKICAgICBpZiAoIXJlbW90
ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4
IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgyN2QwYTZmN2QyNTJhYTdhMGQuLjgwMmM5MGZlOWViNjY0
YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRWaWRl
b0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlv
bnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VDsKQEAgLTQyLDExICs0NCwxMyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBsZTsKIH07CiAKIG5h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNz
IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogCiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpD
bGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUo
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4m
Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CiAgICAgflJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOwogCiAgICAgdXNpbmcgV2ViQ29yZTo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpAQCAtNjEsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToK
LSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihTdHJpbmcm
Jik7CkBAIC03Myw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUlt
YWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwotICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAgICB2b2lkIGVucXVl
dWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7CisgICAgdm9pZCBlbnF1
ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBjbGVh
ckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9y
ZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnko
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTg1LDEyICs5MCwxNiBAQCBwcml2
YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CiAg
ICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWlsKCkgZmluYWw7CiAK
KyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb24gV1RGX0dVQVJE
RURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Np
b25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9z
dGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3NoYXJlZFZpZGVvRnJh
bWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBtX3ZpZGVvRnJh
bWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQgTk9fVU5J
UVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZlZmFmYjQzZGNhNjA4Y2RjMzdkNjIx
NmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4OWI2NDYzMmFiYTcxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KQEAgLTMyLDcg
KzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIE5vdFJl
ZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogICAgIEZsdXNoKCkK
ICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1ZXVlU2FtcGxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVlU2FtcGxlKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ugc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGVDVihXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgQ2xlYXJFbnF1ZXVlZFNhbXBsZXMo
KQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVjY2JiNWFkMDBjZGVjZWM1ZDAzZjYz
MzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2RkM2U1ZTcxOTc1YzU2ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6
ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBjYWxsT25N
YWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZp
ZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAg
ICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKG1f
Y29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYo
KSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwogICAgICAgICBsYXll
clJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklkKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVudGlm
aWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92ZShsYXllcklkKV0o
KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2VhYzQxYTYuLjIyNGJmZmY2ZjhlNmJi
ZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYgKzM0Nyw5IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZScsCisgICAgICAgICdXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJywKICAgICAgICAgJ1dlYktpdDo6UmVt
b3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcicsCkBAIC04ODMsNiArODg2LDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24nOiBb
JyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlc1dl
YktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyci
R2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKKyAgICAgICAg
J1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9G
cmFtZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0aW9uRmxhZ3MnOiBb
JyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0aW9uVG91Y2gnOiBb
JyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6VGFwSWRlbnRpZmllcic6IFsn
IklkZW50aWZpZXJUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
SVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAKaW5kZXgg
YmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNhYTNkODgwMTAyZjU3Yzg5YS4uYThkMjU3ZWM2NzM1ZjEw
ZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvSVBDVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRl
Y29kZXIuaCIKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00OCw2ICs0OSw4IEBAIHN0cnVj
dCBTZW5kTWVzc2FnZUNvbnRleHQgewogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbjsK
ICAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsKIH07CisKK3N0YXRpYyBzdGQ6OmF0
b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQQ1Rlc3RzIHsgMCB9OwogfQogCiBleHRlcm4gIkMiIHsK
QEAgLTExNSw3ICsxMTgsOSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RhcnRNZXNzYWdlVGVzdGluZyhJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmluZyYmIGRyaXZlcgogICAgIGlmICghbV90
ZXN0UXVldWUpCiAgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIklQQyB0
ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0Y2goW2Nvbm5lY3Rp
b24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91bGRTdG9wLCBkcml2
ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgb25nb2lu
Z0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1bk1lc3NhZ2VUZXN0aW5nKGNvbm5lY3Rpb24sIHNob3Vs
ZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFtZSkpOworICAgICAgICBvbmdvaW5nSVBDVGVzdHMtLTsK
ICAgICB9KTsKIH0KIApAQCAtMTM0LDYgKzEzOSwxMSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RvcElm
TmVlZGVkKCkKICAgICB9CiB9CiAKK2Jvb2wgaXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4g
b25nb2luZ0lQQ1Rlc3RzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aAppbmRleCA0NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJlY2ZkM2I4NDcxODVlLi5lYTQ5MzM1
NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRmNjUzMzI3ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0
ZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxh
dG9taWM+CkBAIC0zMyw2ICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2RlZmlu
ZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBDKCksICJVbnRydXN0
ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4g
dGVzdGluZyBJUEMuIikKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCisKKy8vIEZ1bmN0
aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0aW5nIElQQy1yZWxhdGVkIGZhaWx1cmVzLCBzbyB0aGF0
IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBhc3NlcnRpb25zCisvLyBhbmQgZXhwb3NlcyBidWdzIHVu
ZGVybmVhdGguCitib29sIGlzVGVzdGluZ0lQQygpOworCiBjbGFzcyBJUENUZXN0ZXIgZmluYWwg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIElQQ1Rlc3Rlcigp
OwpAQCAtNTIsNiArNTksMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3No
b3VsZFN0b3AgeyBmYWxzZSB9OwogfTsKIAorI2Vsc2UKKworY29uc3RleHByIGlubGluZSBib29s
IGlzVGVzdGluZ0lQQygpCit7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAjZW5kaWYKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI2OGNlNWNmZjFiZTM0ZjQ4YzkyYWM0MTA4YjJhYTFl
MDJkYzdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpbmNsdWRlIDxhdG9t
aWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
VHlwZSBmb3IgdGhlIGtleSBpbiBtYXBwaW5nIGZyb20gb2JqZWN0IGlkZW50aWZpZXIgcmVmZXJl
bmNlcyB0byBvYmplY3Qgc3RhdGUuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZSgpID0gZGVmYXVsdDsKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKFQgaWRlbnRp
ZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICB7CisgICAgfQorICAgIGV4cGxp
Y2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKQorICAgICAgICA6IG1faWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkK
KyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9pZGVudGlmaWVyID09
IG1faWRlbnRpZmllciAmJiBvdGhlci5tX3ZlcnNpb24gPT0gbV92ZXJzaW9uOworICAgIH0KKyAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOworICAgICAgICBl
bmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZT4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFQ+IGlkZW50
aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lvbjsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsgV1RGTW92ZSgqaWRl
bnRpZmllciksICp2ZXJzaW9uIH07CisgICAgfQorcHJpdmF0ZToKKyAgICBUIG1faWRlbnRpZmll
cjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorc3RydWN0IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+OworICAgIE9i
amVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKFJlZmVyZW5jZSByZWZlcmVuY2UpCisgICAgICAg
IDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UuaWRlbnRpZmllcigpOyB9CisgICAgdWludDY0
X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLnZlcnNpb24oKTsgfQorICAg
IFJlZmVyZW5jZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZTsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWZlcmVuY2U7CisgICAgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE9iamVj
dElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7CisgICAgICAgIGRl
Y29kZXIgPj4gcmVmZXJlbmNlOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50
aWZpZXJSZWFkUmVmZXJlbmNlIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSB9OworICAgIH0KKworcHJp
dmF0ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+OworICAgIHN0
YXRpYyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4gZ2VuZXJhdGVGb3JBZGQoKSB7
IHJldHVybiB7IHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIDAgfSwgMCB9OyB9CisKKyAgICBP
YmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSwgdWludDY0
X3QgcGVuZGluZ1JlYWRzKQorICAgICAgICA6IG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkKKyAgICAg
ICAgLCBtX3BlbmRpbmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAgIH0KKyAgICBUIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5pZGVudGlmaWVyKCk7IH0KKyAg
ICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UudmVyc2lvbigp
OyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5n
UmVhZHM7IH0KKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZWZl
cmVuY2U7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJldGlyZWRSZWZlcmVu
Y2UoKSBjb25zdCB7IHJldHVybiB7IGlkZW50aWZpZXIoKSwgdmVyc2lvbigpICsgMSB9OyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVyZW5jZTsKKyAgICAg
ICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHBlbmRpbmdSZWFkczsKKworICAgICAgICBkZWNvZGVyID4+IHJlZmVyZW5jZQorICAgICAg
ICAgICAgPj4gcGVuZGluZ1JlYWRzOworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIE9iamVjdElk
ZW50aWZpZXJXcml0ZVJlZmVyZW5jZSB7IFdURk1vdmUoKnJlZmVyZW5jZSksICpwZW5kaW5nUmVh
ZHMgfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmZXJlbmNlIG1fcmVmZXJlbmNlOworICAg
IHVpbnQ2NF90IG1fcGVuZGluZ1JlYWRzIHsgMCB9OworfTsKKworLy8gQ2xhc3MgdG8gZ2VuZXJh
dGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byBhbiBPYmplY3RJZGVudGlmZXIuCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyKTsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmll
clJlYWRSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2UgPSBPYmplY3RJZGVu
dGlmaWVyV3JpdGVSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlID0gT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZTxUPjsKKworICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyKFQgaWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICB7CisgICAgfQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2VUcmFja2VyKFJlZmVyZW5jZSByZWZlcmVuY2UpCisgICAgICAgIDogbV9pZGVudGlmaWVyKHJl
ZmVyZW5jZS5pZGVudGlmaWVyKCkpCisgICAgICAgICwgbV92ZXJzaW9uKHJlZmVyZW5jZS52ZXJz
aW9uKCkpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAgICBSZWFkUmVmZXJl
bmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVhZHMrKzsKKyAgICAg
ICAgcmV0dXJuIFJlZmVyZW5jZSB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uIH07CisgICAgfQor
ICAgIC8vIE5vdCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0ZSB3cml0ZXMgYW5k
IHJlYWRzIGFueXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4geyB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKysgfSwgbV9wZW5kaW5n
UmVhZHMuZXhjaGFuZ2UoMCkgfTsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBj
b25zdCBUIG1faWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBt
X3BlbmRpbmdSZWFkcyB7IDAgfTsKKyAgICBtdXRhYmxlIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAg
fTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiByZWZlcmVuY2UpCit7CisgICAgYWRk
KGhhc2hlciwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSk7CisgICAgYWRkKGhhc2hlciwgcmVmZXJl
bmNlLnZlcnNpb24oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCByZWZlcmVuY2Uu
dmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6
Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMg
PDwgIk9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZp
ZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIikiOworICAgIHJldHVybiB0
czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNl
PFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVy
ZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UudmVy
c2lvbigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnBlbmRpbmdSZWFkcygpIDw8ICIpIjsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxU
Pj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlPFQ+PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBI
YXNoVHJhaXRzPFQ+OjplbXB0eVZhbHVlSXNaZXJvOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxU
Pj4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVIYXNoKHJlZmVyZW5jZSk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgYSwgY29uc3QgV2ViS2l0OjpPYmpl
Y3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0g
YjsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Ro
cmVhZFNhZmVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZlT2Jq
ZWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMDllNWJhOGE0ODFiMzY1MDE2NzRmMmUwZWM3OTJkMzg1
YTVhODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UaHJlYWRTYWZl
T2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5j
bHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRy
YWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBDb250YWluZXIgdGhhdCBob2xkcyBpZGVudGlmaWVyIC0+IG9iamVj
dCBtYXBwaW5nIGJldHdlZW4gdHdvIHByb2Nlc3Nlcy4KKy8vIFVzZWQgaW4gc2NlbmFyaW9zIHdo
ZXJlIHRoZSBob2xkZXIgcHJvY2VzcyBwcm9jZXNzZXMgbWVzc2FnZXMgd2l0aCB0aGUgb2JqZWN0
IHJlZmVyZW5jZXMgaW4gbXVsdGlwbGUKKy8vIHRocmVhZHMuIGBUaHJlYWRTYWZlT2JqZWN0SGVh
cGAgdHJhY2tzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIHRoZSBjb250ZW50IHBv
aW50ZWQKKy8vIGJ5IGEgcGFydGljdWxhciBpZGVudGlmaWVyLgorLy8gUGVuZGluZyByZWFkcyBt
YXkgYmxvY2sgbmV3IHdyaXRlcy4gQWx0ZXJuYXRpdmVseSBuZXcgd3JpdGVzIGNhbiBza2lwIGFo
ZWFkIG9mIHRoZSByZWFkcywKKy8vIGZvciBleGFtcGxlIGluIGNvcHktb24td3JpdGUgc2NlbmFy
aW9zLgorLy8gUGVuZGluZyB3cml0ZXMgYmxvY2sgcmVhZHMuCisvLyBDdXJyZW50bHkgaW1wbGVt
ZW50ZWQgb25seSBmb3IgcmVhZC1vbmx5IChjcmVhdGUtcmVhZC1kZXN0cm95KSBvciBjb3B5LW9u
LXdyaXRlIHR5cGVzLAorLy8gZS5nLiBubyB0d28tcGhhc2UgZ2V0KCkgb3BlcmF0aW9ucyBhcmUg
bm90IGltcGxlbWVudGVkIHlldC4KK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVu
YW1lIEhlbGRUeXBlPgorY2xhc3MgVGhyZWFkU2FmZU9iamVjdEhlYXAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+
PiB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+OjpSZWFkUmVmZXJlbmNlOworICAg
IHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXI8SWRlbnRpZmllcj46OldyaXRlUmVmZXJlbmNlOworICAgIHVzaW5nIFJlZmVyZW5j
ZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+
OjpSZWZlcmVuY2U7CisKKyAgICAvLyBXYWl0cyB1bnRpbCBhIHdyaXRlIGNyZWF0ZXMgdGhlIHJl
ZmVyZW5jZSBhbmQgdGhlbiByZXRpcmVzIHRoZSByZWFkIG9yCisgICAgLy8gdGltZXMgb3V0Lgor
ICAgIEhlbGRUeXBlIHJldGlyZShSZWFkUmVmZXJlbmNlJiYsIElQQzo6VGltZW91dCk7CisKKyAg
ICAvLyBJbnNlcnRzIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBvciByZW1vdmVzIGFuIG9s
ZCBvbmUgYW5kIHRoZW4gcmV0aXJlcyB0aGUgd3JpdGUgb3IKKyAgICAvLyB0aW1lcyBvdXQuCisg
ICAgLy8gSWYgdGltZW91dCBpcyBwYXNzZWQsIHdhaXRzIHVudGlsIHBlbmRpbmcgcmVhZHMgYXJl
IGRvbmUuCisgICAgLy8gSXQgaXMgYSBjYWxsZXIgZXJyb3IgdG8gbm90IHdhaXQgYW5kIG11dGF0
ZSB0aGUgb2xkIG9iamVjdC4KKyAgICB2b2lkIHJldGlyZShXcml0ZVJlZmVyZW5jZSYmLCBzdGQ6
Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG5ld09iamVjdCwgc3RkOjpvcHRpb25hbDxJUEM6OlRpbWVv
dXQ+KTsKKworICAgIHZvaWQgcmV0aXJlUmVtb3ZlKFdyaXRlUmVmZXJlbmNlJiYpOworCisgICAg
dm9pZCBjbGVhcigpOworcHJpdmF0ZToKKyAgICBMb2NrIG1fb2JqZWN0c0xvY2s7CisgICAgQ29u
ZGl0aW9uIG1fb2JqZWN0c0NvbmRpdGlvbjsKKyAgICBzdHJ1Y3QgUmVmZXJlbmNlU3RhdGUgewor
ICAgICAgICB1aW50NjRfdCByZXRpcmVkUmVhZHMgeyAwIH07CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZpbmFsUmVhZDsgLy8gUmVtb3ZlIGFmdGVyIGBmaW5hbFJlYWRgIHJlYWRz
LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiBvYmplY3Q7IC8vIE9iamVjdCBvciB0
b21ic3RvbmUuCisKKyAgICAgICAgUmVmZXJlbmNlU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgICAg
IGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRlKEhlbGRUeXBlJiYgb2JqZWN0KQorICAgICAgICAgICAg
OiBvYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gVG9tYnN0b25lIGNvbnN0cnVjdG9yLgorICAgICAgICBleHBsaWNpdCBSZWZlcmVuY2VTdGF0
ZSh1aW50NjRfdCBmaW5hbFJlYWQpCisgICAgICAgICAgICA6IGZpbmFsUmVhZChmaW5hbFJlYWQp
CisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07CisgICAgSGFzaE1hcDxSZWZlcmVuY2UsIFJl
ZmVyZW5jZVN0YXRlPiBtX29iamVjdHMgV1RGX0dVQVJERURfQllfTE9DSyhtX29iamVjdHNMb2Nr
KTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBl
PgorSGVsZFR5cGUgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+Ojpy
ZXRpcmUoUmVhZFJlZmVyZW5jZSYmIHJlYWQsIElQQzo6VGltZW91dCB0aW1lb3V0KQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgZG8geworICAgICAgICBhdXRv
IGl0ID0gbV9vYmplY3RzLmZpbmQocmVhZC5yZWZlcmVuY2UoKSk7CisgICAgICAgIGlmIChpdCAh
PSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRlID0gaXQtPnZhbHVl
OworICAgICAgICAgICAgaWYgKHN0YXRlLm9iamVjdCkgeworICAgICAgICAgICAgICAgIEhlbGRU
eXBlIHJlc3VsdCA9ICpzdGF0ZS5vYmplY3Q7CisgICAgICAgICAgICAgICAgc3RhdGUucmV0aXJl
ZFJlYWRzKys7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCkgeworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RhdGUuZmluYWxSZWFkID49IHN0YXRlLnJldGlyZWRSZWFk
cyk7IC8vIFRydXN0ZWQgYXNzZXJ0IGJlY2F1c2UgdGhpcyBpcyBlbnN1cmVkIG9uIGBmaW5hbFJl
YWRgIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5maW5hbFJlYWQg
PT0gc3RhdGUucmV0aXJlZFJlYWRzKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9vYmplY3Rz
LnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fb2JqZWN0
c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbV9vYmplY3RzQ29uZGl0aW9u
LndhaXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0LmRlYWRsaW5lKCkpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBU
aHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGlyZShXcml0ZVJl
ZmVyZW5jZSYmIHdyaXRlLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG9iamVjdCwgc3RkOjpv
cHRpb25hbDxJUEM6OlRpbWVvdXQ+IHRpbWVvdXQpCit7CisgICAgY29uc3QgYm9vbCB3YWl0Rm9y
UGVuZGluZ1JlYWRzID0gdGltZW91dC5oYXNfdmFsdWUoKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9IG1fb2JqZWN0cy5m
aW5kKHdyaXRlLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fb2JqZWN0cy5lbmQo
KSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBp
ZiAoc3RhdGUuZmluYWxSZWFkICYmIHN0YXRlLm9iamVjdCkgeworICAgICAgICAgICAgICAgIC8v
IFdyaXRlIHJlcGxheTogYGZpbmFsUmVhZGAgaXMgYXNzaWduZWQgb24gd3JpdGUuIENhbm5vdCBo
YXZlIHRoZSBzYW1lIHZlcnNpb24gd2l0aCB3cml0ZXMuCisgICAgICAgICAgICAgICAgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA+IHdyaXRlLnBlbmRpbmdSZWFk
cygpKSB7CisgICAgICAgICAgICAgICAgLy8gV3JpdGUgdW5kZXJmbG93OiBtb3JlIHJlYWRzIGhh
dmUgYmVlbiBkb25lIHRoYW4gdGhlIHNlbmRlciBjbGFpbXMgaXMgdGhlIG1heGltdW0uCisgICAg
ICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSXQgaXMgbGlrZWx5IGEgY2FsbGVy
IGVycm9yIHRvIHRyeSB0byBhZGQgYSBuZXcgcmVmZXJlbmNlIHdpdGggdGhlIHNhbWUgY2xpZW50
IG9iamVjdCB3aXRob3V0CisgICAgICAgICAgICAvLyB3YWl0aW5nIGZvciBwZW5kaW5nIHJlYWRz
IG9uIHRoZSBvbGQgcmVmZXJlbmNlLgorICAgICAgICAgICAgQVNTRVJUKHdhaXRGb3JQZW5kaW5n
UmVhZHMgfHwgIXN0YXRlLm9iamVjdCB8fCAqc3RhdGUub2JqZWN0ICE9IG9iamVjdCk7CisKKyAg
ICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVuZGluZ1JlYWRzKCkg
fHwgIXdhaXRGb3JQZW5kaW5nUmVhZHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUucmV0
aXJlZFJlYWRzIDwgd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlLmZpbmFsUmVhZCA9IHdyaXRlLnBlbmRpbmdSZWFkcygpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVhZHMoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgaWYg
KG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlZFJlZmVyZW5jZSgpLCBSZWZlcmVuY2VTdGF0ZSB7
IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIG5ld1N0YXRlID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVu
dHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0
ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3ZlKCpvYmplY3QpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5vYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRoZSByZXRpcmVkIHdy
aXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJzdG9uZS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0
aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRGb3JQZW5kaW5nUmVh
ZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAvLyBXcml0ZSB0aGUg
dG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5yZWZlcmVuY2UoKSwg
UmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAgICAgICAgICAgIGlm
IChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZNb3ZlKHdyaXRlKS5y
ZXRpcmVkUmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZSgqb2JqZWN0KSB9KTsK
KyAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodGltZW91dCk7CisgICAgICAgIGlm
ICghbV9vYmplY3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0LT5k
ZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQg
VGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpyZXRpcmVSZW1vdmUo
V3JpdGVSZWZlcmVuY2UmJiBvYmplY3QpCit7CisgICAgcmV0aXJlKFdURk1vdmUob2JqZWN0KSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVu
dGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRl
bnRpZmllciwgSGVsZFR5cGU+OjpjbGVhcigpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2Jq
ZWN0c0xvY2sgfTsKKyAgICBtX29iamVjdHMuY2xlYXIoKTsKK30KKworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVCeXRlUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAppbmRleCA0ZGUxZDBlZDJhN2JlNDllM2Ni
YmI5NWUzNzdmNTQ1MDlmYWMwN2FkLi43OGY3MzEzNGNlNmE3YTIxNGNkYzlkZTA1YzQ3NTM3MmUx
N2M5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgQXRvbVN0cmluZyBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6dHJhY2tJRCgpIGNvbnN0
CiAgICAgcmV0dXJuIEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrSUQpOwogfQogCi1QbGF0Zm9y
bVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1T
YW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gewogICAgICAgICBQbGF0Zm9ybVNhbXBsZTo6Qnl0ZVJhbmdlU2FtcGxlVHlwZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKaW5kZXggYjhlNGQ3NmNlNmYzOTI4NTc2
ZTlmYjFlZjk2MmI0MDQ5N2UzZGMzMS4uZjgzMzZiZjAxMzcyMTA5MGRhMTkzNzhmYjVhNDUzYzhk
YWNhNTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQogCiAgICAgQXRvbVN0cmluZyB0cmFj
a0lEKCkgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1T
YW1wbGUoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlh
VGltZSYpIGZpbmFsOwogICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjVjNWJkYzllZjg4NDM3
ODgzOTlmYWFjZWU1ZTI5NGU4YWQ5YTZhMy4uNTA4ZGE3YTU3ZWIwMjYyM2E3MGQwZDFhMThmYjdl
N2RmZDkyYmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC03MCw2ICs3MCw3IEBAIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCitH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC03NDUsNiArNzQ2LDcgQEAgV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCitXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTg4Myw2ICs4ODUsNyBAQCBSZW1vdGVEZXZpY2VNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVRdWVyeVNldE1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXVlTWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM2ODE4
NWRmOTlhYTc1NzhlNTBiNzIyM2YxMDVkNjk3ZTU3NzM0NC4uM2E4NTRkZDBlMDkzZWMwM2I4YWEx
ZTczODNiMGNhYmNiMGFkNWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTExLDYgKzUxMTEsMTMgQEAKIAkJN0I0ODNGMUUyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAvKiBJUENUZXN0ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTAy
N0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZG
OTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RB
ODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RDNTI3QUU1MDFBMDA2
QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMzYsNiAr
NTE0Myw3IEBACiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRERB
MzNGMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzNDAyNzU2NTJFQTAwMzg2NTlFIC8q
IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2Jq
ZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTY4MDAsNiArNjgwOCwxMCBAQAogCQkJCUNEODI1MkQxMjVENDY0QUIwMDg2MkZE
OCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywKIAkJCQlDRDgyNTJEMzI1RDQ2
NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLm1lc3NhZ2VzLmluICov
LAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTMyN0E3REM2QzAwNkM2
Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8sCisJCQkJN0I1QTNEQTIyN0E3REMx
QTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovLAorCQkJCTdCNUEzREExMjdB
N0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
Y3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZGN0I2RiAvKiBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYyMkYxMTAwRkY3QjZGIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCkBAIC02ODkwLDYgKzY5MDIsOCBAQAog
CQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDREQzg4MDA5NEZGQjQgLyogUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2MjNENERDODgwMDk0RkZCNCAvKiBSZW1v
dGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEzREE4MjdBN0RDQkMwMDZDNkY5NyAvKiBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCisJCQkJN0I1QTNEQTcyN0E3RENCQzAw
NkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8sCiAJCQkJMDcxQkM1ODQy
M0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcx
QkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5oICovLAogCQkJ
CTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbi5oICovLApAQCAtNzI2Nyw2ICs3MjgxLDcgQEAKIAkJCQkxQURDQjg2ODE4OTgzMUIz
MDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJCTFBRENCODY5MTg5
ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAogCQkJCTVDRDc0OEI1
MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oICovLAor
CQkJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlci5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBv
cHVwTWVudURhdGEuY3BwICovLApAQCAtNzMwNyw2ICs3MzIyLDcgQEAKIAkJCQk4M0Y5NjQ0QzFG
QTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuaCAqLywKIAkJ
CQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAogCQkJ
CUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQu
aCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9iamVjdEhl
YXAuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0
YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFDIC8qIFRvdWNoQmFyTWVudURh
dGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0EgLyogVG91Y2hCYXJNZW51SXRl
bURhdGEuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlMjlmNGJkNTYxMzJlY2Q2NzE3MWJjMzdjYjJj
YzU2MWJlMTI5MzU5Li41YzVkZTE4MjEyNjdiZDg1NmRlZTU3NzE2NWY0NTRjYmQ0MjQyN2VhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTEgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZVByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKQEAgLTIwOCw2ICsyMTMsMTAgQEAgYm9vbCBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWMKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkKICAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omhh
bmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNl
bmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU1TKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpCisgICAgICAgIHJldHVybiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Omhh
bmRsZU1lc3NhZ2VUb1JlbW92ZWREZXN0aW5hdGlvbihjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyNl
bmRpZgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb1Nlc3Npb246Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
aW5kZXggN2FlMWVlNzZkYzRiMDdjNDAzZjYwYjhhZDEzZGFkOWI4N2JkZWQwYS4uMTJkMzJlMzU4
NWYyZmE4MTc0ZDJjMzFlYzc0MDFjYjU3Y2ZkYTU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEx
OCw2ICsxMjIsMjMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImIGIKICAgICB9CiB9CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHJl
c3VsdDsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGU6OlJlcGx5KHJlc3VsdCkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUobV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLCBXVEZNb3ZlKCpyZXN1bHQpKTsKK30KKyNlbmRpZgorCiBib29sIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRp
YVBsYXllciwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApp
bmRleCAyOWYwMTk4NzE5NTU5OTg3OTJlZTc3OTVkOWFhNjBjMmYzOTczOTcxLi41ZDFjYWIyMThm
Nzg1Y2JhMTE0NmE4OTEyMmIzMGQxMGNjNjgzMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaApAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKKyNlbmRpZgog
ICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdD
R0xlbnVtIGdldEVycm9yKCkgZmluYWw7CiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShX
ZWJDb3JlOjpNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYS5tbQppbmRleCBmZjdlMTQ4ZDZiNWVlYmEwMjRhOTNlM2ViMjEyNjJiYWI3MjI4
MDhjLi4wYjhiYmExNmNmZWMxNmIyYmExODcxNzFhZmQ5YjNiMzEzMWQ2N2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpA
QCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZG
T2JqQy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC05OSw5ICs5OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXND
VigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwotI2VuZGlmCiBwcml2YXRlOgogICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZCkKICAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQpAQCAtMTE0LDIwICsxMTAsNiBA
QCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OwogfTsKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1SZWZQdHI8V2ViQ29yZTo6TWVkaWFT
YW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKQotewotICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRp
YVNhbXBsZS4KLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJD
b3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7Ci0gICAgaWYgKCFw
aXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZm
ZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d24sIHRydWUpOwotfQotI2VuZGlmCi0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI1MDI2MTVkYTI3MmIz
YmY0NmNmNDY0OTYxYjdmOGViMmExZjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgiCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllclR5cGU+OwordXNpbmcgUmVtb3RlVmlk
ZW9GcmFtZVJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTxSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UgPSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXI+OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSA9IE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcgUmVtb3Rl
VmlkZW9GcmFtZVJlZmVyZW5jZVRyYWNrZXIgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlcjxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODI1MDc2ZjJh
NzYyZTI4MWI5MjQzOTQwZGM0ZjIwMjhlN2MzYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYg
cmVmZXJlbmNlLCBjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgV1RGTW92ZShyZWZlcmVuY2UpLAorICAgICAgICBtZWRpYVNh
bXBsZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvTWlycm9y
ZWQoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9Sb3RhdGlvbigpLAorICAgICAgICBleHBh
bmRlZEludFNpemUobWVkaWFTYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpKQorICAgIH07Cit9CisK
K1JlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3Jl
YXRlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90
ZVZpZGVvRnJhbWVQcm94eShjb25uZWN0aW9uLCBXVEZNb3ZlKHByb3BlcnRpZXMpKSk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlVW51c2VkKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgUHJvcGVydGllcyYmIHByb3BlcnRpZXMpCit7CisgICAgcmVsZWFzZShj
b25uZWN0aW9uLCB7IHsgcHJvcGVydGllcy5yZWZlcmVuY2UuaWRlbnRpZmllcigpLCBwcm9wZXJ0
aWVzLnJlZmVyZW5jZS52ZXJzaW9uKCkgfSwgMCB9KTsKK30KKworUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQ
cm9wZXJ0aWVzJiYgcHJvcGVydGllcykKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQor
ICAgICwgbV9yZWZlcmVuY2VUcmFja2VyKHByb3BlcnRpZXMucmVmZXJlbmNlKQorICAgICwgbV9w
cmVzZW50YXRpb25UaW1lKHByb3BlcnRpZXMucHJlc2VudGF0aW9uVGltZSkKKyAgICAsIG1faXNN
aXJyb3JlZChwcm9wZXJ0aWVzLmlzTWlycm9yZWQpCisgICAgLCBtX3JvdGF0aW9uKHByb3BlcnRp
ZXMucm90YXRpb24pCisgICAgLCBtX3NpemUocHJvcGVydGllcy5zaXplKQoreworfQorCitSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6On5SZW1vdGVWaWRlb0ZyYW1lUHJveHkoKQoreworICAgIHJlbGVh
c2UobV9jb25uZWN0aW9uLmdldCgpLCB3cml0ZSgpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZUlk
ZW50aWZpZXIgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjppZGVudGlmaWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLmlkZW50aWZpZXIoKTsKK30KKworUmVtb3RlVmlk
ZW9GcmFtZVdyaXRlUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6d3JpdGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIud3JpdGUoKTsKK30KKworUmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWFkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsKK30KKworTWVkaWFU
aW1lIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsKK30KKworV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5
cGUsIHsgfSB9OworfQorCitNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnZpZGVvUm90YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3JvdGF0aW9u
OworfQorCitib29sIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNNaXJyb3JlZDsKK30KKwordWludDMyX3QgUmVtb3RlVmlkZW9G
cmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIGZyb20gdGhlIGJhc2UgY2xhc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTYW1wbGVWaWRlb0Zy
YW1lPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvRnJhbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxl
YXNlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVm
ZXJlbmNlJiYgcmVsZWFzZVdyaXRlKQoreworICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OlJlbGVhc2VWaWRlb0ZyYW1lKFdURk1vdmUocmVs
ZWFzZVdyaXRlKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTkzNTFkZTQ1Mjk4MmFlYmYxNmQzOGUwYmU4NTIzMmU3MDYwMjc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZS5oPgorCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEZWNvZGVyOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisKKy8vIEEg
V2ViQ29yZTo6VmlkZW9GcmFtZSBjbGFzcyB0aGF0IHBvaW50cyB0byBhIGNvbmNyZXRlIFdlYkNv
cmU6OlZpZGVvRnJhbWUgaW5zdGFuY2UKKy8vIGluIGFub3RoZXIgcHJvY2VzcywgR1BVIHByb2Nl
c3MuCitjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
VmlkZW9GcmFtZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVtb3RlVmlkZW9GcmFtZVByb3h5KTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3Qg
UHJvcGVydGllcyB7CisgICAgICAgIC8vIFRoZSByZWNlaXZlciBvd25zIHRoZSByZWZlcmVuY2Us
IHNvIGl0IG11c3QgYmUgcmVsZWFzZWQgdmlhIGVpdGhlciBhZG9wdGlvbiB0bworICAgICAgICAv
LyBgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoKWAgb3IgdmlhIGBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoKWAuCisgICAgICAgIFdlYktpdDo6UmVtb3RlVmlkZW9G
cmFtZVJlZmVyZW5jZSByZWZlcmVuY2U7CisgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25U
aW1lOworICAgICAgICBib29sIGlzTWlycm9yZWQgeyBmYWxzZSB9OworICAgICAgICBWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uIHsgVmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgICAgICBXZWJDb3Jl
OjpJbnRTaXplIHNpemU7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9wZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwor
ICAgIH07CisKKyAgICBzdGF0aWMgUHJvcGVydGllcyBwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVJlZmVyZW5jZSYmLCBjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworCisg
ICAgc3RhdGljIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShJUEM6OkNvbm5l
Y3Rpb24mLCBQcm9wZXJ0aWVzJiYpOworCisgICAgLy8gQ2FsbGVkIGJ5IHRoZSBlbmQtcG9pbnRz
IHRoYXQgY2FwdHVyZSBjcmVhdGlvbiBtZXNzYWdlcyB0aGF0IGFyZSBzZW50IGZyb20gR1BVUCBi
dXQKKyAgICAvLyB3aG9zZSBkZXN0aW5hdGlvbnMgd2VyZSByZWxlYXNlZCBpbiBXUCBiZWZvcmUg
bWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgorICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VVbnVzZWQoSVBD
OjpDb25uZWN0aW9uJiwgUHJvcGVydGllcyYmKTsKKworICAgIH5SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkoKSBmaW5hbDsKKworICAgIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2Ugd3JpdGUoKSBjb25z
dDsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSByZWFkKCkgY29uc3Q7CisKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsKKworICAgIC8vIFdlYkNvcmU6OlZpZGVv
RnJhbWUgb3ZlcnJpZGVzLgorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IHZpZGVvRnJhbWUoKSBjb25zdCBmaW5hbDsK
KyAgICAvLyBGSVhNRTogV2hlbiBWaWRlb0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ug
d2lsbCBub3QgYmUgbmVlZGVkLgorICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNv
bnN0IGZpbmFsOworCitwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNv
bm5lY3Rpb24mLCBQcm9wZXJ0aWVzJiYpOworICAgIHN0YXRpYyB2b2lkIHJlbGVhc2UoSVBDOjpD
b25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYpOworCisgICAgc3Rh
dGljIGlubGluZSBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisKKyAgICBjb25z
dCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgUmVtb3RlVmlkZW9GcmFt
ZVJlZmVyZW5jZVRyYWNrZXIgbV9yZWZlcmVuY2VUcmFja2VyOworICAgIGNvbnN0IE1lZGlhVGlt
ZSBtX3ByZXNlbnRhdGlvblRpbWU7CisgICAgY29uc3QgYm9vbCBtX2lzTWlycm9yZWQ7CisgICAg
Y29uc3QgVmlkZW9Sb3RhdGlvbiBtX3JvdGF0aW9uOworICAgIGNvbnN0IFdlYkNvcmU6OkludFNp
emUgbV9zaXplOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZQorICAgICAgICA8PCBpc01pcnJv
cmVkCisgICAgICAgIDw8IHJvdGF0aW9uCisgICAgICAgIDw8IHNpemU7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlZmVy
ZW5jZT4gcmVmZXJlbmNlOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVzZW50YXRp
b25UaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNNaXJyb3JlZDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZpZGVvUm90YXRpb24+IHZpZGVvUm90YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpJbnRTaXplPiBzaXplOworICAgIGRlY29kZXIgPj4gcHJlc2VudGF0aW9uVGltZQor
ICAgICAgICA+PiBpc01pcnJvcmVkCisgICAgICAgID4+IHZpZGVvUm90YXRpb24KKyAgICAgICAg
Pj4gc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwg
V1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwg
KnNpemUgfTsKK30KKworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVQcm94eSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBtZWRpYVNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGU6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eVR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9GcmFtZSkKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBt
ZWRpYVNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGU6OlJlbW90ZVZpZGVvRnJhbWVQcm94eVR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggZTVlZjQ2
ZTYwODIzOTQ2MmFhNDA0OGNiN2QzZmEwMzQyZTk4YjU3NS4uNzc5OWEzMDYxY2Q1ZTA1ZTJiZjQy
ZjU3ZDFjNmJjNGRkODQ4NThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAg
LTQ5LDEyICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
PiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShTYW1wbAogCiBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyLCBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OkNsaWVudCYgY2xpZW50KQogICAgIDogV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KGNsaWVudCkKKyAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oJldlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkpCiAgICAgLCBtX21hbmFnZXIobWFu
YWdlcikKLSAgICAsIG1fY29ubmVjdGlvbihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAsIG1fY29ubmVjdGlvbiht
X2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpCiAgICAgLCBtX2lkZW50aWZpZXIo
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKIHsKICAgICBt
YW5hZ2VyLmFkZExheWVyKCp0aGlzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03OCw3ICs4MCw3
IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRMb2dJZGVudGlmaWVyKFN0cmlu
ZyYmIGxvZ0lkZW50aWZpZXIpCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6flNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIGRpc2Nvbm5l
Y3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpSZWxlYXNl
TGF5ZXIgeyBtX2lkZW50aWZpZXIgfSwgMCk7CiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAg
bV9tYW5hZ2VyLT5yZW1vdmVMYXllcigqdGhpcyk7CkBAIC0xNDAsNiArMTQyLDExIEBAIHZvaWQg
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CisgICAgaWYgKGlzPFJl
bW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKSkgeworICAgICAgICBhdXRvJiByZW1vdGVTYW1w
bGUgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KHNhbXBsZSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpFbnF1ZXVlU2FtcGxlIHsgcmVtb3RlU2FtcGxlLnJlYWQoKSB9LCBtX2lkZW50aWZpZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byByZW1vdGVTYW1wbGUgPSBSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKHNhbXBsZSwgUmVtb3RlVmlkZW9TYW1wbGU6OlNob3VsZENoZWNr
Rm9ySU9TdXJmYWNlOjpObyk7CiAgICAgaWYgKCFyZW1vdGVTYW1wbGUtPnN1cmZhY2UoKSkgewpA
QCAtMTQ4LDcgKzE1NSw3IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3RlU2FtcGxlIH0sIG1faWRlbnRpZmllcik7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OkVucXVldWVTYW1wbGVDViB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1w
bGVzKCkKQEAgLTE3MSwxMSArMTc4LDE4IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpzZXREaWRGYWlsKGJvb2wgdmFsdWUpCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiB7CiAg
ICAgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLmRpc2FibGUoKTsKKyAgICBkaXNjb25uZWN0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIG1fZGlkRmFpbCA9IHRydWU7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
U3RhdHVzRGlkRmFpbCgpOwogfQogCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlz
Y29ubmVjdEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIGlmIChhdXRvKiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVQcm9jZXNzQ29ubmVjdGlv
biwgbnVsbHB0cikpCisgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdmVDbGllbnQo
KnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRl
eCA1NjM2OWFkZGYwYWJmMzQ2YjBkMjFjODUwNmQ2OWNiM2QzYjQwZTM5Li4wNDQ0ZWNmMmI4NjI3
OTQ0MzIxMTEzZTY5ZDI2YjEyYjI1NWJmYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImLCBXZWJDb3JlOjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudCYpOworICAgIHZvaWQgZGlzY29ubmVjdEdQ
VVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKIAogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcgogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIs
IFdlYkNvcmU6OkludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwpAQCAtNzYsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGlkRmFpbChib29sKTsK
ICAgICBib29sIGNvcHlTaGFyZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCisgICAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2Vha1B0
cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3YTY3YWE4MzEzNDI1NWEyYjBhZjYzYmI0M2NmMjBhYjdm
NjFkODEuLmRmYmY4YzdjYTE1NzRmMmEzYmRiMmQ5ZGNiYzMzNmQzMTQzMmNkMjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMi0wMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIEludHJvZHVjZSBhIFJlbW90ZU1lZGlhU2FtcGxlUHJveHkgdG8gcmVwcmVzZW50IGNh
cHR1cmVkIHZpZGVvIGZyYW1lcyB1c2VkIGluIE1lZGlhIFN0cmVhbXMgYW5kIHByZXNlbnQgaW4g
R1BVUAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFNj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2FtcGxlTWFwLmNwcDoKKwogMjAyMi0wMi0xMCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIy
ODk1MjUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggMzBmN2ZkODJiMzMxYTA2ZjRj
NGUwY2I0ZTNiODlmNzVmZmU2YjE4MS4uNWQ3NDE1MjFhZGI1OThhODJmYTgxZTE4OTUxNzM5ZWQw
YjI1OTc4ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtOTQsNyArOTQsMTAgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0g
e3sKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4g
KE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2Rh
YmxlUmVwbHkKICNlbmRpZgotI2lmICFQTEFURk9STShDT0NPQSkKKyNpZiBVU0UoR1JBUEhJQ1Nf
TEFZRVJfV0MpCisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6V0NDb250ZW50QnVmZmVySWRlbnRpZmllcj4gY29udGVudEJ1ZmZlcikgU3luY2hy
b25vdXMKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShHUkFQSElDU19MQVlF
Ul9XQykKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25vdXMKICNl
bmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQpA
QCAtMTA0LDYgKzEwNyw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5v
dFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+
ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBT
eW5jaHJvbm91cwogICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRh
cmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZv
cm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAt
PiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIC0+IChzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBwcm9wZXJ0
aWVzKSBTeW5jaHJvbm91cworI2VuZGlmCiAgICAgdm9pZCBTaW11bGF0ZUV2ZW50Rm9yVGVzdGlu
ZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nIGV2
ZW50KQoge30KIH19CkBAIC0yMzIsNyArMjM4LDcgQEAgZGVmIGNyZWF0ZV9jcHBfdHlwZV9jb250
YWluZXIodHlwZV9uYW1lIDogc3RyKSAtPiBPcHRpb25hbFtjcHBfdHlwZV9jb250YWluZXJdOgog
ICAgICAgICByZXR1cm4gTm9uZQogICAgIGNvbnRhaW5lcl9uYW1lID0gbVsxXQogICAgICMgQWxs
IHRlbXBsYXRlcyBhcmUgY29udGFpbmVycyBleGNlcHQgdGhlc2UgYmVsb3cuCi0gICAgaWYgY29u
dGFpbmVyX25hbWUgaW4gWydSZWZQdHInLCAnUmVmJ106CisgICAgaWYgY29udGFpbmVyX25hbWUg
aW4gWydSZWZQdHInLCAnUmVmJywgJ1JldGFpblB0cicsICdzdGQ6Om9wdGlvbmFsJ106CiAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgdGVtcGxhdGVzID0gbVsyXQogICAgIGFyaXR5ID0gTm9uZQpA
QCAtNjQwLDcgKzY0NiwxMyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgd2Via2l0X2lwY190eXBlID0gd2Via2l0X2lwY190eXBlc1tv
LnR5cGVdCiAgICAgICAgICAgICAgICAgYXNzZXJ0KGlzaW5zdGFuY2Uod2Via2l0X2lwY190eXBl
LCBjcHBfdHlwZV9jb250YWluZXIpKQogICAgICAgICAgICAgICAgIHYgPSBjcHBfYXJnKHdlYmtp
dF9pcGNfdHlwZSwgby5uYW1lICsgIlJlcGx5IikKLSAgICAgICAgICAgICAgICBzZWxmLnByZV9j
YWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAg
ICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX07Il0K
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBMaWtl
bHkgdGhpcyBjcmVhdGVzIGEgZGFuZ2xpbmcgcmVmZXJlbmNlIHNwYW48aW50LCAyPiBhUmVwbHkg
PSB7IHsgfSB9Oy4KKyAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODg5CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9IHt7IHt7IH19IH19OyJd
CisKICAgICAgICAgICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIodi50eXBlLCB2
Lm5hbWUpXQogICAgICAgICAgICAgICAgIGlmIG8udHlwZS5pc19keW5hbWljX3NwYW4oKToKICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5pbl9leHBycyArPSBbY3BwX2V4cHIoZ2V0X2NwcF90eXBl
KCJzaXplX3QiKSwgZiJ7by5uYW1lfS5idWZTaXplIildCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwCmluZGV4IGQxNDZjZWM0ZjJlYzRjZjY5MTJk
N2YwNDhkMjg4MTU3YWRmZGMxYjguLmM0NWM2N2EzMTY2YmZmYjk4NzdiYzBkODM0ZmVmODQ0YTQ4
NjY1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1w
bGVNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVN
YXAuY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZGVjb2RlVGlt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2RlVGltZTsgfQogICAgIE1lZGlhVGltZSBk
dXJhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBBdG9tU3Ry
aW5nIHRyYWNrSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KLSAgICB2b2lk
IHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiB0cmFja0lEKSBmaW5hbCB7IG1fdHJhY2tJRCA9IHRy
YWNrSUQ7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3NpemVJbkJ5dGVzOyB9CiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3ByZXNlbnRhdGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVz
dGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgZmluYWwgeyBtX3ByZXNlbnRhdGlvblRp
bWUgKz0gb2Zmc2V0OyBtX2RlY29kZVRpbWUgKz0gb2Zmc2V0OyB9CkBAIC03MSw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShtX3ByZXNlbnRhdGlvblRpbWUsIG1fZGVj
b2RlVGltZSwgbV9kdXJhdGlvbiwgc3RhdGljX2Nhc3Q8U2FtcGxlRmxhZ3M+KG1fZmxhZ3MgfCBJ
c05vbkRpc3BsYXlpbmcpKTsKICAgICB9CiAgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1w
bGUoKSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7bnVsbHB0cn19OyB9
CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB7IFBsYXRmb3JtU2FtcGxlOjpOb25lLCB7IG51bGxwdHIgfSB9OyB9CiAgICAgc3RkOjpvcHRp
b25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWwgeyB9Cg==
</data>
<flag name="commit-queue"
          id="478465"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451663</attachid>
            <date>2022-02-11 02:51:04 -0800</date>
            <delta_ts>2022-02-11 03:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220211125102.patch</filename>
            <type>text/plain</type>
            <size>128036</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiMmJhZDVkMTM0ZDY1
Mjk2ZjkxMjUxNWY2ZTQ1OTkzZmFjZTcxNS4uMzFlMjU4YWU4M2U5YzVlYWVmNDUzZTA2ZTlkMGQ1
NmZhNTg1Yjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWIg
Y2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGgg
YWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwNzc4OWY3N2Q1ZGYwYTAwMzU1NjE1
ZTEwMzE3YmUzZWQxOTA0N2UuLmJiZWMxZmI2NzM3MTRhMTFmZmJhZjUzN2IzYjRlMDE0Njc5ZTVm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkyIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAg
LSBGb3Igbm93LCBjcmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5j
aHJvbm91cyBtZXNzYWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgZG9lcyBub3QgbmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRv
IHRoYXQsCisgICAgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFk
cyBhbmQgdGh1cyB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgIGZvciB0aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0
IG9wZXJhdGlvbiBpcyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5u
b3QgYmUgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9s
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisg
ICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQg
dGhlIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJl
ZCBjb250ZW50IHNob3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICBBdCB0aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBjYW5ub3QgcGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1
bWVudCBDU1MgcGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisg
ICAgICAgIEdQVVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFw
cGluZworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4g
Q3VycmVudGx5IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEg
cmVtb3RlIE1lZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisK
KyAgICAgICAgVGhlIEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaXM6CisgICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB0aHJlYWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciB0aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAg
ICBBbGwgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0
byB0aGVpciBkZXN0aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCBy
ZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBt
ZXNzYWdlIHRvIGNyZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2
ZWQuCisKKyAgICAgICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVh
ZGVycy13cml0ZXJzIHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFz
c2VzOgorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAg
LSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZp
ZXMgdGhlIG9iamVjdC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlk
ZW50aWZpZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVu
dGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVm
ZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0g
bWVhbnM6CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2
ZXJzaW9uIDAuIENyZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGlu
aXRpYWwgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3Jp
dGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmll
ciAxLCB2ZXJzaW9uIDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUg
dmVyc2lvbiA9IDMzIgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRl
Y2xhcmVzIGEgcmVhZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29u
dGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1w
bGVzOgorICAgICAgICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVy
IDEsIHZlcnNpb24gMzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0
aW9ucyBhcmUgV3JpdGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5j
ZXMuCisKKyAgICAgICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0
ZXMgd3JpdGUgYW5kIHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3Mg
KFdlYkNvbnRlbnQgcHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmpl
Y3RIZWFwIHJlc29sdmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFs
IG9iamVjdCBwcm9jZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3
cml0ZXMgYXJlIGJsb2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5Ogor
ICAgICAgICAgLSBSZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9j
a3MgdW50aWwgdGhlIHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUg
b2YgbmV3IHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBo
YXZlIHJldGlyZWQsIG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAg
IG9mIHRoZSBjb250ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAg
ICAgIEluIHRoaXMgY29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBhcmUgaW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBk
YXRlIG9yCisgICAgICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICho
ZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
cldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJl
ZFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6cmVh
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyOjp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNo
PFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAgICAo
V1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+Ojpl
cXVhbCk6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6OlJl
ZmVyZW5jZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgorICAg
ICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6
OkhlbGRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBs
ZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg6CisKIDIwMjItMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gQnViYmxld3JhcExhdW5jaGVyIGxlYWtz
IEQtQnVzIHByb3h5IHNvY2tldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1
MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIuLjgwNTAwMTNlZDY1ZjQwYzg4ZjA0MzYxMjc4MDI1
ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL1VzZXJBZ2Vu
dC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCiAgICAgcGxh
dGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisgICAgcGxhdGZvcm0vVmlkZW9GcmFtZS5oCiAgICAg
cGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9WaWRlb1NhbXBsZU1l
dGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlmNGFiMzNhOGJkNzVlN2E1OGEuLjYxNDJkMjQzZGIy
ODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTI2LDYg
KzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAogcGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9XaWRnZXQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uMTY0ZTUy
YWU1NWYyNDNmMjU0NWQwOTMwNjQ5ODk4ZGM3NzU0NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwNyw2ICsyNDA3LDcg
QEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThGQzUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjVBM0RBRjI3QUJG
OEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYw
OTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTUyMCw2ICsxMTUyMSw4IEBACiAJCTdCMTYxOTEwMjcxOTg4
MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0
MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb0ZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3
IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MjBCMEEyNzQzREJB
NjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMTUxLDYgKzMwMTU0
LDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCiAJ
CQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJs
ZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAq
LywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAogCQkJ
CTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJ
CQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAgLyogVmlkZW9TYW1wbGVNZXRhZGF0YS5oICovLAog
CQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwICovLApAQCAtMzc4MjcsNiArMzc4MzIsNyBAQAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQz
N0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQgLyog
VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAx
QzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIy
NjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLmI0ZmU3MTY1NzlmZjhlN2ZjMzQwZDg3
Y2M4OTJmMWJiYjRiMGQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApA
QCAtNDksOSArNDksMTAgQEAgc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAgICAgICAgQ01TYW1w
bGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1wbGVUeXBlLAogICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCAvLyBG
SVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgog
ICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1w
bGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CiAgICAg
ICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVyOwogICAgICAgICBHc3RTYW1wbGUq
IGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZiwgQ01G
b3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxlOwpAQCAtNjYsNyArNjcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF0
b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2tJ
RChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBIYXNTeW5jSW5mbyA9
IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgPSAwOwogCiAg
ICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGU4MTZlY2Qw
OGNiOTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitWaWRlb0ZyYW1lOjp+VmlkZW9GcmFtZSgp
ID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK01lZGlh
VGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFj
a0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJDb3JlOjpGbG9hdFNp
emUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjpwYWlyPFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+IFZpZGVvRnJh
bWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKK30KKworUmVm
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKworTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdz
IFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNh
bXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFu
Z2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92
ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3Yjg0NzcxNDFlMDVm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyBhIHZpZGVvIGZyYW1lIGZyb20g
YSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxhci4KKy8vIEZJWE1FOiBDdXJyZW50
bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVydHMgZnJvbSBNZWRpYVNhbXBsZSB1
bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVycmluZyB0byBNZWRpYVNhbXBsZQorY2xh
c3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JU
IFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBp
bnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgorICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRy
PE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRl
eCBjMTI2YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45YmY0YjBiOGQ1YzQ4
MWE1MzRmZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzM0LDYgKzMz
NCw5IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJhY2sgb2YgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAoIWlzPE1lZGlhU2Ft
cGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVU
b0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7
CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1
ZWUyN2M3OGEyMGQ1OTU1Li41MTI2OTZhMTNhYzcyYWM4OGY4MDA4NjU2MmUzMTEwNDVjNDFhYzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODcsNiArOTg3LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVy
Lm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogRG9lcyBub3Qg
Y3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgorICAgIGlmICghaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQog
ICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2NjEyMWU3YzZmYjUxZGYy
Zjc3MWMxLi43YmU3MzUxZTViYWE3ZDIxZTYzZmM0OTlhMjcxMjM1ZWNmNGZiOWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNTQsMTMgKzU0LDEy
IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0K
LSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0g
aWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CkBAIC05NywzICs5Niw3IEBAIHByb3RlY3RlZDoKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1
ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2VkZWE1NWRmZTQyOTUz
YzJjOWJmMmYyNjllYTEzYzQ2YzNiLi5hM2EzMTU2YmZiYTBjYTc5OTFmNjZkZDNlZjI0YzMyNDRk
MGUzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0
ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVT
aXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6
OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0g
bV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlhNjIzOGU1MWRmOGYw
ZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2MzViZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVUeXBlLCB7IC5nc3RT
YW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2
NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5YTRmOTEwYjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVi
bGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxSZWZQ
dHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFU
aW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9
OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJp
ZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJ
bWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uNGFj
NjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHByaXZhdGU6CiAgICAg
TWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kZWNv
ZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0
IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQogICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4
Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkg
Y29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1vY2tN
ZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxl
IHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9
IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ZjRjNzgxODE4
MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLmRjNGQzMWNmNmY0ODVmODExMGZkOTlhMGE0
M2FhNzk0MTY0MjhlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKIAogICAg
IEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZjkyNzVmZjYxMzhjNDkxNDY5MGFjMGEwOWVkYzE2MGFjZTA5YWJmNS4uZWNhODAwZTI4MGVh
YTRhMDFkZTVkMGRjOGU1MjE1NzM4YTlhMjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTE5MSw2ICsxOTIsNyBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAppbmRleCA5MmQyMDYwOTkzNDE3N2FlYzk3ZTg4NmM2NmNlOGQ5MTM3ODI0
MDgzLi41YzNjNjU0NjRhNWJlMGY4ZjQ0NmQwZGY2N2E1ZGNiMzQ5ZTc5YjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM4MSw2ICsz
ODEsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1v
dGVUZXh0dXJlTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlk
ZW9GcmFtZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjllNGM4NDY2MzQ1YjMzOTgzZGU3NDgyODdiOTQxNTQ2
NDdmMjliZC4uMzAxMzAwMTZmODY5Y2FjYTFjMmNmMmNjY2VlN2I2NTU5ZmY3NTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBc
CiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciBcCiAJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIgXApAQCAtMzAwLDYgKzMwMSw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNl
Li4xMDM5MzllODMzMjYxNmQwZmVkNTc0ZTRjMmUyYWM5YWJiZTk2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNz
JiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1h
bmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0Fy
Yml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0
ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdl
cy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJh
bWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlm
Ci0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAu
cmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyBy
ZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVt
LgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDYgKzk0
NywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1
dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uOTk2ZjU0
ZjNjODQ5NTBmNWUwZTdmMDI0YzQ3NTRhMzNlYWY0OGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiAr
MTA2LDEwIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKwog
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dApAQCAtMTQxLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxv
d3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQog
ICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c1ZpZGVv
Q2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFs
c2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVz
ZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uZTlhMTA1MWUwMzA3
Mzk2NDI2NTVjZmQ3YTIxNTgxNDBjYTNiOWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xD
Vi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBX
VEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkp
KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIy
Myw2ICsyMzAsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBpeGVsQnVm
ZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50
aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM+IHJlc3VsdDsKKyAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9jb250ZXh0
LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKSB7CisgICAgICAgIGF1dG8g
d3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRlRm9yQWRkKCk7
CisgICAgICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJlbmNl
KCk7CisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhX
VEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnZpZGVvRnJhbWUpOworICAgICAgICBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUodmlkZW9GcmFt
ZSksIHN0ZDo6bnVsbG9wdCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmMyMzZk
OTJiZWU4Yzg1N2M5YjVjNDM2NmRkZTYzZjI5OWVmOWViMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY2LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nl
c3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0
R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNiw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4mJik+JiYpOworI2VuZGlmCiAgICAgdm9pZCBj
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQz
Ml90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQxLDkgQEAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQg
V1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNT
IFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThl
MzAyYjIuLjQwMzNjMzAwZDU1NTgyMjhkMjA1MjlmYzI2ZDhlMWFhNGNhZWJmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewog
ICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZv
aWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENv
cHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMKKyNlbmRp
ZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU3ZDI5MjNhZmUwZjk1
OTI4MDQ2MGFiZTlmMTNkZWRkZGRlZmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlv
blRvV2ViUHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
blRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVj
dGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwor
fQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKCkKK3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAg
IGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8v
IENsaWVudHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhl
eSBzaG91bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAg
ICAgLy8gYXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUg
Y2xpZW50cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkg
ZmFpbCB0byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZShSZW1v
dGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJl
bnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICByZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0ZSkpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDM3ZmRk
NGVhN2U2ODc5ZWI0MzVhMDJlOGY0MmE2NjBkZDRkMGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFz
c2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOworCisvLyBIb2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1lIGluc3Rh
bmNlcyB0aGF0IGFyZSBtYXBwZWQgZnJvbSBXZWIgcHJvY2VzcyB0byBHUFUgcHJvY2VzcyB0d28g
cHJvY2Vzc2VzLgorLy8gQXMgY3VycmVudGx5IHRoZXJlIGlzIG5vIHNwZWNpYWwgc3RhdGUgZm9y
IFJlbW90ZVZpZGVvRnJhbWUsIHRoZSBvYmplY3QgaGVhcCBzdG9yZXMgVmlkZW9GcmFtZSBpbnN0
YW5jZXMgKE1lZGlhU2FtcGxlKS4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBSZW1vdGVW
aWRlb0ZyYW1lLCByZXNwb25zaWJsZSBmb3IgZGlzcGF0Y2hpbmcgdGhlIFZpZGVvRnJhbWUgbWV0
aG9kcyB0byB0aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhh
dCB1c2VzIHRoZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIg
dGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVvRnJhbWUg
aW5zdGFuY2VzIGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4sIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CisKKyAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25u
ZWN0aW9uKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3Zl
cnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VW
aWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29uc3QgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQg
Tk9fVU5JUVVFX0FERFJFU1M7Cit9OworCisKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3OGNlM2QwMzlkYmUxNzMxZDVh
ZjZjOGU0OTkxMGEzOTUyYTcxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorbWVzc2FnZXMgLT4g
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRlZCB7CisgICAgUmVsZWFzZVZp
ZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmll
cikKK30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA3MjRhOGM5NmI3ZTdlNWUwZGJhYmEwODIzMWJiOGI3
OGY5YmJmMGMwLi5iZjQ2MWNkZmY4YWRkNjE0ZGZiMGViZjE0OTM5M2U0ZWE1YzNhYmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KQEAgLTM1LDE4
ICszNywyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQg
eyAzMF9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRv
IGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4o
bmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVDb25uZWN0aW9uLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
K1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3ZpZGVvRnJhbWVP
YmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAg
IEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTMsNyArMTE5LDIz
IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
b3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBzYW1wbGUpCit7CisgICAgYXV0
byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNh
bXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlKSB7CisgICAgICAg
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKKyAgICAgICAgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgYXZm
TWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7
CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRp
YVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUo
YXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2Ft
cGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3Rl
U2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXgg
NzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkwZmU5ZWI2NjRi
YTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9u
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNs
aWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgot
ICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYm
KTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1h
Z2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1
ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1
ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGVucXVl
dWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3Jl
KElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAg
ICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAor
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0
aW5nQ29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklR
VUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2
ZjdlY2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyAr
MzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVm
Q291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2Vi
Q29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQog
ICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygp
CiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMz
NGI1ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0
Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXpl
IHNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmll
ciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAg
ICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUobV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigp
KTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVy
UmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVu
dGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewog
ICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZp
ZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgp
IG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
NzU4ZDUwNTU2ZmYyZjZlNDczNzdkMTRlODI2NmJjNWUzZWFjNDFhNi4uMjI0YmZmZjZmOGU2YmJm
MDA3YTI2NTUwYzMxNDhkZDMzNTNlYTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0zNDcsNiArMzQ3LDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAgICAgJ1dlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAgICAgICAnV2ViS2l0OjpSZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyJywKQEAgLTg4Myw2ICs4ODYsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsn
IlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2Vi
S2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAn
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsn
Ikdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsn
Ikdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyci
SWRlbnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBi
YWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBk
YTU5NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0
IFNlbmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwog
ICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRv
bWljPHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpA
QCAtMTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rl
c3RRdWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRl
c3Rpbmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlv
biA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZl
ck5hbWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5n
SVBDVGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxk
U3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwog
ICAgIH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZO
ZWVkZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBv
bmdvaW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5o
CmluZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2
ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19U
RVNUSU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0
b21pYz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5l
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3Rl
ZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0
ZXN0aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rp
b24gdG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQg
SVBDIHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5k
ZXJuZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7
CkBAIC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hv
dWxkU3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wg
aXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjY4Y2U1Y2ZmMWJlMzRmNDhjOTJhYzQxMDhiMmFhMWUw
MmRjN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21p
Yz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBU
eXBlIGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVu
Y2VzIHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlm
aWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGlj
aXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQor
ICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0g
bV9pZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVu
Y29kZXIgPDwgbV92ZXJzaW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRp
ZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyCisgICAgICAgICAgICA+PiB2ZXJzaW9uOworICAgICAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgKnZlcnNpb24gfTsKKyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVy
OworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAg
IHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgT2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAg
OiBtX3JlZmVyZW5jZShyZWZlcmVuY2UpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5pZGVudGlmaWVyKCk7IH0KKyAgICB1aW50NjRf
dCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UudmVyc2lvbigpOyB9CisgICAg
UmVmZXJlbmNlIHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVyZW5jZTsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0
SWRlbnRpZmllclJlYWRSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgZGVj
b2RlciA+PiByZWZlcmVuY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2UgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpIH07CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZmVyZW5jZSBtX3JlZmVyZW5jZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAg
IHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgc3Rh
dGljIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiBnZW5lcmF0ZUZvckFkZCgpIHsg
cmV0dXJuIHsgeyBUOjpnZW5lcmF0ZVRocmVhZFNhZmUoKSwgMCB9LCAwIH07IH0KKworICAgIE9i
amVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZShSZWZlcmVuY2UgcmVmZXJlbmNlLCB1aW50NjRf
dCBwZW5kaW5nUmVhZHMpCisgICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgICAg
ICAsIG1fcGVuZGluZ1JlYWRzKHBlbmRpbmdSZWFkcykKKyAgICB7CisgICAgfQorICAgIFQgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLmlkZW50aWZpZXIoKTsgfQorICAg
IHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS52ZXJzaW9uKCk7
IH0KKyAgICB1aW50NjRfdCBwZW5kaW5nUmVhZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdS
ZWFkczsgfQorICAgIFJlZmVyZW5jZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
ZW5jZTsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlZFJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIHsgaWRlbnRpZmllcigpLCB2ZXJzaW9uKCkgKyAxIH07IH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1fcmVmZXJlbmNlOworICAgICAg
ICBlbmNvZGVyIDw8IG1fcGVuZGluZ1JlYWRzOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGVuZGluZ1JlYWRzOworCisgICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlCisgICAgICAg
ICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRl
bnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgKnBlbmRpbmdSZWFk
cyB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7CisgICAg
dWludDY0X3QgbV9wZW5kaW5nUmVhZHMgeyAwIH07Cit9OworCisvLyBDbGFzcyB0byBnZW5lcmF0
ZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIGFuIE9iamVjdElkZW50aWZlci4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIpOworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50
aWZpZXJXcml0ZVJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlPFQ+OworCisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZVRyYWNrZXIoVCBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIocmVm
ZXJlbmNlLmlkZW50aWZpZXIoKSkKKyAgICAgICAgLCBtX3ZlcnNpb24ocmVmZXJlbmNlLnZlcnNp
b24oKSkKKyAgICB7CisgICAgfQorICAgIC8vIFRocmVhZCBzYWZlLgorICAgIFJlYWRSZWZlcmVu
Y2UgcmVhZCgpIGNvbnN0CisgICAgeworICAgICAgICBtX3BlbmRpbmdSZWFkcysrOworICAgICAg
ICByZXR1cm4gUmVmZXJlbmNlIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9Cisg
ICAgLy8gTm90IHRocmVhZCBzYWZlLiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQg
cmVhZHMgYW55d2F5LgorICAgIFdyaXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7IHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24rKyB9LCBtX3BlbmRpbmdS
ZWFkcy5leGNoYW5nZSgwKSB9OworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRlOgorICAgIGNv
bnN0IFQgbV9pZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjphdG9taWM8dWludDY0X3Q+IG1f
cGVuZGluZ1JlYWRzIHsgMCB9OworICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFz
aGVyLCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sKKyAgICBhZGQo
aGFzaGVyLCByZWZlcmVuY2UuaWRlbnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVu
Y2UudmVyc2lvbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52
ZXJzaW9uKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8
PCAiT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmll
cigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRz
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8
VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJz
aW9uKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIikiOworICAgIHJl
dHVybiB0czsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2U8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhh
c2hUcmFpdHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+
PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0
ZUhhc2gocmVmZXJlbmNlKTsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJLaXQ6Ok9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBi
OworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhy
ZWFkU2FmZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmpl
Y3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEwOWU1YmE4YTQ4MWIzNjUwMTY3NGYyZTBlYzc5MmQzODVh
NWE4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVP
YmplY3RIZWFwLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIENvbnRhaW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIgLT4gb2JqZWN0
IG1hcHBpbmcgYmV0d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2VuYXJpb3Mgd2hl
cmUgdGhlIGhvbGRlciBwcm9jZXNzIHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRoZSBvYmplY3Qg
cmVmZXJlbmNlcyBpbiBtdWx0aXBsZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVPYmplY3RIZWFw
YCB0cmFja3MgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNvbnRlbnQgcG9p
bnRlZAorLy8gYnkgYSBwYXJ0aWN1bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5nIHJlYWRzIG1h
eSBibG9jayBuZXcgd3JpdGVzLiBBbHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2FuIHNraXAgYWhl
YWQgb2YgdGhlIHJlYWRzLAorLy8gZm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0ZSBzY2VuYXJp
b3MuCisvLyBQZW5kaW5nIHdyaXRlcyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRseSBpbXBsZW1l
bnRlZCBvbmx5IGZvciByZWFkLW9ubHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9yIGNvcHktb24t
d3JpdGUgdHlwZXMsCisvLyBlLmcuIG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRpb25zIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0LgordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5h
bWUgSGVsZFR5cGU+CitjbGFzcyBUaHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT4+
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVuY2U7CisgICAg
dXNpbmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcgUmVmZXJlbmNl
ID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46
OlJlZmVyZW5jZTsKKworICAgIC8vIFdhaXRzIHVudGlsIGEgd3JpdGUgY3JlYXRlcyB0aGUgcmVm
ZXJlbmNlIGFuZCB0aGVuIHJldGlyZXMgdGhlIHJlYWQgb3IKKyAgICAvLyB0aW1lcyBvdXQuCisg
ICAgSGVsZFR5cGUgcmV0aXJlKFJlYWRSZWZlcmVuY2UmJiwgSVBDOjpUaW1lb3V0KTsKKworICAg
IC8vIEluc2VydHMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IG9yIHJlbW92ZXMgYW4gb2xk
IG9uZSBhbmQgdGhlbiByZXRpcmVzIHRoZSB3cml0ZSBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAg
ICAvLyBJZiB0aW1lb3V0IGlzIHBhc3NlZCwgd2FpdHMgdW50aWwgcGVuZGluZyByZWFkcyBhcmUg
ZG9uZS4KKyAgICAvLyBJdCBpcyBhIGNhbGxlciBlcnJvciB0byBub3Qgd2FpdCBhbmQgbXV0YXRl
IHRoZSBvbGQgb2JqZWN0LgorICAgIHZvaWQgcmV0aXJlKFdyaXRlUmVmZXJlbmNlJiYsIHN0ZDo6
b3B0aW9uYWw8SGVsZFR5cGU+JiYgbmV3T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6VGltZW91
dD4pOworCisgICAgdm9pZCByZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICB2
b2lkIGNsZWFyKCk7Citwcml2YXRlOgorICAgIExvY2sgbV9vYmplY3RzTG9jazsKKyAgICBDb25k
aXRpb24gbV9vYmplY3RzQ29uZGl0aW9uOworICAgIHN0cnVjdCBSZWZlcmVuY2VTdGF0ZSB7Cisg
ICAgICAgIHVpbnQ2NF90IHJldGlyZWRSZWFkcyB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZmluYWxSZWFkOyAvLyBSZW1vdmUgYWZ0ZXIgYGZpbmFsUmVhZGAgcmVhZHMu
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+IG9iamVjdDsgLy8gT2JqZWN0IG9yIHRv
bWJzdG9uZS4KKworICAgICAgICBSZWZlcmVuY2VTdGF0ZSgpID0gZGVmYXVsdDsKKyAgICAgICAg
ZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUoSGVsZFR5cGUmJiBvYmplY3QpCisgICAgICAgICAgICA6
IG9iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAv
LyBUb21ic3RvbmUgY29uc3RydWN0b3IuCisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRl
KHVpbnQ2NF90IGZpbmFsUmVhZCkKKyAgICAgICAgICAgIDogZmluYWxSZWFkKGZpbmFsUmVhZCkK
KyAgICAgICAgeworICAgICAgICB9CisgICAgfTsKKyAgICBIYXNoTWFwPFJlZmVyZW5jZSwgUmVm
ZXJlbmNlU3RhdGU+IG1fb2JqZWN0cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb2JqZWN0c0xvY2sp
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+
CitIZWxkVHlwZSBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJl
dGlyZShSZWFkUmVmZXJlbmNlJiYgcmVhZCwgSVBDOjpUaW1lb3V0IHRpbWVvdXQpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8g
aXQgPSBtX29iamVjdHMuZmluZChyZWFkLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9
IG1fb2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7
CisgICAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgSGVsZFR5
cGUgcmVzdWx0ID0gKnN0YXRlLm9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGF0ZS5yZXRpcmVk
UmVhZHMrKzsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkKSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdGF0ZS5maW5hbFJlYWQgPj0gc3RhdGUucmV0aXJlZFJlYWRz
KTsgLy8gVHJ1c3RlZCBhc3NlcnQgYmVjYXVzZSB0aGlzIGlzIGVuc3VyZWQgb24gYGZpbmFsUmVh
ZGAgYXNzaWdubWVudC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCA9
PSBzdGF0ZS5yZXRpcmVkUmVhZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMu
cmVtb3ZlKGl0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9vYmplY3Rz
Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24u
d2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQuZGVhZGxpbmUoKSkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9IHdoaWxlICh0cnVlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRo
cmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFdyaXRlUmVm
ZXJlbmNlJiYgd3JpdGUsIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+JiYgb2JqZWN0LCBzdGQ6Om9w
dGlvbmFsPElQQzo6VGltZW91dD4gdGltZW91dCkKK3sKKyAgICBjb25zdCBib29sIHdhaXRGb3JQ
ZW5kaW5nUmVhZHMgPSB0aW1lb3V0Lmhhc192YWx1ZSgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X29iamVjdHNMb2NrIH07CisgICAgZG8geworICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZp
bmQod3JpdGUucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgp
KSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlm
IChzdGF0ZS5maW5hbFJlYWQgJiYgc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgLy8g
V3JpdGUgcmVwbGF5OiBgZmluYWxSZWFkYCBpcyBhc3NpZ25lZCBvbiB3cml0ZS4gQ2Fubm90IGhh
dmUgdGhlIHNhbWUgdmVyc2lvbiB3aXRoIHdyaXRlcy4KKyAgICAgICAgICAgICAgICBBU1NFUlRf
SVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID4gd3JpdGUucGVuZGluZ1JlYWRz
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSB1bmRlcmZsb3c6IG1vcmUgcmVhZHMgaGF2
ZSBiZWVuIGRvbmUgdGhhbiB0aGUgc2VuZGVyIGNsYWltcyBpcyB0aGUgbWF4aW11bS4KKyAgICAg
ICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJdCBpcyBsaWtlbHkgYSBjYWxsZXIg
ZXJyb3IgdG8gdHJ5IHRvIGFkZCBhIG5ldyByZWZlcmVuY2Ugd2l0aCB0aGUgc2FtZSBjbGllbnQg
b2JqZWN0IHdpdGhvdXQKKyAgICAgICAgICAgIC8vIHdhaXRpbmcgZm9yIHBlbmRpbmcgcmVhZHMg
b24gdGhlIG9sZCByZWZlcmVuY2UuCisgICAgICAgICAgICBBU1NFUlQod2FpdEZvclBlbmRpbmdS
ZWFkcyB8fCAhc3RhdGUub2JqZWN0IHx8ICpzdGF0ZS5vYmplY3QgIT0gb2JqZWN0KTsKKworICAg
ICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVhZHMoKSB8
fCAhd2FpdEZvclBlbmRpbmdSZWFkcykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRp
cmVkUmVhZHMgPCB3cml0ZS5wZW5kaW5nUmVhZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuZmluYWxSZWFkID0gd3JpdGUucGVuZGluZ1JlYWRzKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAg
ICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgICAgICBpZiAo
b2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmVkUmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsg
V1RGTW92ZSgqb2JqZWN0KSB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQu
aXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgbmV3U3RhdGUgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW50
cnkgd2FzIGEgdG9tYnN0b25lLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRl
LmZpbmFsUmVhZCAmJiAhKm5ld1N0YXRlLmZpbmFsUmVhZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5ld1N0YXRlLm9iamVjdCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlLm9iamVjdCA9IFdURk1vdmUoKm9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLm9iamVjdCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTogdGhlIHJldGlyZWQgd3Jp
dGUgYWxyZWFkeSBleGlzdHMsIHRoZSBlbnRyeSB3YXMgbm90IGEgdG9tYnN0b25lLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghd2FpdEZvclBlbmRpbmdSZWFk
cyB8fCAhd3JpdGUucGVuZGluZ1JlYWRzKCkpIHsKKyAgICAgICAgICAgIC8vIFdyaXRlIHRoZSB0
b21ic3RvbmUuCisgICAgICAgICAgICBtX29iamVjdHMuYWRkKHdyaXRlLnJlZmVyZW5jZSgpLCBS
ZWZlcmVuY2VTdGF0ZSB7IHdyaXRlLnBlbmRpbmdSZWFkcygpIH0pOworICAgICAgICAgICAgaWYg
KG9iamVjdCkKKyAgICAgICAgICAgICAgICBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJl
dGlyZWRSZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOwor
ICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYg
KCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRl
YWRsaW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBU
aHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShX
cml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sKKyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50
aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVu
dGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmpl
Y3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5jbGVhcigpOworfQorCit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2Ji
Yjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4ZjczMTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3
YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QK
ICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3Jt
U2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNh
bXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAg
IHJldHVybiB7CiAgICAgICAgIFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZl
OWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMzNmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRh
Y2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJhbmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNr
SUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmNWM1YmRjOWVmODg0Mzc4
ODM5OWZhYWNlZTVlMjk0ZThhZDlhNmEzLi41MDhkYTdhNTdlYjAyNjIzYTcwZDBkMWExOGZiN2U3
ZGZkOTJiZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVy
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTc0NSw2ICs3NDYsNyBAQCBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJh
Y2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODgzLDYgKzg4NSw3IEBAIFJlbW90ZURldmljZU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
ZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzY4MTg1
ZGY5OWFhNzU3OGU1MGI3MjIzZjEwNWQ2OTdlNTc3MzQ0Li4zYTg1NGRkMGUwOTNlYzAzYjhhYTFl
NzM4M2IwY2FiY2IwYWQ1YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTEsNiArNTExMSwxMyBAQAogCQk3QjQ4M0YxRTI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMDI3
QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5
NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE4
MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEwMDZD
NkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNiw2ICs1
MTQzLDcgQEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEz
M0YyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUgLyog
QXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmpl
Y3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTgg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjgwMCw2ICs2ODA4LDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYyRkQ4
IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVENDY0
QkYwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4gKi8s
CiAJCQkJQ0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZG
OTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdEQzFB
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEyN0E3
REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJ
CQkxREQyQTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAgKi8sCiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4OTAsNiArNjkwMiw4IEBACiAJ
CQkJMUREMkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1l
c3NhZ2VzLmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90
ZVRleHRUcmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JDMDA2
QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4NDIz
Q0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFC
QzU4NTIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJCQkJ
MDdFMTlGMDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmggKi8sCkBAIC03MjY3LDYgKzcyODEsNyBAQAogCQkJCTFBRENCODY4MTg5ODMxQjMw
MDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4
MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUy
M0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCisJ
CQkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyLmggKi8sCiAJCQkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5
VXRpbHMuY3BwICovLAogCQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmggKi8sCiAJCQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9w
dXBNZW51RGF0YS5jcHAgKi8sCkBAIC03MzA3LDYgKzczMjIsNyBAQAogCQkJCTgzRjk2NDRDMUZB
MEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAogCQkJ
CTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJ
RjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5o
ICovLAorCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVh
cC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRh
LmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0
YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJdGVt
RGF0YS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGUyOWY0YmQ1NjEzMmVjZDY3MTcxYmMzN2NiMmNj
NTYxYmUxMjkzNTkuLjVjNWRlMTgyMTI2N2JkODU2ZGVlNTc3MTY1ZjQ1NGNiZDQyNDI3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC03Niw2ICs3NiwxMSBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lUHJveHlNZXNzYWdlcy5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgpAQCAtMjA4LDYgKzIxMywxMCBAQCBib29sIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlYwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKQogICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGFu
ZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTVMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkKKyAgICAgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aGFu
ZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOworI2Vu
ZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvU2Vzc2lvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApp
bmRleCA3YWUxZWU3NmRjNGIwN2M0MDNmNjBiOGFkMTNkYWQ5Yjg3YmRlZDBhLi4xMmQzMmUzNTg1
ZjJmYTgxNzRkMmMzMWVjNzQwMWNiNTdjZmRhNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTE4
LDYgKzEyMiwyMyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYgYgogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkKK3sKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcmVz
dWx0OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZTo6UmVwbHkocmVzdWx0KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCksIFdURk1vdmUoKnJlc3VsdCkpOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlh
UGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmlu
ZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEuLjVkMWNhYjIxOGY3
ODVjYmExMTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAg
ICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NH
TGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdl
YkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJhYjcyMjgw
OGMuLjBiOGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBA
IC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZP
YmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NW
KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5k
KQogICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzExMCw2IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7
CiB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlh
U2FtcGxlLgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNv
cmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBpZiAoIXBp
eGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViQ29yZTo6
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
ciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93
biwgdHJ1ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjUwMjYxNWRhMjcyYjNi
ZjQ2Y2Y0NjQ5NjFiN2Y4ZWIyYTFmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVy
ZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVW
aWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MjUwNzZmMmE3
NjJlMjgxYjkyNDM5NDBkYzRmMjAyOGU3YzNhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAg
LTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiBy
ZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBXVEZNb3ZlKHJlZmVyZW5jZSksCisgICAgICAgIG1lZGlhU2Ft
cGxlLnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3Jl
ZCgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAgIGV4cGFu
ZGVkSW50U2l6ZShtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25TaXplKCkpCisgICAgfTsKK30KKwor
UmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVh
dGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5KGNvbm5lY3Rpb24sIFdURk1vdmUocHJvcGVydGllcykpKTsKK30KKwor
dm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQcm9wZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZWxlYXNlKGNv
bm5lY3Rpb24sIHsgeyBwcm9wZXJ0aWVzLnJlZmVyZW5jZS5pZGVudGlmaWVyKCksIHByb3BlcnRp
ZXMucmVmZXJlbmNlLnZlcnNpb24oKSB9LCAwIH0pOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBy
b3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3By
ZXNlbnRhdGlvblRpbWUocHJvcGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01p
cnJvcmVkKHByb3BlcnRpZXMuaXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGll
cy5yb3RhdGlvbikKKyAgICAsIG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCit7Cit9CisKK1JlbW90
ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgcmVsZWFz
ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIHdyaXRlKCkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRl
b0ZyYW1lV3JpdGVSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRp
bWUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4geyBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlw
ZSwgeyB9IH07Cit9CisKK01lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm90YXRpb247
Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pc01pcnJvcmVkOworfQorCit1aW50MzJfdCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1v
dmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJh
bWU+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVh
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UmJiByZWxlYXNlV3JpdGUpCit7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUoV1RGTW92ZShyZWxl
YXNlV3JpdGUpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTM1MWRlNDUyOTgyYWViZjE2ZDM4ZTBiZTg1MjMyZTcwNjAyNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworLy8gQSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lIGNsYXNzIHRoYXQgcG9pbnRzIHRvIGEgY29uY3JldGUgV2ViQ29y
ZTo6VmlkZW9GcmFtZSBpbnN0YW5jZQorLy8gaW4gYW5vdGhlciBwcm9jZXNzLCBHUFUgcHJvY2Vz
cy4KK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpW
aWRlb0ZyYW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIHN0cnVjdCBQ
cm9wZXJ0aWVzIHsKKyAgICAgICAgLy8gVGhlIHJlY2VpdmVyIG93bnMgdGhlIHJlZmVyZW5jZSwg
c28gaXQgbXVzdCBiZSByZWxlYXNlZCB2aWEgZWl0aGVyIGFkb3B0aW9uIHRvCisgICAgICAgIC8v
IGBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgpYCBvciB2aWEgYFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6cmVsZWFzZVVudXNlZCgpYC4KKyAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlIHJlZmVyZW5jZTsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWU7CisgICAgICAgIGJvb2wgaXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90
YXRpb24gcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNvcmU6
OkludFNpemUgc2l6ZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgfTsKKworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CisKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVj
dGlvbiYsIFByb3BlcnRpZXMmJik7CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGVuZC1wb2ludHMg
dGhhdCBjYXB0dXJlIGNyZWF0aW9uIG1lc3NhZ2VzIHRoYXQgYXJlIHNlbnQgZnJvbSBHUFVQIGJ1
dAorICAgIC8vIHdob3NlIGRlc3RpbmF0aW9ucyB3ZXJlIHJlbGVhc2VkIGluIFdQIGJlZm9yZSBt
ZXNzYWdlIHdhcyBwcm9jZXNzZWQuCisgICAgc3RhdGljIHZvaWQgcmVsZWFzZVVudXNlZChJUEM6
OkNvbm5lY3Rpb24mLCBQcm9wZXJ0aWVzJiYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94
eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0
OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAg
IFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworCisgICAgLy8gV2ViQ29yZTo6VmlkZW9G
cmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBm
aW5hbDsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOwor
ICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3
aWxsIG5vdCBiZSBuZWVkZWQuCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1T
YW1wbGUoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29u
c3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29u
bmVjdGlvbiYsIFByb3BlcnRpZXMmJik7CisgICAgc3RhdGljIHZvaWQgcmVsZWFzZShJUEM6OkNv
bm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICBzdGF0
aWMgaW5saW5lIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIGNvbnN0
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBSZW1vdGVWaWRlb0ZyYW1l
UmVmZXJlbmNlVHJhY2tlciBtX3JlZmVyZW5jZVRyYWNrZXI7CisgICAgY29uc3QgTWVkaWFUaW1l
IG1fcHJlc2VudGF0aW9uVGltZTsKKyAgICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKKyAgICBj
b25zdCBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb247CisgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSBtX3NpemU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IGlzTWlycm9y
ZWQKKyAgICAgICAgPDwgcm90YXRpb24KKyAgICAgICAgPDwgc2l6ZTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXM+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJl
bmNlPiByZWZlcmVuY2U7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlv
blRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc01pcnJvcmVkOworICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisg
ICAgICAgID4+IGlzTWlycm9yZWQKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+
PiBzaXplOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBX
VEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAq
c2l6ZSB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1l
ZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZl
NjA4MjM5NDYyYWE0MDQ4Y2I3ZDNmYTAzNDJlOThiNTc1Li43Nzk5YTMwNjFjZDVlMDVlMmJmNDJm
NTdkMWM2YmM0ZGQ4NDg1OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAt
NDksMTIgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXImIG1hbmFnZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Q2xpZW50JiBjbGllbnQpCiAgICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Y2xpZW50KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5h
Z2VyKQotICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1h
bmFnZXIuYWRkTGF5ZXIoKnRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcg
QEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5n
JiYgbG9nSWRlbnRpZmllcikKIAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVj
dEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VM
YXllciB7IG1faWRlbnRpZmllciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBt
X21hbmFnZXItPnJlbW92ZUxheWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTEgQEAgdm9pZCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBs
ZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OkVucXVldWVTYW1wbGUgeyByZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tG
b3JJT1N1cmZhY2U6Ok5vKTsKICAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBA
IC0xNDgsNyArMTU1LDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6RW5xdWV1ZVNhbXBsZSB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6RW5xdWV1ZVNhbXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBs
ZXMoKQpAQCAtMTcxLDExICsxNzgsMTggQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OnNldERpZEZhaWwoYm9vbCB2YWx1ZSkKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKICAg
ICBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIuZGlzYWJsZSgpOworICAgIGRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJT
dGF0dXNEaWRGYWlsKCk7CiB9CiAKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNj
b25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdw
dVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LCBudWxscHRyKSkKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgq
dGhpcyk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4
IDU2MzY5YWRkZjBhYmYzNDZiMGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5
NDQzMjExMTNlNjlkMjZiMTJiMjU1YmZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
CkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyCiAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwg
V2ViQ29yZTo6SW50U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CkBAIC03Niw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwog
ICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBH
UFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRy
PFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjdhNjdhYTgzMTM0MjU1YTJiMGFmNjNiYjQzY2YyMGFiN2Y2
MWQ4MS4uYWM3ZDE2ZDJmMDliYWUzNTg5Y2EwMmYxYzU0Y2EwNDZhMzAzOWVmOSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2Fw
dHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBH
UFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYw
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTEwICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4
OTUyNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0
ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi41ZDc0MTUyMWFkYjU5OGE4MmZhODFlMTg5NTE3MzllZDBi
MjU5NzhkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysr
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFi
bGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19M
QVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2Vu
ZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBA
IC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90
UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4g
KCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5
bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBs
YXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRp
ZXMpIFN5bmNocm9ub3VzCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5n
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZl
bnQpCiB7fQogfX0KQEAgLTIzMiw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRh
aW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAg
ICAgICAgIHJldHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwg
dGVtcGxhdGVzIGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250
YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBp
biBbJ1JlZlB0cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAg
ICAgcmV0dXJuIE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBA
IC02NDAsNyArNjQ2LDEzIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0
KToKICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28u
dHlwZV0KICAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUs
IGNwcF90eXBlX2NvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0
X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAg
ICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2Vs
eSB0aGlzIGNyZWF0ZXMgYSBkYW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9
IHsgeyB9IH07LgorICAgICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0K
KwogICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYu
bmFtZSldCiAgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAg
ICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUo
InNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3
ZjA0OGQyODgxNTdhZGZkYzFiOC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2
NjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBs
ZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1
cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJp
bmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQg
c2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJh
Y2tJRDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2l6ZUluQnl0ZXM7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0
YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGlt
ZSArPSBvZmZzZXQ7IG1fZGVjb2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNv
ZGVUaW1lLCBtX2R1cmF0aW9uLCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElz
Tm9uRGlzcGxheWluZykpOwogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0K
KyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlv
bmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmZWYz
MjJjMzY4ZjAxZmVmN2Y1ZmViZmZjMDkyZGM2ZTgxNTUyYWNmLi42N2UwOTkyMGE1YzM0ZDhhZmM3
ODc1ZTg0ZGUxNTY3M2UzMGFiMjFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjIwLDQgKzIyMjAsNiBAQCB3ZWJraXQub3JnL2IvMjM0
NTM2IHdlYnhyL2hpZ2gtcGVyZm9ybWFuY2UuaHRtbAogd2Via2l0Lm9yZy9iLzIzNDUzNiBmYXN0
L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS10by1jYW52YXMtMS5odG1sIFsgQ3Jhc2ggXQogd2Vi
a2l0Lm9yZy9iLzIzNDUzNiBmYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS10by1jYW52YXMt
Mi5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzIzNDUzNiB3ZWJnbC9tYXgtYWN0aXZlLWNv
bnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBUaW1lb3V0IF0K
LXdlYmtpdC5vcmcvYi8yMzQ1MzYgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQord2Via2l0Lm9yZy9iLzIzNDUzNiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1v
YmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KKword2Via2l0Lm9yZy9iLzIzNjQ5NiBm
YXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbCBbIFNraXAgXQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAyNzg2ZGFjNzE1Y2ExYmJlYTA0YTk0NGVkMDU5MTZkZTky
MGZmN2EyLi5kNWJiMGUzODEyZjkwODhhZmQwMWUwOTkxOTlhMDM3YjBjZWFhNzVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjc3LDMg
KzE2NzcsNSBAQCBodHRwL3dwdC9odG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90
aGUtYS1lbGVtZW50L2EtZG93bmxvYWQtY2xpY2stNDA0LgogCiAjIHJkYXI6Ly84NjAzNzQxNyBX
aW5kb3dTZXJ2ZXIgcmV0dXJuZWQgbm90IGFsaXZlIHdpdGggY29udGV4dDosdW5yZXNwb25zaXZl
IHdvcmsgcHJvY2Vzc29yKHMpCiBbIE1vbnRlcmV5KyBdIGh0dHAvdGVzdHMvbW9kZWwvbW9kZWwt
ZG9jdW1lbnQuaHRtbCBbIFNraXAgXQorCit3ZWJraXQub3JnL2IvMjM2NDk2IGZhc3QvbWVkaWFz
dHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgU2tpcCBdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="478467"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451667</attachid>
            <date>2022-02-11 03:00:41 -0800</date>
            <delta_ts>2022-02-11 03:41:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220211130039.patch</filename>
            <type>text/plain</type>
            <size>129000</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiMmJhZDVkMTM0ZDY1
Mjk2ZjkxMjUxNWY2ZTQ1OTkzZmFjZTcxNS4uMzFlMjU4YWU4M2U5YzVlYWVmNDUzZTA2ZTlkMGQ1
NmZhNTg1Yjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWIg
Y2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGgg
YWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwNzc4OWY3N2Q1ZGYwYTAwMzU1NjE1
ZTEwMzE3YmUzZWQxOTA0N2UuLmJiZWMxZmI2NzM3MTRhMTFmZmJhZjUzN2IzYjRlMDE0Njc5ZTVm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkyIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAg
LSBGb3Igbm93LCBjcmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5j
aHJvbm91cyBtZXNzYWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgZG9lcyBub3QgbmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRv
IHRoYXQsCisgICAgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFk
cyBhbmQgdGh1cyB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgIGZvciB0aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0
IG9wZXJhdGlvbiBpcyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5u
b3QgYmUgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9s
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisg
ICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQg
dGhlIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJl
ZCBjb250ZW50IHNob3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICBBdCB0aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBjYW5ub3QgcGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1
bWVudCBDU1MgcGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisg
ICAgICAgIEdQVVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFw
cGluZworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4g
Q3VycmVudGx5IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEg
cmVtb3RlIE1lZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisK
KyAgICAgICAgVGhlIEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaXM6CisgICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB0aHJlYWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciB0aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAg
ICBBbGwgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0
byB0aGVpciBkZXN0aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCBy
ZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBt
ZXNzYWdlIHRvIGNyZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2
ZWQuCisKKyAgICAgICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVh
ZGVycy13cml0ZXJzIHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFz
c2VzOgorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAg
LSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZp
ZXMgdGhlIG9iamVjdC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlk
ZW50aWZpZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVu
dGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVm
ZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0g
bWVhbnM6CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2
ZXJzaW9uIDAuIENyZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGlu
aXRpYWwgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3Jp
dGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmll
ciAxLCB2ZXJzaW9uIDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUg
dmVyc2lvbiA9IDMzIgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRl
Y2xhcmVzIGEgcmVhZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29u
dGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1w
bGVzOgorICAgICAgICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVy
IDEsIHZlcnNpb24gMzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0
aW9ucyBhcmUgV3JpdGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5j
ZXMuCisKKyAgICAgICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0
ZXMgd3JpdGUgYW5kIHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3Mg
KFdlYkNvbnRlbnQgcHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmpl
Y3RIZWFwIHJlc29sdmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFs
IG9iamVjdCBwcm9jZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3
cml0ZXMgYXJlIGJsb2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5Ogor
ICAgICAgICAgLSBSZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9j
a3MgdW50aWwgdGhlIHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUg
b2YgbmV3IHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBo
YXZlIHJldGlyZWQsIG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAg
IG9mIHRoZSBjb250ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAg
ICAgIEluIHRoaXMgY29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBhcmUgaW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBk
YXRlIG9yCisgICAgICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICho
ZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
cldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJl
ZFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6cmVh
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyOjp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNo
PFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAgICAo
V1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+Ojpl
cXVhbCk6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6OlJl
ZmVyZW5jZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgorICAg
ICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6
OkhlbGRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBs
ZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg6CisKIDIwMjItMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gQnViYmxld3JhcExhdW5jaGVyIGxlYWtz
IEQtQnVzIHByb3h5IHNvY2tldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1
MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIuLjgwNTAwMTNlZDY1ZjQwYzg4ZjA0MzYxMjc4MDI1
ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL1VzZXJBZ2Vu
dC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCiAgICAgcGxh
dGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisgICAgcGxhdGZvcm0vVmlkZW9GcmFtZS5oCiAgICAg
cGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9WaWRlb1NhbXBsZU1l
dGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlmNGFiMzNhOGJkNzVlN2E1OGEuLjYxNDJkMjQzZGIy
ODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTI2LDYg
KzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAogcGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9XaWRnZXQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uMTY0ZTUy
YWU1NWYyNDNmMjU0NWQwOTMwNjQ5ODk4ZGM3NzU0NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwNyw2ICsyNDA3LDcg
QEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThGQzUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjVBM0RBRjI3QUJG
OEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYw
OTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTUyMCw2ICsxMTUyMSw4IEBACiAJCTdCMTYxOTEwMjcxOTg4
MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0
MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb0ZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3
IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MjBCMEEyNzQzREJB
NjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMTUxLDYgKzMwMTU0
LDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCiAJ
CQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJs
ZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAq
LywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAogCQkJ
CTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJ
CQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAgLyogVmlkZW9TYW1wbGVNZXRhZGF0YS5oICovLAog
CQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwICovLApAQCAtMzc4MjcsNiArMzc4MzIsNyBAQAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQz
N0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQgLyog
VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAx
QzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIy
NjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLmI0ZmU3MTY1NzlmZjhlN2ZjMzQwZDg3
Y2M4OTJmMWJiYjRiMGQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApA
QCAtNDksOSArNDksMTAgQEAgc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAgICAgICAgQ01TYW1w
bGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1wbGVUeXBlLAogICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCAvLyBG
SVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgog
ICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1w
bGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CiAgICAg
ICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVyOwogICAgICAgICBHc3RTYW1wbGUq
IGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZiwgQ01G
b3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxlOwpAQCAtNjYsNyArNjcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF0
b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2tJ
RChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBIYXNTeW5jSW5mbyA9
IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgPSAwOwogCiAg
ICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGU4MTZlY2Qw
OGNiOTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitWaWRlb0ZyYW1lOjp+VmlkZW9GcmFtZSgp
ID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK01lZGlh
VGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFj
a0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJDb3JlOjpGbG9hdFNp
emUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjpwYWlyPFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+IFZpZGVvRnJh
bWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKK30KKworUmVm
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKworTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdz
IFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNh
bXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFu
Z2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92
ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3Yjg0NzcxNDFlMDVm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyBhIHZpZGVvIGZyYW1lIGZyb20g
YSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxhci4KKy8vIEZJWE1FOiBDdXJyZW50
bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVydHMgZnJvbSBNZWRpYVNhbXBsZSB1
bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVycmluZyB0byBNZWRpYVNhbXBsZQorY2xh
c3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JU
IFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBp
bnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgorICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRy
PE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRl
eCBjMTI2YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45YmY0YjBiOGQ1YzQ4
MWE1MzRmZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzM0LDYgKzMz
NCw5IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJhY2sgb2YgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAoIWlzPE1lZGlhU2Ft
cGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVU
b0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7
CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1
ZWUyN2M3OGEyMGQ1OTU1Li41MTI2OTZhMTNhYzcyYWM4OGY4MDA4NjU2MmUzMTEwNDVjNDFhYzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODcsNiArOTg3LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVy
Lm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogRG9lcyBub3Qg
Y3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgorICAgIGlmICghaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQog
ICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2NjEyMWU3YzZmYjUxZGYy
Zjc3MWMxLi43YmU3MzUxZTViYWE3ZDIxZTYzZmM0OTlhMjcxMjM1ZWNmNGZiOWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNTQsMTMgKzU0LDEy
IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0K
LSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0g
aWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CkBAIC05NywzICs5Niw3IEBAIHByb3RlY3RlZDoKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1
ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2VkZWE1NWRmZTQyOTUz
YzJjOWJmMmYyNjllYTEzYzQ2YzNiLi5hM2EzMTU2YmZiYTBjYTc5OTFmNjZkZDNlZjI0YzMyNDRk
MGUzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0
ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVT
aXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6
OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0g
bV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlhNjIzOGU1MWRmOGYw
ZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2MzViZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVUeXBlLCB7IC5nc3RT
YW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2
NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5YTRmOTEwYjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVi
bGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxSZWZQ
dHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFU
aW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9
OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJp
ZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJ
bWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uNGFj
NjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHByaXZhdGU6CiAgICAg
TWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kZWNv
ZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0
IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQogICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4
Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkg
Y29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1vY2tN
ZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxl
IHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9
IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ZjRjNzgxODE4
MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLmRjNGQzMWNmNmY0ODVmODExMGZkOTlhMGE0
M2FhNzk0MTY0MjhlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKIAogICAg
IEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZjkyNzVmZjYxMzhjNDkxNDY5MGFjMGEwOWVkYzE2MGFjZTA5YWJmNS4uZWNhODAwZTI4MGVh
YTRhMDFkZTVkMGRjOGU1MjE1NzM4YTlhMjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTE5MSw2ICsxOTIsNyBA
QCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAppbmRleCA5MmQyMDYwOTkzNDE3N2FlYzk3ZTg4NmM2NmNlOGQ5MTM3ODI0
MDgzLi41YzNjNjU0NjRhNWJlMGY4ZjQ0NmQwZGY2N2E1ZGNiMzQ5ZTc5YjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM4MSw2ICsz
ODEsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1v
dGVUZXh0dXJlTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJhbWVQcm94eU1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlk
ZW9GcmFtZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjllNGM4NDY2MzQ1YjMzOTgzZGU3NDgyODdiOTQxNTQ2
NDdmMjliZC4uMzAxMzAwMTZmODY5Y2FjYTFjMmNmMmNjY2VlN2I2NTU5ZmY3NTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjAyLDYgKzIwMiw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBc
CiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciBcCiAJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5IFwKIAlXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgXAogCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIgXApAQCAtMzAwLDYgKzMwMSw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNl
Li4xMDM5MzllODMzMjYxNmQwZmVkNTc0ZTRjMmUyYWM5YWJiZTk2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNz
JiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1h
bmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0Fy
Yml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0
ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdl
cy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJh
bWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlm
Ci0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAu
cmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyBy
ZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVt
LgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDYgKzk0
NywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1
dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uOTk2ZjU0
ZjNjODQ5NTBmNWUwZTdmMDI0YzQ3NTRhMzNlYWY0OGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiAr
MTA2LDEwIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKwog
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dApAQCAtMTQxLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxv
d3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQog
ICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c1ZpZGVv
Q2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFs
c2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVz
ZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uZTlhMTA1MWUwMzA3
Mzk2NDI2NTVjZmQ3YTIxNTgxNDBjYTNiOWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xD
Vi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBX
VEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkp
KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIy
Myw2ICsyMzAsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBpeGVsQnVm
ZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50
aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM+IHJlc3VsdDsKKyAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9jb250ZXh0
LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKSB7CisgICAgICAgIGF1dG8g
d3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRlRm9yQWRkKCk7
CisgICAgICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJlbmNl
KCk7CisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhX
VEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnZpZGVvRnJhbWUpOworICAgICAgICBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUodmlkZW9GcmFt
ZSksIHN0ZDo6bnVsbG9wdCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmMyMzZk
OTJiZWU4Yzg1N2M5YjVjNDM2NmRkZTYzZjI5OWVmOWViMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY2LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nl
c3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0
R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNiw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4mJik+JiYpOworI2VuZGlmCiAgICAgdm9pZCBj
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQz
Ml90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQxLDkgQEAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQg
V1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNT
IFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThl
MzAyYjIuLjQwMzNjMzAwZDU1NTgyMjhkMjA1MjlmYzI2ZDhlMWFhNGNhZWJmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewog
ICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZv
aWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENv
cHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMKKyNlbmRp
ZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU3ZDI5MjNhZmUwZjk1
OTI4MDQ2MGFiZTlmMTNkZWRkZGRlZmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwPiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoY29ubmVjdGlv
blRvV2ViUHJvY2VzcykpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
blRvV2ViUHJvY2VzcykKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygmY29ubmVj
dGlvblRvV2ViUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKK3sKKyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwor
fQorCitSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6flJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKCkKK3sKKyAgICBBU1NFUlQoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk7Cit9CisK
K3ZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVm
PFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAg
IGFzc2VydElzQ3VycmVudChtX2NvbnN1bWVUaHJlYWQpOworICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gc3RkOjpleGNoYW5nZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIG51bGxwdHIpKSB7CisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIC8v
IENsaWVudHMgbWlnaHQgaG9sZCBvbiB0byB0aGUgcmVmIGFmdGVyIHRoaXMgaGFwcGVucy4gVGhl
eSBzaG91bGQgYWxzbyBzdG9wIHRoZW1zZWx2ZXMsIGJ1dCBpZiB0aGV5IGRvIG5vdCwKKyAgICAg
ICAgLy8gYXZvaWQgYmlnIG1lbW9yeSBsZWFrcyBieSBjbGVhcmluZyB0aGUgZnJhbWVzLiBUaGUg
Y2xpZW50cyBzaG91bGQgZmFpbCBncmFjZWZ1bGx5IChkbyBub3RoaW5nKSBpbiBjYXNlIHRoZXkg
ZmFpbCB0byBsb29rIHVwCisgICAgICAgIC8vIGZyYW1lcy4KKyAgICAgICAgY2xlYXIoKTsKKyAg
ICAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBwZW4gYWZ0ZXIgc3RvcHBpbmcuCisgICAgfQorfQor
Cit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZShSZW1v
dGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiB3cml0ZSkKK3sKKyAgICBhc3NlcnRJc0N1cnJl
bnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICByZXRpcmVSZW1vdmUoV1RGTW92ZSh3cml0ZSkpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDM3ZmRk
NGVhN2U2ODc5ZWI0MzVhMDJlOGY0MmE2NjBkZDRkMGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFz
c2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOworCisvLyBIb2xkcyByZWZlcmVuY2VzIHRvIGFsbCBWaWRlb0ZyYW1lIGluc3Rh
bmNlcyB0aGF0IGFyZSBtYXBwZWQgZnJvbSBXZWIgcHJvY2VzcyB0byBHUFUgcHJvY2VzcyB0d28g
cHJvY2Vzc2VzLgorLy8gQXMgY3VycmVudGx5IHRoZXJlIGlzIG5vIHNwZWNpYWwgc3RhdGUgZm9y
IFJlbW90ZVZpZGVvRnJhbWUsIHRoZSBvYmplY3QgaGVhcCBzdG9yZXMgVmlkZW9GcmFtZSBpbnN0
YW5jZXMgKE1lZGlhU2FtcGxlKS4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBSZW1vdGVW
aWRlb0ZyYW1lLCByZXNwb25zaWJsZSBmb3IgZGlzcGF0Y2hpbmcgdGhlIFZpZGVvRnJhbWUgbWV0
aG9kcyB0byB0aGUgb2JqZWN0cy4KKy8vIENvbnN1bWUgdGhyZWFkIGlzIHRoZSB0aHJlYWQgdGhh
dCB1c2VzIHRoZSBWaWRlb0ZyYW1lLiBGb3IgR1BVUCB0aGlzIGlzIHRoZSBtZWRpYSBwbGF5ZXIg
dGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQuCisvLyBGSVhNRTogY3VycmVudGx5IFZpZGVvRnJhbWUg
aW5zdGFuY2VzIGFyZSBNZWRpYVNhbXBsZSBpbnN0YW5jZXMuCitjbGFzcyBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4sIHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXA+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CisgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CisKKyAgICB2b2lkIHN0b3BMaXN0
ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHJlZkZyb21Db25u
ZWN0aW9uKTsKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3Zl
cnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcy4KKyAgICB2b2lkIHJlbGVhc2VW
aWRlb0ZyYW1lKFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSYmKTsKKworICAgIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CisgICAgY29uc3QgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVUaHJlYWQg
Tk9fVU5JUVVFX0FERFJFU1M7Cit9OworCisKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3OGNlM2QwMzlkYmUxNzMxZDVh
ZjZjOGU0OTkxMGEzOTUyYTcxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorbWVzc2FnZXMgLT4g
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgTm90UmVmQ291bnRlZCB7CisgICAgUmVsZWFzZVZp
ZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UgaWRlbnRpZmll
cikKK30KKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA3MjRhOGM5NmI3ZTdlNWUwZGJhYmEwODIzMWJiOGI3
OGY5YmJmMGMwLi5iZjQ2MWNkZmY4YWRkNjE0ZGZiMGViZjE0OTM5M2U0ZWE1YzNhYmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KQEAgLTM1LDE4
ICszNywyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRpbWVvdXQg
eyAzMF9zIH07CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNyZWF0ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbGF5ZXIgPSBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPihuZXcgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbikpKTsKKyAgICBhdXRv
IGxheWVyID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4o
bmV3IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihncHVDb25uZWN0aW9uLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7CiAgICAgcmV0dXJuIGxheWVyLT5tX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciA/IFdURk1vdmUobGF5ZXIpIDogbnVsbHB0cjsKIH0KIAotUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
K1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb24sIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKGdwdUNvbm5lY3Rpb24pCisg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3Zl
KGNvbm5lY3Rpb24pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3ZpZGVvRnJhbWVP
YmplY3RIZWFwKG1fZ3B1Q29ubmVjdGlvbi52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQogewogICAg
IEFTU0VSVChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik7CiB9CkBAIC0xMTMsNyArMTE5LDIz
IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
b3RlU2FtcGxlKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiBzYW1wbGUpCit7CisgICAgYXV0
byBtZWRpYVNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHNh
bXBsZSksIGRlZmF1bHRUaW1lb3V0KTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlKSB7CisgICAgICAg
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICghaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihtZWRpYVNhbXBsZSkpIHsKKyAgICAgICAgQVNTRVJU
X0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgYXZm
TWVkaWFTYW1wbGUgPSBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+KCptZWRpYVNhbXBsZSk7
CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDOjpzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShhdmZNZWRp
YVNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUo
YXZmTWVkaWFTYW1wbGUpOworfQorCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZUNWKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtb3RlU2Ft
cGxlKQogewogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOwogICAgIGlmICghcmVtb3Rl
U2FtcGxlLnN1cmZhY2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXgg
NzI1YjNkMjZiNzFjNzg4NmRjNDg4ODI3ZDBhNmY3ZDI1MmFhN2EwZC4uODAyYzkwZmU5ZWI2NjRi
YTkzMjFkN2E4YmRlNWQ5ODRmNDAzZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5oCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlZFZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgog
I2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkQXNzZXJ0aW9u
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OwpAQCAtNDIsMTEgKzQ0LDEzIEBAIGNsYXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogfTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciA6IHB1YmxpYyBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNs
aWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+UmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKICAgICB1c2luZyBXZWJDb3JlOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudDo6d2Vha1B0ckZhY3Rvcnk7CkBAIC02MSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgot
ICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKFN0cmluZyYm
KTsKQEAgLTczLDcgKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1h
Z2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1
ZXVlU2FtcGxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYpOworICAgIHZvaWQgZW5xdWV1
ZVNhbXBsZShSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIGVucXVl
dWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3Jl
KElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwpAQCAtODUsMTIgKzkwLDE2IEBAIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICAg
ICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZEZhaWwoKSBmaW5hbDsKIAor
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbiBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY29uc3VtZVRocmVhZCk7CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0
aW5nQ29udGV4dDsKICAgICBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyIG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlcjsKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisgICAgVGhyZWFkQXNzZXJ0aW9uIG1fY29uc3VtZVRocmVhZCBOT19VTklR
VUVfQUREUkVTUzsKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tZXNzYWdlcy5pbgppbmRleCBlNTA0ODMxNDFlZmVmYWZiNDNkY2E2MDhjZGMzN2Q2MjE2
ZjdlY2RmLi4zY2ExZjkzMjcwNzI3ZGUwYzJiNzU0NDdhYjg5YjY0NjMyYWJhNzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgpAQCAtMzIsNyAr
MzIsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVm
Q291bnRlZCB7CiAgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2Vi
Q29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiAgICAgRmx1c2goKQog
ICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWVTYW1wbGUoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUgc2FtcGxlKQorICAgIEVucXVldWVTYW1wbGUoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBzYW1wbGUpCisgICAgRW5xdWV1ZVNhbXBsZUNWKFdlYkNv
cmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKICAgICBDbGVhckVucXVldWVkU2FtcGxlcygp
CiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5jcHAKaW5kZXggYTU0NDVkN2ZkNWNjYmI1YWQwMGNkZWNlYzVkMDNmNjMz
NGI1ZDE1MS4uNzZlNzk5YzM1YWYyZWRkMjM2NmQ3Y2FjZGQzZTVlNzE5NzVjNTZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGJvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6ZGlzcGF0
Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXI6OmNyZWF0ZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoaWRlUm9vdExheWVyLCBXZWJDb3JlOjpJbnRTaXpl
IHNpemUsIExheWVyQ3JlYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmll
ciwgaGlkZVJvb3RMYXllciwgc2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAg
ICBhdXRvIGxheWVyID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUobV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigp
KTsKICAgICAgICAgYXV0byYgbGF5ZXJSZWZlcmVuY2UgPSAqbGF5ZXI7CiAgICAgICAgIGxheWVy
UmVmZXJlbmNlLmluaXRpYWxpemUoaGlkZVJvb3RMYXllciwgc2l6ZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVu
dGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpXShhdXRvIGxheWVySWQpIG11dGFibGUgewog
ICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZp
ZXIsIGxheWVyID0gV1RGTW92ZShsYXllciksIGxheWVySWQgPSBXVEZNb3ZlKGxheWVySWQpXSgp
IG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
NzU4ZDUwNTU2ZmYyZjZlNDczNzdkMTRlODI2NmJjNWUzZWFjNDFhNi4uMjI0YmZmZjZmOGU2YmJm
MDA3YTI2NTUwYzMxNDhkZDMzNTNlYTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0zNDcsNiArMzQ3LDkgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcics
CisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyJywKKyAgICAgICAg
J1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJywKKyAgICAgICAgJ1dlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UnLAogICAgICAgICAnV2ViS2l0OjpSZW1v
dGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyJywKQEAgLTg4Myw2ICs4ODYsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsn
IlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2Vi
S2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIiddLAorICAgICAgICAn
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UnOiBbJyJSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllci5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsn
Ikdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsn
Ikdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJzogWyci
SWRlbnRpZmllclR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAppbmRleCBi
YWJhMGIwODg3N2M0NzJhNTA3MWZmM2FhM2Q4ODAxMDJmNTdjODlhLi5hOGQyNTdlYzY3MzVmMTBk
YTU5NTQ4MzAwY2U2ZmUzZjJjZGY5YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogCisjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ4LDYgKzQ5LDggQEAgc3RydWN0
IFNlbmRNZXNzYWdlQ29udGV4dCB7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uOwog
ICAgIHN0ZDo6YXRvbWljPGJvb2w+JiBzaG91bGRTdG9wOwogfTsKKworc3RhdGljIHN0ZDo6YXRv
bWljPHVuc2lnbmVkPiBvbmdvaW5nSVBDVGVzdHMgeyAwIH07CiB9CiAKIGV4dGVybiAiQyIgewpA
QCAtMTE1LDcgKzExOCw5IEBAIHZvaWQgSVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyaW5nJiYgZHJpdmVyCiAgICAgaWYgKCFtX3Rl
c3RRdWV1ZSkKICAgICAgICAgbV90ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiSVBDIHRl
c3Rpbmcgd29yayBxdWV1ZSIpOwogICAgIG1fdGVzdFF1ZXVlLT5kaXNwYXRjaChbY29ubmVjdGlv
biA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgJnNob3VsZFN0b3AgPSBtX3Nob3VsZFN0b3AsIGRyaXZl
ck5hbWUgPSBXVEZNb3ZlKGRyaXZlck5hbWUpXSgpIG11dGFibGUgeworICAgICAgICBvbmdvaW5n
SVBDVGVzdHMrKzsKICAgICAgICAgcnVuTWVzc2FnZVRlc3RpbmcoY29ubmVjdGlvbiwgc2hvdWxk
U3RvcCwgV1RGTW92ZShkcml2ZXJOYW1lKSk7CisgICAgICAgIG9uZ29pbmdJUENUZXN0cy0tOwog
ICAgIH0pOwogfQogCkBAIC0xMzQsNiArMTM5LDExIEBAIHZvaWQgSVBDVGVzdGVyOjpzdG9wSWZO
ZWVkZWQoKQogICAgIH0KIH0KIAorYm9vbCBpc1Rlc3RpbmdJUEMoKQoreworICAgIHJldHVybiBv
bmdvaW5nSVBDVGVzdHM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JUENUZXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rlci5o
CmluZGV4IDQ0OTkwOTM1YmQ1NTFkNGVlYjU4MzU0M2UxMmVjZmQzYjg0NzE4NWUuLmVhNDkzMzU2
ZDQzOTJjM2ZhN2I1ZjdmNWUyYjU2NGY2NTMzMjdmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0lQQ1Rlc3Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElQQ19U
RVNUSU5HX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPGF0
b21pYz4KQEAgLTMzLDYgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5l
IEFTU0VSVF9JU19URVNUSU5HX0lQQygpIEFTU0VSVChpc1Rlc3RpbmdJUEMoKSwgIlVudHJ1c3Rl
ZCBjb25uZWN0aW9uIHNlbnQgaW52YWxpZCBkYXRhLiBTaG91bGQgb25seSBoYXBwZW4gd2hlbiB0
ZXN0aW5nIElQQy4iKQorCisjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKKworLy8gRnVuY3Rp
b24gdG8gY2hlY2sgd2hlbiBhc3NlcnRpbmcgSVBDLXJlbGF0ZWQgZmFpbHVyZXMsIHNvIHRoYXQg
SVBDIHRlc3Rpbmcgc2tpcHMgdGhlIGFzc2VydGlvbnMKKy8vIGFuZCBleHBvc2VzIGJ1Z3MgdW5k
ZXJuZWF0aC4KK2Jvb2wgaXNUZXN0aW5nSVBDKCk7CisKIGNsYXNzIElQQ1Rlc3RlciBmaW5hbCA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgSVBDVGVzdGVyKCk7
CkBAIC01Miw2ICs1OSwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hv
dWxkU3RvcCB7IGZhbHNlIH07CiB9OwogCisjZWxzZQorCitjb25zdGV4cHIgaW5saW5lIGJvb2wg
aXNUZXN0aW5nSVBDKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNlbmRpZgorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9PYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjY4Y2U1Y2ZmMWJlMzRmNDhjOTJhYzQxMDhiMmFhMWUw
MmRjN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaApAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2luY2x1ZGUgPGF0b21p
Yz4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBU
eXBlIGZvciB0aGUga2V5IGluIG1hcHBpbmcgZnJvbSBvYmplY3QgaWRlbnRpZmllciByZWZlcmVu
Y2VzIHRvIG9iamVjdCBzdGF0ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKCkgPSBkZWZhdWx0OworICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoVCBpZGVudGlm
aWVyLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgIHsKKyAgICB9CisgICAgZXhwbGlj
aXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQor
ICAgIHsKKyAgICB9CisgICAgVCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX2lkZW50aWZpZXIgPT0g
bV9pZGVudGlmaWVyICYmIG90aGVyLm1fdmVyc2lvbiA9PSBtX3ZlcnNpb247CisgICAgfQorICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAgICAgIGVu
Y29kZXIgPDwgbV92ZXJzaW9uOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4gaWRlbnRp
ZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyCisgICAgICAgICAgICA+PiB2ZXJzaW9uOworICAgICAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UgeyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgKnZlcnNpb24gfTsKKyAgICB9Citwcml2YXRlOgorICAgIFQgbV9pZGVudGlmaWVy
OworICAgIHVpbnQ2NF90IG1fdmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UgeworcHVibGljOgorICAg
IHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgT2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAg
OiBtX3JlZmVyZW5jZShyZWZlcmVuY2UpCisgICAgeworICAgIH0KKyAgICBUIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5pZGVudGlmaWVyKCk7IH0KKyAgICB1aW50NjRf
dCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UudmVyc2lvbigpOyB9CisgICAg
UmVmZXJlbmNlIHJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVyZW5jZTsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0
SWRlbnRpZmllclJlYWRSZWZlcmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgZGVj
b2RlciA+PiByZWZlcmVuY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRlbnRp
ZmllclJlYWRSZWZlcmVuY2UgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpIH07CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZmVyZW5jZSBtX3JlZmVyZW5jZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UgeworcHVibGljOgorICAg
IHVzaW5nIFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD47CisgICAgc3Rh
dGljIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxUPiBnZW5lcmF0ZUZvckFkZCgpIHsg
cmV0dXJuIHsgeyBUOjpnZW5lcmF0ZVRocmVhZFNhZmUoKSwgMCB9LCAwIH07IH0KKworICAgIE9i
amVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZShSZWZlcmVuY2UgcmVmZXJlbmNlLCB1aW50NjRf
dCBwZW5kaW5nUmVhZHMpCisgICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgICAg
ICAsIG1fcGVuZGluZ1JlYWRzKHBlbmRpbmdSZWFkcykKKyAgICB7CisgICAgfQorICAgIFQgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLmlkZW50aWZpZXIoKTsgfQorICAg
IHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS52ZXJzaW9uKCk7
IH0KKyAgICB1aW50NjRfdCBwZW5kaW5nUmVhZHMoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdS
ZWFkczsgfQorICAgIFJlZmVyZW5jZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
ZW5jZTsgfQorICAgIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4gcmV0aXJlZFJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIHsgaWRlbnRpZmllcigpLCB2ZXJzaW9uKCkgKyAxIH07IH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1fcmVmZXJlbmNlOworICAgICAg
ICBlbmNvZGVyIDw8IG1fcGVuZGluZ1JlYWRzOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZl
cmVuY2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxSZWZlcmVuY2U+IHJlZmVyZW5jZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGVuZGluZ1JlYWRzOworCisgICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlCisgICAgICAg
ICAgICA+PiBwZW5kaW5nUmVhZHM7CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gT2JqZWN0SWRl
bnRpZmllcldyaXRlUmVmZXJlbmNlIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgKnBlbmRpbmdSZWFk
cyB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7CisgICAg
dWludDY0X3QgbV9wZW5kaW5nUmVhZHMgeyAwIH07Cit9OworCisvLyBDbGFzcyB0byBnZW5lcmF0
ZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIGFuIE9iamVjdElkZW50aWZlci4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNr
ZXIpOworcHVibGljOgorICAgIHVzaW5nIFJlYWRSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVy
UmVhZFJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBXcml0ZVJlZmVyZW5jZSA9IE9iamVjdElkZW50
aWZpZXJXcml0ZVJlZmVyZW5jZTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlPFQ+OworCisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZVRyYWNrZXIoVCBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgIHsKKyAgICB9CisgICAgZXhwbGljaXQgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5j
ZVRyYWNrZXIoUmVmZXJlbmNlIHJlZmVyZW5jZSkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIocmVm
ZXJlbmNlLmlkZW50aWZpZXIoKSkKKyAgICAgICAgLCBtX3ZlcnNpb24ocmVmZXJlbmNlLnZlcnNp
b24oKSkKKyAgICB7CisgICAgfQorICAgIC8vIFRocmVhZCBzYWZlLgorICAgIFJlYWRSZWZlcmVu
Y2UgcmVhZCgpIGNvbnN0CisgICAgeworICAgICAgICBtX3BlbmRpbmdSZWFkcysrOworICAgICAg
ICByZXR1cm4gUmVmZXJlbmNlIHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24gfTsKKyAgICB9Cisg
ICAgLy8gTm90IHRocmVhZCBzYWZlLiBDbGllbnQgbXVzdCBjb29yZGluYXRlIHdyaXRlcyBhbmQg
cmVhZHMgYW55d2F5LgorICAgIFdyaXRlUmVmZXJlbmNlIHdyaXRlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7IHsgbV9pZGVudGlmaWVyLCBtX3ZlcnNpb24rKyB9LCBtX3BlbmRpbmdS
ZWFkcy5leGNoYW5nZSgwKSB9OworICAgIH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICB9Citwcml2YXRlOgorICAgIGNv
bnN0IFQgbV9pZGVudGlmaWVyOworICAgIG11dGFibGUgc3RkOjphdG9taWM8dWludDY0X3Q+IG1f
cGVuZGluZ1JlYWRzIHsgMCB9OworICAgIG11dGFibGUgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFz
aGVyLCBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJlZmVyZW5jZSkKK3sKKyAgICBhZGQo
aGFzaGVyLCByZWZlcmVuY2UuaWRlbnRpZmllcigpKTsKKyAgICBhZGQoaGFzaGVyLCByZWZlcmVu
Y2UudmVyc2lvbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJl
ZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQoreworICAgIHRzIDw8ICJPYmplY3RJZGVudGlmaWVyUmVm
ZXJlbmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52
ZXJzaW9uKCkgPDwgIikiOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8
PCAiT2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UoIiA8PCByZWZlcmVuY2UuaWRlbnRpZmll
cigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnZlcnNpb24oKSA8PCAiKSI7CisgICAgcmV0dXJuIHRz
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8
VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlKCIgPDwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJz
aW9uKCkgPDwgIiwgIiA8PCByZWZlcmVuY2UucGVuZGluZ1JlYWRzKCkgPDwgIikiOworICAgIHJl
dHVybiB0czsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVu
Y2U8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhh
c2hUcmFpdHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+
PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0
ZUhhc2gocmVmZXJlbmNlKTsKKyAgICB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2Vi
S2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBhLCBjb25zdCBXZWJLaXQ6Ok9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYSA9PSBi
OworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGhy
ZWFkU2FmZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVPYmpl
Y3RIZWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEwOWU1YmE4YTQ4MWIzNjUwMTY3NGYyZTBlYzc5MmQzODVh
NWE4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RocmVhZFNhZmVP
YmplY3RIZWFwLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJJUENUZXN0ZXIuaCIKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZEFzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIENvbnRhaW5lciB0aGF0IGhvbGRzIGlkZW50aWZpZXIgLT4gb2JqZWN0
IG1hcHBpbmcgYmV0d2VlbiB0d28gcHJvY2Vzc2VzLgorLy8gVXNlZCBpbiBzY2VuYXJpb3Mgd2hl
cmUgdGhlIGhvbGRlciBwcm9jZXNzIHByb2Nlc3NlcyBtZXNzYWdlcyB3aXRoIHRoZSBvYmplY3Qg
cmVmZXJlbmNlcyBpbiBtdWx0aXBsZQorLy8gdGhyZWFkcy4gYFRocmVhZFNhZmVPYmplY3RIZWFw
YCB0cmFja3MgdGhlIHJlYWQgYW5kIHdyaXRlIHJlZmVyZW5jZXMgdG8gdGhlIGNvbnRlbnQgcG9p
bnRlZAorLy8gYnkgYSBwYXJ0aWN1bGFyIGlkZW50aWZpZXIuCisvLyBQZW5kaW5nIHJlYWRzIG1h
eSBibG9jayBuZXcgd3JpdGVzLiBBbHRlcm5hdGl2ZWx5IG5ldyB3cml0ZXMgY2FuIHNraXAgYWhl
YWQgb2YgdGhlIHJlYWRzLAorLy8gZm9yIGV4YW1wbGUgaW4gY29weS1vbi13cml0ZSBzY2VuYXJp
b3MuCisvLyBQZW5kaW5nIHdyaXRlcyBibG9jayByZWFkcy4KKy8vIEN1cnJlbnRseSBpbXBsZW1l
bnRlZCBvbmx5IGZvciByZWFkLW9ubHkgKGNyZWF0ZS1yZWFkLWRlc3Ryb3kpIG9yIGNvcHktb24t
d3JpdGUgdHlwZXMsCisvLyBlLmcuIG5vIHR3by1waGFzZSBnZXQoKSBvcGVyYXRpb25zIGFyZSBu
b3QgaW1wbGVtZW50ZWQgeWV0LgordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5h
bWUgSGVsZFR5cGU+CitjbGFzcyBUaHJlYWRTYWZlT2JqZWN0SGVhcCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT4+
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OlJlYWRSZWZlcmVuY2U7CisgICAg
dXNpbmcgV3JpdGVSZWZlcmVuY2UgPSB0eXBlbmFtZSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
VHJhY2tlcjxJZGVudGlmaWVyPjo6V3JpdGVSZWZlcmVuY2U7CisgICAgdXNpbmcgUmVmZXJlbmNl
ID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46
OlJlZmVyZW5jZTsKKworICAgIC8vIFdhaXRzIHVudGlsIGEgd3JpdGUgY3JlYXRlcyB0aGUgcmVm
ZXJlbmNlIGFuZCB0aGVuIHJldGlyZXMgdGhlIHJlYWQgb3IKKyAgICAvLyB0aW1lcyBvdXQuCisg
ICAgSGVsZFR5cGUgcmV0aXJlKFJlYWRSZWZlcmVuY2UmJiwgSVBDOjpUaW1lb3V0KTsKKworICAg
IC8vIEluc2VydHMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IG9yIHJlbW92ZXMgYW4gb2xk
IG9uZSBhbmQgdGhlbiByZXRpcmVzIHRoZSB3cml0ZSBvcgorICAgIC8vIHRpbWVzIG91dC4KKyAg
ICAvLyBJZiB0aW1lb3V0IGlzIHBhc3NlZCwgd2FpdHMgdW50aWwgcGVuZGluZyByZWFkcyBhcmUg
ZG9uZS4KKyAgICAvLyBJdCBpcyBhIGNhbGxlciBlcnJvciB0byBub3Qgd2FpdCBhbmQgbXV0YXRl
IHRoZSBvbGQgb2JqZWN0LgorICAgIHZvaWQgcmV0aXJlKFdyaXRlUmVmZXJlbmNlJiYsIHN0ZDo6
b3B0aW9uYWw8SGVsZFR5cGU+JiYgbmV3T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPElQQzo6VGltZW91
dD4pOworCisgICAgdm9pZCByZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICB2
b2lkIGNsZWFyKCk7Citwcml2YXRlOgorICAgIExvY2sgbV9vYmplY3RzTG9jazsKKyAgICBDb25k
aXRpb24gbV9vYmplY3RzQ29uZGl0aW9uOworICAgIHN0cnVjdCBSZWZlcmVuY2VTdGF0ZSB7Cisg
ICAgICAgIHVpbnQ2NF90IHJldGlyZWRSZWFkcyB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZmluYWxSZWFkOyAvLyBSZW1vdmUgYWZ0ZXIgYGZpbmFsUmVhZGAgcmVhZHMu
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+IG9iamVjdDsgLy8gT2JqZWN0IG9yIHRv
bWJzdG9uZS4KKworICAgICAgICBSZWZlcmVuY2VTdGF0ZSgpID0gZGVmYXVsdDsKKyAgICAgICAg
ZXhwbGljaXQgUmVmZXJlbmNlU3RhdGUoSGVsZFR5cGUmJiBvYmplY3QpCisgICAgICAgICAgICA6
IG9iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAv
LyBUb21ic3RvbmUgY29uc3RydWN0b3IuCisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRl
KHVpbnQ2NF90IGZpbmFsUmVhZCkKKyAgICAgICAgICAgIDogZmluYWxSZWFkKGZpbmFsUmVhZCkK
KyAgICAgICAgeworICAgICAgICB9CisgICAgfTsKKyAgICBIYXNoTWFwPFJlZmVyZW5jZSwgUmVm
ZXJlbmNlU3RhdGU+IG1fb2JqZWN0cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb2JqZWN0c0xvY2sp
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+
CitIZWxkVHlwZSBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJl
dGlyZShSZWFkUmVmZXJlbmNlJiYgcmVhZCwgSVBDOjpUaW1lb3V0IHRpbWVvdXQpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8g
aXQgPSBtX29iamVjdHMuZmluZChyZWFkLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9
IG1fb2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7
CisgICAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgSGVsZFR5
cGUgcmVzdWx0ID0gKnN0YXRlLm9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGF0ZS5yZXRpcmVk
UmVhZHMrKzsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkKSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdGF0ZS5maW5hbFJlYWQgPj0gc3RhdGUucmV0aXJlZFJlYWRz
KTsgLy8gVHJ1c3RlZCBhc3NlcnQgYmVjYXVzZSB0aGlzIGlzIGVuc3VyZWQgb24gYGZpbmFsUmVh
ZGAgYXNzaWdubWVudC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVhZCA9
PSBzdGF0ZS5yZXRpcmVkUmVhZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMu
cmVtb3ZlKGl0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9vYmplY3Rz
Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX29iamVjdHNDb25kaXRpb24u
d2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQuZGVhZGxpbmUoKSkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9IHdoaWxlICh0cnVlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgSWRlbnRpZmllciwgdHlwZW5hbWUgSGVsZFR5cGU+Cit2b2lkIFRo
cmVhZFNhZmVPYmplY3RIZWFwPElkZW50aWZpZXIsIEhlbGRUeXBlPjo6cmV0aXJlKFdyaXRlUmVm
ZXJlbmNlJiYgd3JpdGUsIHN0ZDo6b3B0aW9uYWw8SGVsZFR5cGU+JiYgb2JqZWN0LCBzdGQ6Om9w
dGlvbmFsPElQQzo6VGltZW91dD4gdGltZW91dCkKK3sKKyAgICBjb25zdCBib29sIHdhaXRGb3JQ
ZW5kaW5nUmVhZHMgPSB0aW1lb3V0Lmhhc192YWx1ZSgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X29iamVjdHNMb2NrIH07CisgICAgZG8geworICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZp
bmQod3JpdGUucmVmZXJlbmNlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9vYmplY3RzLmVuZCgp
KSB7CisgICAgICAgICAgICBhdXRvJiBzdGF0ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGlm
IChzdGF0ZS5maW5hbFJlYWQgJiYgc3RhdGUub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgLy8g
V3JpdGUgcmVwbGF5OiBgZmluYWxSZWFkYCBpcyBhc3NpZ25lZCBvbiB3cml0ZS4gQ2Fubm90IGhh
dmUgdGhlIHNhbWUgdmVyc2lvbiB3aXRoIHdyaXRlcy4KKyAgICAgICAgICAgICAgICBBU1NFUlRf
SVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID4gd3JpdGUucGVuZGluZ1JlYWRz
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSB1bmRlcmZsb3c6IG1vcmUgcmVhZHMgaGF2
ZSBiZWVuIGRvbmUgdGhhbiB0aGUgc2VuZGVyIGNsYWltcyBpcyB0aGUgbWF4aW11bS4KKyAgICAg
ICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJdCBpcyBsaWtlbHkgYSBjYWxsZXIg
ZXJyb3IgdG8gdHJ5IHRvIGFkZCBhIG5ldyByZWZlcmVuY2Ugd2l0aCB0aGUgc2FtZSBjbGllbnQg
b2JqZWN0IHdpdGhvdXQKKyAgICAgICAgICAgIC8vIHdhaXRpbmcgZm9yIHBlbmRpbmcgcmVhZHMg
b24gdGhlIG9sZCByZWZlcmVuY2UuCisgICAgICAgICAgICBBU1NFUlQod2FpdEZvclBlbmRpbmdS
ZWFkcyB8fCAhc3RhdGUub2JqZWN0IHx8ICpzdGF0ZS5vYmplY3QgIT0gb2JqZWN0KTsKKworICAg
ICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVhZHMoKSB8
fCAhd2FpdEZvclBlbmRpbmdSZWFkcykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRp
cmVkUmVhZHMgPCB3cml0ZS5wZW5kaW5nUmVhZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuZmluYWxSZWFkID0gd3JpdGUucGVuZGluZ1JlYWRzKCk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoc3RhdGUucmV0aXJlZFJlYWRzID09IHdyaXRlLnBlbmRpbmdSZWFkcygpKQorICAgICAg
ICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgICAgICBpZiAo
b2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vYmplY3Rz
LmFkZChXVEZNb3ZlKHdyaXRlKS5yZXRpcmVkUmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsg
V1RGTW92ZSgqb2JqZWN0KSB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQu
aXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgbmV3U3RhdGUgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW50
cnkgd2FzIGEgdG9tYnN0b25lLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRl
LmZpbmFsUmVhZCAmJiAhKm5ld1N0YXRlLmZpbmFsUmVhZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb2JqZWN0cy5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5ld1N0YXRlLm9iamVjdCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlLm9iamVjdCA9IFdURk1vdmUoKm9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLm9iamVjdCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTogdGhlIHJldGlyZWQgd3Jp
dGUgYWxyZWFkeSBleGlzdHMsIHRoZSBlbnRyeSB3YXMgbm90IGEgdG9tYnN0b25lLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX29iamVjdHNDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghd2FpdEZvclBlbmRpbmdSZWFk
cyB8fCAhd3JpdGUucGVuZGluZ1JlYWRzKCkpIHsKKyAgICAgICAgICAgIC8vIFdyaXRlIHRoZSB0
b21ic3RvbmUuCisgICAgICAgICAgICBtX29iamVjdHMuYWRkKHdyaXRlLnJlZmVyZW5jZSgpLCBS
ZWZlcmVuY2VTdGF0ZSB7IHdyaXRlLnBlbmRpbmdSZWFkcygpIH0pOworICAgICAgICAgICAgaWYg
KG9iamVjdCkKKyAgICAgICAgICAgICAgICBtX29iamVjdHMuYWRkKFdURk1vdmUod3JpdGUpLnJl
dGlyZWRSZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyBXVEZNb3ZlKCpvYmplY3QpIH0pOwor
ICAgICAgICAgICAgbV9vYmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCh0aW1lb3V0KTsKKyAgICAgICAgaWYg
KCFtX29iamVjdHNDb25kaXRpb24ud2FpdFVudGlsKG1fb2JqZWN0c0xvY2ssIHRpbWVvdXQtPmRl
YWRsaW5lKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBU
aHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJldGlyZVJlbW92ZShX
cml0ZVJlZmVyZW5jZSYmIG9iamVjdCkKK3sKKyAgICByZXRpcmUoV1RGTW92ZShvYmplY3QpLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50
aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVu
dGlmaWVyLCBIZWxkVHlwZT46OmNsZWFyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYmpl
Y3RzTG9jayB9OworICAgIG1fb2JqZWN0cy5jbGVhcigpOworfQorCit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUJ5dGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCmluZGV4IDRkZTFkMGVkMmE3YmU0OWUzY2Ji
Yjk1ZTM3N2Y1NDUwOWZhYzA3YWQuLjc4ZjczMTM0Y2U2YTdhMjE0Y2RjOWRlMDVjNDc1MzcyZTE3
YzlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCBBdG9tU3RyaW5nIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjp0cmFja0lEKCkgY29uc3QK
ICAgICByZXR1cm4gQXRvbVN0cmluZzo6bnVtYmVyKG1fdHJhY2tJRCk7CiB9CiAKLVBsYXRmb3Jt
U2FtcGxlIE1lZGlhU2FtcGxlQnl0ZVJhbmdlOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNh
bXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAg
IHJldHVybiB7CiAgICAgICAgIFBsYXRmb3JtU2FtcGxlOjpCeXRlUmFuZ2VTYW1wbGVUeXBlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhU2FtcGxlQnl0ZVJhbmdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAppbmRleCBiOGU0ZDc2Y2U2ZjM5Mjg1NzZl
OWZiMWVmOTYyYjQwNDk3ZTNkYzMxLi5mODMzNmJmMDEzNzIxMDkwZGExOTM3OGZiNWE0NTNjOGRh
Y2E1NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaApAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYnl0ZVJhbmdlOyB9CiAKICAgICBBdG9tU3RyaW5nIHRyYWNr
SUQoKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNh
bXBsZSgpIGZpbmFsOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxl
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmNWM1YmRjOWVmODg0Mzc4
ODM5OWZhYWNlZTVlMjk0ZThhZDlhNmEzLi41MDhkYTdhNTdlYjAyNjIzYTcwZDBkMWExOGZiN2U3
ZGZkOTJiZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTcwLDYgKzcwLDcgQEAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTG9hZGVy
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKK0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTc0NSw2ICs3NDYsNyBAQCBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKK1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJh
Y2tQcml2YXRlUmVtb3RlLmNwcApAQCAtODgzLDYgKzg4NSw3IEBAIFJlbW90ZURldmljZU1lc3Nh
Z2VSZWNlaXZlci5jcHAKIFJlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUdQVU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUdQVVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCiBS
ZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXJ5U2V0TWVz
c2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlUXVldWVNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYzY4MTg1
ZGY5OWFhNzU3OGU1MGI3MjIzZjEwNWQ2OTdlNTc3MzQ0Li4zYTg1NGRkMGUwOTNlYzAzYjhhYTFl
NzM4M2IwY2FiY2IwYWQ1YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMTEsNiArNTExMSwxMyBAQAogCQk3QjQ4M0YxRTI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I1MEU5N0YyNzcxRjZDRTAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJUENUZXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjUwRTk4MDI3NzFGNkNGMDAzREFBQzQgLyogSVBDVGVzdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElQQ1Rlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMDI3
QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQTEyN0E3REMxQTAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNUEzREEyMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREEzMjdBN0RDNkMwMDZDNkY5
NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I1QTNEQTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE4
MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREM1MjdBRTUwMUEwMDZD
NkY5NyAvKiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNiw2ICs1
MTQzLDcgQEAKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEz
M0YyNzU2NTJFQTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkREQTM0MDI3NTY1MkVBMDAzODY1OUUgLyog
QXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmpl
Y3RIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFNhZmVPYmplY3RIZWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTgg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjgwMCw2ICs2ODA4LDEwIEBACiAJCQkJQ0Q4MjUyRDEyNUQ0NjRBQjAwODYyRkQ4
IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovLAogCQkJCUNEODI1MkQzMjVENDY0
QkYwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIubWVzc2FnZXMuaW4gKi8s
CiAJCQkJQ0Q4MjUyRDQyNUQ0NjUxMDAwODYyRkQ4IC8qIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMDI3QTdEQzFBMDA2QzZGOTcgLyogUmVt
b3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCAqLywKKwkJCQk3QjVBM0RBMzI3QTdEQzZDMDA2QzZG
OTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLywKKwkJCQk3QjVBM0RBMjI3QTdEQzFB
MDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggKi8sCisJCQkJN0I1QTNEQTEyN0E3
REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJ
CQkxREQyQTYzQTI1NURFNkQxMDBGRjdCNkYgLyogU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAgKi8sCiAJCQkJMUREMkE2MzkyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaCAqLywKIAkJCQkxREQyQTY2RjI1NjIyRjExMDBGRjdCNkYgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKQEAgLTY4OTAsNiArNjkwMiw4IEBACiAJ
CQkJMUREMkE2NjYyNTYxRUQwNDAwRkY3QjZGIC8qIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1l
c3NhZ2VzLmluICovLAogCQkJCTA3RTE5RjA3MjNENERDODgwMDk0RkZCNCAvKiBSZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDdFMTlGMDYyM0Q0REM4ODAwOTRGRkI0IC8qIFJlbW90
ZVRleHRUcmFja1Byb3h5LmggKi8sCisJCQkJN0I1QTNEQTgyN0E3RENCQzAwNkM2Rjk3IC8qIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCAqLywKKwkJCQk3QjVBM0RBNzI3QTdEQ0JDMDA2
QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaCAqLywKIAkJCQkwNzFCQzU4NDIz
Q0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFC
QzU4NTIzQ0MyQzA5MDA2ODBEN0MgLyogUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggKi8sCiAJCQkJ
MDdFMTlGMDUyM0Q0REM4ODAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmggKi8sCkBAIC03MjY3LDYgKzcyODEsNyBAQAogCQkJCTFBRENCODY4MTg5ODMxQjMw
MDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4
MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUy
M0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCisJ
CQkJN0I1QTNEQzUyN0FFNTAxQTAwNkM2Rjk3IC8qIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VU
cmFja2VyLmggKi8sCiAJCQkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5
VXRpbHMuY3BwICovLAogCQkJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmggKi8sCiAJCQkJQkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9w
dXBNZW51RGF0YS5jcHAgKi8sCkBAIC03MzA3LDYgKzczMjIsNyBAQAogCQkJCTgzRjk2NDRDMUZB
MEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAogCQkJ
CTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJ
RjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5o
ICovLAorCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVh
cC5oICovLAogCQkJCTJGRDQzQjkyMUZBMDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRh
LmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFGQTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0
YS5oICovLAogCQkJCTJGODA5REQ1MUZCRDFCQzkwMDVGRTYzQSAvKiBUb3VjaEJhck1lbnVJdGVt
RGF0YS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGUyOWY0YmQ1NjEzMmVjZDY3MTcxYmMzN2NiMmNj
NTYxYmUxMjkzNTkuLjVjNWRlMTgyMTI2N2JkODU2ZGVlNTc3MTY1ZjQ1NGNiZDQyNDI3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC03Niw2ICs3NiwxMSBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyTWVzc2FnZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0Zy
YW1lUHJveHlNZXNzYWdlcy5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgpAQCAtMjA4LDYgKzIxMywxMCBAQCBib29sIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlYwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKQogICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGFu
ZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTVMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkKKyAgICAgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6aGFu
ZGxlTWVzc2FnZVRvUmVtb3ZlZERlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGRlY29kZXIpOworI2Vu
ZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvU2Vzc2lvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApp
bmRleCA3YWUxZWU3NmRjNGIwN2M0MDNmNjBiOGFkMTNkYWQ5Yjg3YmRlZDBhLi4xMmQzMmUzNTg1
ZjJmYTgxNzRkMmMzMWVjNzQwMWNiNTdjZmRhNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTE4
LDYgKzEyMiwyMyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYgYgogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkKK3sKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcmVz
dWx0OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZTo6UmVwbHkocmVzdWx0KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCksIFdURk1vdmUoKnJlc3VsdCkpOworfQorI2VuZGlmCisKIGJvb2wgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlh
UGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmlu
ZGV4IDI5ZjAxOTg3MTk1NTk5ODc5MmVlNzc5NWQ5YWE2MGMyZjM5NzM5NzEuLjVkMWNhYjIxOGY3
ODVjYmExMTQ2YTg5MTIyYjMwZDEwY2M2ODMwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5oCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAg
ICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NH
TGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdl
YkNvcmU6Ok1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCmluZGV4IGZmN2UxNDhkNmI1ZWViYTAyNGE5M2UzZWIyMTI2MmJhYjcyMjgw
OGMuLjBiOGJiYTE2Y2ZlYzE2YjJiYTE4NzE3MWFmZDliM2IzMTMxZDY3ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBA
IC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZP
YmpDLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTk5LDkgKzk4LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NW
KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7Ci0jZW5kaWYKIHByaXZhdGU6CiAgICAgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5k
KQogICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCkBAIC0xMTQsMjAgKzExMCw2IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7
CiB9OwogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpCi17Ci0gICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlh
U2FtcGxlLgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNv
cmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKLSAgICBpZiAoIXBp
eGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV2ViQ29yZTo6
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZl
ciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93
biwgdHJ1ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjUwMjYxNWRhMjcyYjNi
ZjQ2Y2Y0NjQ5NjFiN2Y4ZWIyYTFmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
clR5cGUgeyB9OwordXNpbmcgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZT47Cit1c2luZyBSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZSA9IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFJlbW90
ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVy
ZW5jZSA9IE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllcj47Cit1c2luZyBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZTxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllcj47Cit1c2luZyBSZW1vdGVW
aWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciA9IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MjUwNzZmMmE3
NjJlMjgxYjkyNDM5NDBkYzRmMjAyOGU3YzNhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAg
LTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiBy
ZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBXVEZNb3ZlKHJlZmVyZW5jZSksCisgICAgICAgIG1lZGlhU2Ft
cGxlLnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3Jl
ZCgpLAorICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAgIGV4cGFu
ZGVkSW50U2l6ZShtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25TaXplKCkpCisgICAgfTsKK30KKwor
UmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVh
dGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5KGNvbm5lY3Rpb24sIFdURk1vdmUocHJvcGVydGllcykpKTsKK30KKwor
dm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQcm9wZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZWxlYXNlKGNv
bm5lY3Rpb24sIHsgeyBwcm9wZXJ0aWVzLnJlZmVyZW5jZS5pZGVudGlmaWVyKCksIHByb3BlcnRp
ZXMucmVmZXJlbmNlLnZlcnNpb24oKSB9LCAwIH0pOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OlJlbW90ZVZpZGVvRnJhbWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBy
b3BlcnRpZXMmJiBwcm9wZXJ0aWVzKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3JlZmVyZW5jZVRyYWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3By
ZXNlbnRhdGlvblRpbWUocHJvcGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01p
cnJvcmVkKHByb3BlcnRpZXMuaXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGll
cy5yb3RhdGlvbikKKyAgICAsIG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCit7Cit9CisKK1JlbW90
ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgcmVsZWFz
ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIHdyaXRlKCkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRl
b0ZyYW1lV3JpdGVSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVW
aWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRp
bWUgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4geyBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlw
ZSwgeyB9IH07Cit9CisKK01lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm90YXRpb247
Cit9CisKK2Jvb2wgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pc01pcnJvcmVkOworfQorCit1aW50MzJfdCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1v
dmUgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJh
bWU+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVh
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZl
cmVuY2UmJiByZWxlYXNlV3JpdGUpCit7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUoV1RGTW92ZShyZWxl
YXNlV3JpdGUpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTM1MWRlNDUyOTgyYWViZjE2ZDM4ZTBiZTg1MjMyZTcwNjAyNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworLy8gQSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lIGNsYXNzIHRoYXQgcG9pbnRzIHRvIGEgY29uY3JldGUgV2ViQ29y
ZTo6VmlkZW9GcmFtZSBpbnN0YW5jZQorLy8gaW4gYW5vdGhlciBwcm9jZXNzLCBHUFUgcHJvY2Vz
cy4KK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpW
aWRlb0ZyYW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZW1vdGVWaWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIHN0cnVjdCBQ
cm9wZXJ0aWVzIHsKKyAgICAgICAgLy8gVGhlIHJlY2VpdmVyIG93bnMgdGhlIHJlZmVyZW5jZSwg
c28gaXQgbXVzdCBiZSByZWxlYXNlZCB2aWEgZWl0aGVyIGFkb3B0aW9uIHRvCisgICAgICAgIC8v
IGBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmNyZWF0ZSgpYCBvciB2aWEgYFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6cmVsZWFzZVVudXNlZCgpYC4KKyAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlIHJlZmVyZW5jZTsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWU7CisgICAgICAgIGJvb2wgaXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90
YXRpb24gcm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNvcmU6
OkludFNpemUgc2l6ZTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7Cisg
ICAgfTsKKworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVW
aWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CisKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVj
dGlvbiYsIFByb3BlcnRpZXMmJik7CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGVuZC1wb2ludHMg
dGhhdCBjYXB0dXJlIGNyZWF0aW9uIG1lc3NhZ2VzIHRoYXQgYXJlIHNlbnQgZnJvbSBHUFVQIGJ1
dAorICAgIC8vIHdob3NlIGRlc3RpbmF0aW9ucyB3ZXJlIHJlbGVhc2VkIGluIFdQIGJlZm9yZSBt
ZXNzYWdlIHdhcyBwcm9jZXNzZWQuCisgICAgc3RhdGljIHZvaWQgcmVsZWFzZVVudXNlZChJUEM6
OkNvbm5lY3Rpb24mLCBQcm9wZXJ0aWVzJiYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94
eSgpIGZpbmFsOworCisgICAgUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0OworICAgIFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0
OworICAgIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAg
IFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworCisgICAgLy8gV2ViQ29yZTo6VmlkZW9G
cmFtZSBvdmVycmlkZXMuCisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBm
aW5hbDsKKyAgICBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Ok1lZGlhU2FtcGxlVmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOwor
ICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3
aWxsIG5vdCBiZSBuZWVkZWQuCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1T
YW1wbGUoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29u
c3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29u
bmVjdGlvbiYsIFByb3BlcnRpZXMmJik7CisgICAgc3RhdGljIHZvaWQgcmVsZWFzZShJUEM6OkNv
bm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICBzdGF0
aWMgaW5saW5lIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIGNvbnN0
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBSZW1vdGVWaWRlb0ZyYW1l
UmVmZXJlbmNlVHJhY2tlciBtX3JlZmVyZW5jZVRyYWNrZXI7CisgICAgY29uc3QgTWVkaWFUaW1l
IG1fcHJlc2VudGF0aW9uVGltZTsKKyAgICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKKyAgICBj
b25zdCBWaWRlb1JvdGF0aW9uIG1fcm90YXRpb247CisgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSBtX3NpemU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IGlzTWlycm9y
ZWQKKyAgICAgICAgPDwgcm90YXRpb24KKyAgICAgICAgPDwgc2l6ZTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlBy
b3BlcnRpZXM+IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJl
bmNlPiByZWZlcmVuY2U7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlv
blRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc01pcnJvcmVkOworICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9Sb3RhdGlvbj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisg
ICAgICAgID4+IGlzTWlycm9yZWQKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+
PiBzaXplOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBX
VEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAq
c2l6ZSB9OworfQorCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZVByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1l
ZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBs
ZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZl
NjA4MjM5NDYyYWE0MDQ4Y2I3ZDNmYTAzNDJlOThiNTc1Li43Nzk5YTMwNjFjZDVlMDVlMmJmNDJm
NTdkMWM2YmM0ZGQ4NDg1OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHku
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAt
NDksMTIgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXImIG1hbmFnZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Q2xpZW50JiBjbGllbnQpCiAgICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Y2xpZW50KQorICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5h
Z2VyKQotICAgICwgbV9jb25uZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1h
bmFnZXIuYWRkTGF5ZXIoKnRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcg
QEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5n
JiYgbG9nSWRlbnRpZmllcikKIAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVj
dEdQVVByb2Nlc3NDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VM
YXllciB7IG1faWRlbnRpZmllciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBt
X21hbmFnZXItPnJlbW92ZUxheWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTEgQEAgdm9pZCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVt
b3RlVmlkZW9GcmFtZVByb3h5PihzYW1wbGUpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBs
ZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OkVucXVldWVTYW1wbGUgeyByZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tG
b3JJT1N1cmZhY2U6Ok5vKTsKICAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBA
IC0xNDgsNyArMTU1LDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6RW5xdWV1ZVNhbXBsZSB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6RW5xdWV1ZVNhbXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBs
ZXMoKQpAQCAtMTcxLDExICsxNzgsMTggQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OnNldERpZEZhaWwoYm9vbCB2YWx1ZSkKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKICAg
ICBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIuZGlzYWJsZSgpOworICAgIGRpc2Nvbm5lY3RHUFVQ
cm9jZXNzQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJT
dGF0dXNEaWRGYWlsKCk7CiB9CiAKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNj
b25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdw
dVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LCBudWxscHRyKSkKKyAgICAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgq
dGhpcyk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4
IDU2MzY5YWRkZjBhYmYzNDZiMGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5
NDQzMjExMTNlNjlkMjZiMTJiMjU1YmZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
CkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyCiAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwg
V2ViQ29yZTo6SW50U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7
CkBAIC03Niw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwog
ICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBH
UFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRy
PFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjdhNjdhYTgzMTM0MjU1YTJiMGFmNjNiYjQzY2YyMGFiN2Y2
MWQ4MS4uYWM3ZDE2ZDJmMDliYWUzNTg5Y2EwMmYxYzU0Y2EwNDZhMzAzOWVmOSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2Fw
dHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBH
UFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYw
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TYW1wbGVNYXAuY3BwOgorCiAyMDIyLTAyLTEwICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4
OTUyNS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0
ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi41ZDc0MTUyMWFkYjU5OGE4MmZhODFlMTg5NTE3MzllZDBi
MjU5NzhkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysr
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAo
TWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFi
bGVSZXBseQogI2VuZGlmCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19M
QVlFUl9XQykKKyAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJv
bm91cworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2Vu
ZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBA
IC0xMDQsNiArMTA3LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90
UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4g
KCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5
bmNocm9ub3VzCiAgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBs
YXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFy
Z2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9y
bWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+
IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRp
ZXMpIFN5bmNocm9ub3VzCisjZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5n
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZl
bnQpCiB7fQogfX0KQEAgLTIzMiw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRh
aW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAg
ICAgICAgIHJldHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwg
dGVtcGxhdGVzIGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250
YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBp
biBbJ1JlZlB0cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAg
ICAgcmV0dXJuIE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBA
IC02NDAsNyArNjQ2LDEzIEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0
KToKICAgICAgICAgICAgICAgICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28u
dHlwZV0KICAgICAgICAgICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUs
IGNwcF90eXBlX2NvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0
X2lwY190eXBlLCBvLm5hbWUgKyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2Nh
bGxfc3RtdHMgKz0gW2Yie3N0cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAg
ICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLnByZV9jYWxsX3N0bXRzICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2Vs
eSB0aGlzIGNyZWF0ZXMgYSBkYW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9
IHsgeyB9IH07LgorICAgICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2Fs
bF9zdG10cyArPSBbZiJ7c3RyKHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0K
KwogICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYu
bmFtZSldCiAgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAg
ICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUo
InNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3
ZjA0OGQyODgxNTdhZGZkYzFiOC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2
NjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBs
ZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1h
cC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1
cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJp
bmcgdHJhY2tJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQg
c2V0VHJhY2tJRChjb25zdCBTdHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJh
Y2tJRDsgfQogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2l6ZUluQnl0ZXM7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0
YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGlt
ZSArPSBvZmZzZXQ7IG1fZGVjb2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNv
ZGVUaW1lLCBtX2R1cmF0aW9uLCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElz
Tm9uRGlzcGxheWluZykpOwogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0K
KyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlv
bmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA0ZTEwOTc4ZmQ0MzdhYTFlMGFjNjRiZmFhOGI4NGE0ZjQ3YTA4YjM5Li43ZmNmYjAxNTIy
MDgzN2M0ZDgwZjYxYTJjMmVlYzZlNzAxOTNmNjQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjItMDItMTEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgYSBSZW1vdGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJl
ZCB2aWRlbyBmcmFtZXMgdXNlZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcHR1cmVk
IFdlYkdMIHRvIGFub3RoZXIgY29udGV4dDJkIG9yIFdlYkdMIG5vdCBpbXBsZW1lbnRlZCB5ZXQs
IG1hcmsgZmV3IHRlc3RzIGFzIHRpbWluZyBvdXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIyLTAyLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVGFiIGNoYXJhY3RlcnMgYW5kIGNoIHVuaXRzIGRvIG5vdCBv
YmV5IHN5bnRoZXRpYyBib2xkIHdpZHRoIGFkanVzdG1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZlZjMyMmMzNjhm
MDFmZWY3ZjVmZWJmZmMwOTJkYzZlODE1NTJhY2YuLjc3NjhhN2EwNDdlYjJiYjE4MjE5ZGZhNGE3
YThiNTYyYWNjNzJlNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTIyMjAsNCArMjIyMCw3IEBAIHdlYmtpdC5vcmcvYi8yMzQ1MzYgd2Vi
eHIvaGlnaC1wZXJmb3JtYW5jZS5odG1sCiB3ZWJraXQub3JnL2IvMjM0NTM2IGZhc3QvbWVkaWFz
dHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy0xLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3Jn
L2IvMjM0NTM2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy0yLmh0bWwg
WyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMjM0NTM2IHdlYmdsL21heC1hY3RpdmUtY29udGV4dHMt
d2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQuaHRtbCBbIFRpbWVvdXQgXQotd2Via2l0
Lm9yZy9iLzIzNDUzNiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0
LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJr
aXQub3JnL2IvMjM0NTM2IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQorCisjIENhcHR1cmVkIFdlYkdMIHRvIGFub3RoZXIg
Y29udGV4dDJkIG9yIFdlYkdMIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCit3ZWJraXQub3JnL2IvMjM2
NDk2IGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgVGltZW91
dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI3ODZkYWM3MTVjYTFiYmVhMDRhOTQ0ZWQw
NTkxNmRlOTIwZmY3YTIuLjQwMTIzMjAzYjYxOGM2MmJiMTI1NWM0Mzk2MDI0NWMwYWY0YmNiMWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE2NzcsMyArMTY3Nyw2IEBAIGh0dHAvd3B0L2h0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2Vt
YW50aWNzL3RoZS1hLWVsZW1lbnQvYS1kb3dubG9hZC1jbGljay00MDQuCiAKICMgcmRhcjovLzg2
MDM3NDE3IFdpbmRvd1NlcnZlciByZXR1cm5lZCBub3QgYWxpdmUgd2l0aCBjb250ZXh0Oix1bnJl
c3BvbnNpdmUgd29yayBwcm9jZXNzb3IocykKIFsgTW9udGVyZXkrIF0gaHR0cC90ZXN0cy9tb2Rl
bC9tb2RlbC1kb2N1bWVudC5odG1sIFsgU2tpcCBdCisKKyMgQ2FwdHVyZWQgV2ViR0wgdG8gYW5v
dGhlciBjb250ZXh0MmQgb3IgV2ViR0wgbm90IGltcGxlbWVudGVkIHlldC4KK3dlYmtpdC5vcmcv
Yi8yMzY0OTYgZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwgWyBU
aW1lb3V0IF0K
</data>
<flag name="commit-queue"
          id="478472"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451669</attachid>
            <date>2022-02-11 03:36:30 -0800</date>
            <delta_ts>2022-02-11 05:58:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220211133628.patch</filename>
            <type>text/plain</type>
            <size>127614</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiMmJhZDVkMTM0ZDY1
Mjk2ZjkxMjUxNWY2ZTQ1OTkzZmFjZTcxNS4uMzFlMjU4YWU4M2U5YzVlYWVmNDUzZTA2ZTlkMGQ1
NmZhNTg1Yjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWIg
Y2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGgg
YWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwNzc4OWY3N2Q1ZGYwYTAwMzU1NjE1
ZTEwMzE3YmUzZWQxOTA0N2UuLmJiZWMxZmI2NzM3MTRhMTFmZmJhZjUzN2IzYjRlMDE0Njc5ZTVm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkyIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAg
LSBGb3Igbm93LCBjcmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5j
aHJvbm91cyBtZXNzYWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgZG9lcyBub3QgbmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRv
IHRoYXQsCisgICAgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFk
cyBhbmQgdGh1cyB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgIGZvciB0aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0
IG9wZXJhdGlvbiBpcyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5u
b3QgYmUgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9s
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisg
ICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQg
dGhlIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJl
ZCBjb250ZW50IHNob3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICBBdCB0aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBjYW5ub3QgcGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1
bWVudCBDU1MgcGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisg
ICAgICAgIEdQVVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFw
cGluZworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4g
Q3VycmVudGx5IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEg
cmVtb3RlIE1lZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisK
KyAgICAgICAgVGhlIEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaXM6CisgICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB0aHJlYWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciB0aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAg
ICBBbGwgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0
byB0aGVpciBkZXN0aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCBy
ZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBt
ZXNzYWdlIHRvIGNyZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2
ZWQuCisKKyAgICAgICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVh
ZGVycy13cml0ZXJzIHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFz
c2VzOgorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAg
LSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZp
ZXMgdGhlIG9iamVjdC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlk
ZW50aWZpZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVu
dGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVm
ZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0g
bWVhbnM6CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2
ZXJzaW9uIDAuIENyZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGlu
aXRpYWwgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3Jp
dGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmll
ciAxLCB2ZXJzaW9uIDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUg
dmVyc2lvbiA9IDMzIgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRl
Y2xhcmVzIGEgcmVhZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29u
dGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1w
bGVzOgorICAgICAgICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVy
IDEsIHZlcnNpb24gMzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0
aW9ucyBhcmUgV3JpdGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5j
ZXMuCisKKyAgICAgICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0
ZXMgd3JpdGUgYW5kIHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3Mg
KFdlYkNvbnRlbnQgcHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmpl
Y3RIZWFwIHJlc29sdmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFs
IG9iamVjdCBwcm9jZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3
cml0ZXMgYXJlIGJsb2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5Ogor
ICAgICAgICAgLSBSZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9j
a3MgdW50aWwgdGhlIHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUg
b2YgbmV3IHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBo
YXZlIHJldGlyZWQsIG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAg
IG9mIHRoZSBjb250ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAg
ICAgIEluIHRoaXMgY29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBhcmUgaW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBk
YXRlIG9yCisgICAgICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICho
ZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
cldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJl
ZFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6cmVh
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyOjp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNo
PFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAgICAo
V1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+Ojpl
cXVhbCk6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6OlJl
ZmVyZW5jZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgorICAg
ICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6
OkhlbGRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBs
ZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg6CisKIDIwMjItMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gQnViYmxld3JhcExhdW5jaGVyIGxlYWtz
IEQtQnVzIHByb3h5IHNvY2tldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1
MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIuLjgwNTAwMTNlZDY1ZjQwYzg4ZjA0MzYxMjc4MDI1
ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL1VzZXJBZ2Vu
dC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCiAgICAgcGxh
dGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisgICAgcGxhdGZvcm0vVmlkZW9GcmFtZS5oCiAgICAg
cGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9WaWRlb1NhbXBsZU1l
dGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlmNGFiMzNhOGJkNzVlN2E1OGEuLjYxNDJkMjQzZGIy
ODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTI2LDYg
KzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAogcGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9XaWRnZXQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uMTY0ZTUy
YWU1NWYyNDNmMjU0NWQwOTMwNjQ5ODk4ZGM3NzU0NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwNyw2ICsyNDA3LDcg
QEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThGQzUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjVBM0RBRjI3QUJG
OEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYw
OTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTUyMCw2ICsxMTUyMSw4IEBACiAJCTdCMTYxOTEwMjcxOTg4
MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0
MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb0ZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3
IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MjBCMEEyNzQzREJB
NjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMTUxLDYgKzMwMTU0
LDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCiAJ
CQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJs
ZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAq
LywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAogCQkJ
CTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJ
CQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAgLyogVmlkZW9TYW1wbGVNZXRhZGF0YS5oICovLAog
CQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwICovLApAQCAtMzc4MjcsNiArMzc4MzIsNyBAQAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQz
N0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQgLyog
VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAx
QzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIy
NjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLmI0ZmU3MTY1NzlmZjhlN2ZjMzQwZDg3
Y2M4OTJmMWJiYjRiMGQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApA
QCAtNDksOSArNDksMTAgQEAgc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAgICAgICAgQ01TYW1w
bGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1wbGVUeXBlLAogICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCAvLyBG
SVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgog
ICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1w
bGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CiAgICAg
ICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVyOwogICAgICAgICBHc3RTYW1wbGUq
IGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZiwgQ01G
b3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxlOwpAQCAtNjYsNyArNjcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF0
b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2tJ
RChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBIYXNTeW5jSW5mbyA9
IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgPSAwOwogCiAg
ICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGU4MTZlY2Qw
OGNiOTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitWaWRlb0ZyYW1lOjp+VmlkZW9GcmFtZSgp
ID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK01lZGlh
VGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFj
a0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJDb3JlOjpGbG9hdFNp
emUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjpwYWlyPFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+IFZpZGVvRnJh
bWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKK30KKworUmVm
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKworTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdz
IFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNh
bXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFu
Z2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92
ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3Yjg0NzcxNDFlMDVm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyBhIHZpZGVvIGZyYW1lIGZyb20g
YSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxhci4KKy8vIEZJWE1FOiBDdXJyZW50
bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVydHMgZnJvbSBNZWRpYVNhbXBsZSB1
bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVycmluZyB0byBNZWRpYVNhbXBsZQorY2xh
c3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JU
IFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBp
bnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgorICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRy
PE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRl
eCBjMTI2YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45YmY0YjBiOGQ1YzQ4
MWE1MzRmZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzM0LDYgKzMz
NCw5IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJhY2sgb2YgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAoIWlzPE1lZGlhU2Ft
cGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVU
b0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7
CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1
ZWUyN2M3OGEyMGQ1OTU1Li41MTI2OTZhMTNhYzcyYWM4OGY4MDA4NjU2MmUzMTEwNDVjNDFhYzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODcsNiArOTg3LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVy
Lm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogRG9lcyBub3Qg
Y3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgorICAgIGlmICghaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQog
ICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2NjEyMWU3YzZmYjUxZGYy
Zjc3MWMxLi43YmU3MzUxZTViYWE3ZDIxZTYzZmM0OTlhMjcxMjM1ZWNmNGZiOWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNTQsMTMgKzU0LDEy
IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0K
LSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0g
aWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CkBAIC05NywzICs5Niw3IEBAIHByb3RlY3RlZDoKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1
ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2VkZWE1NWRmZTQyOTUz
YzJjOWJmMmYyNjllYTEzYzQ2YzNiLi5hM2EzMTU2YmZiYTBjYTc5OTFmNjZkZDNlZjI0YzMyNDRk
MGUzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0
ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVT
aXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6
OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0g
bV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlhNjIzOGU1MWRmOGYw
ZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2MzViZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVUeXBlLCB7IC5nc3RT
YW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2
NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5YTRmOTEwYjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVi
bGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxSZWZQ
dHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFU
aW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9
OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJp
ZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJ
bWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uNGFj
NjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHByaXZhdGU6CiAgICAg
TWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kZWNv
ZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0
IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQogICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4
Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkg
Y29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1vY2tN
ZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxl
IHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9
IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ZjRjNzgxODE4
MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLmRjNGQzMWNmNmY0ODVmODExMGZkOTlhMGE0
M2FhNzk0MTY0MjhlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKIAogICAg
IEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZjkyNzVmZjYxMzhjNDkxNDY5MGFjMGEwOWVkYzE2MGFjZTA5YWJmNS4uMGQ0ZGZkMTJjZTlj
ZjZhYTcyMGRhODU4MjJiODFkOWJlNDdhOGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDkyZDIwNjA5OTM0MTc3YWVj
OTdlODg2YzY2Y2U4ZDkxMzc4MjQwODMuLjI3MjJkM2M0MGFjNjFhMDNmYmU3Zjg1MWY4NGMxZDFk
ZWZmN2NkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtMzgxLDYgKzM4MSw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjllNGM4NDY2MzQ1YjMzOTgzZGU3NDgyODdiOTQxNTQ2
NDdmMjliZC4uYjdjODkzZDBlMTUwYzUyOThlYjE0YjE4NzhmM2E1NDc0YTkzZTYxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzAwLDYgKzMwMCw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNl
Li4xMDM5MzllODMzMjYxNmQwZmVkNTc0ZTRjMmUyYWM5YWJiZTk2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNz
JiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1h
bmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0Fy
Yml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0
ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdl
cy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJh
bWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlm
Ci0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAu
cmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyBy
ZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVt
LgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDYgKzk0
NywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1
dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uOTk2ZjU0
ZjNjODQ5NTBmNWUwZTdmMDI0YzQ3NTRhMzNlYWY0OGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiAr
MTA2LDEwIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKwog
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dApAQCAtMTQxLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxv
d3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQog
ICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c1ZpZGVv
Q2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFs
c2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVz
ZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uZTlhMTA1MWUwMzA3
Mzk2NDI2NTVjZmQ3YTIxNTgxNDBjYTNiOWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xD
Vi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBX
VEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkp
KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIy
Myw2ICsyMzAsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBpeGVsQnVm
ZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50
aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM+IHJlc3VsdDsKKyAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9jb250ZXh0
LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKSB7CisgICAgICAgIGF1dG8g
d3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRlRm9yQWRkKCk7
CisgICAgICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJlbmNl
KCk7CisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhX
VEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnZpZGVvRnJhbWUpOworICAgICAgICBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUodmlkZW9GcmFt
ZSksIHN0ZDo6bnVsbG9wdCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmMyMzZk
OTJiZWU4Yzg1N2M5YjVjNDM2NmRkZTYzZjI5OWVmOWViMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY2LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nl
c3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0
R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNiw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4mJik+JiYpOworI2VuZGlmCiAgICAgdm9pZCBj
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQz
Ml90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQxLDkgQEAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQg
V1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNT
IFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThl
MzAyYjIuLjQwMzNjMzAwZDU1NTgyMjhkMjA1MjlmYzI2ZDhlMWFhNGNhZWJmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewog
ICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZv
aWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENv
cHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMKKyNlbmRp
ZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTk1ZjdhYmVlZDQ2M2Vk
NTJiY2QxYmYxOWFlY2IyNDEyNTNlZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoJmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVj
dGlvbikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBpZiAo
YXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBudWxscHRyKSkgeworICAgICAgICBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
OworICAgICAgICAvLyBDbGllbnRzIG1pZ2h0IGhvbGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlz
IGhhcHBlbnMuIFRoZXkgc2hvdWxkIGFsc28gc3RvcCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBk
byBub3QsCisgICAgICAgIC8vIGF2b2lkIGJpZyBtZW1vcnkgbGVha3MgYnkgY2xlYXJpbmcgdGhl
IGZyYW1lcy4gVGhlIGNsaWVudHMgc2hvdWxkIGZhaWwgZ3JhY2VmdWxseSAoZG8gbm90aGluZykg
aW4gY2FzZSB0aGV5IGZhaWwgdG8gbG9vayB1cAorICAgICAgICAvLyBmcmFtZXMuCisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5n
LgorICAgIH0KK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZp
ZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAg
YXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1v
dmUod3JpdGUpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWQzN2ZkZDRlYTdlNjg3OWViNDM1YTAyZThmNDJhNjYwZGQ0ZDBhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRocmVhZFNhZmVP
YmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwgVmlk
ZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8gR1BV
IHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVj
aWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZp
ZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUg
aXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBW
aWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0
aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUg
bWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRs
eSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9iamVj
dEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisgICAg
dm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4m
JiByZWZGcm9tQ29ubmVjdGlvbik7Citwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisgICAg
dm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7
CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAgIGNvbnN0IFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBUaHJlYWRBc3NlcnRpb24gbV9j
b25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworfTsKKworCisKK30KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNzhjZTNk
MDM5ZGJlMTczMWQ1YWY2YzhlNDk5MTBhMzk1MmE3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
K21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgewor
ICAgIFJlbGVhc2VWaWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJl
bmNlIGlkZW50aWZpZXIpCit9CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZiN2U3ZTVlMGRi
YWJhMDgyMzFiYjhiNzhmOWJiZjBjMC4uYmY0NjFjZGZmOGFkZDYxNGRmYjBlYmYxNDkzOTNlNGVh
NWMzYWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lmg+CkBAIC0zNSwxOCArMzcsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2Ft
cGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRl
ZmF1bHRUaW1lb3V0IHsgMzBfcyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVyID0g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
KSk7CisgICAgYXV0byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI+KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29ubmVj
dGlvbiwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBsYXll
ci0+bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxwdHI7
CiB9CiAKLVJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCitSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVD
b25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwg
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhl
YXAoKSkKIHsKICAgICBBU1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpAQCAt
MTEzLDcgKzExOSwyMyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1
c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lk
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRl
b1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgc2FtcGxl
KQoreworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRp
cmUoV1RGTW92ZShzYW1wbGUpLCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFtZWRpYVNhbXBs
ZSkgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUpKSB7Cisg
ICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigq
bWVkaWFTYW1wbGUpOworICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRp
YXRlbHkoYXZmTWVkaWFTYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmIHJlbW90ZVNhbXBsZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKICAg
ICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oCmluZGV4IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgyN2QwYTZmN2QyNTJhYTdhMGQuLjgw
MmM5MGZlOWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDsKQEAgLTQyLDExICs0NCwxMyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBs
ZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogCiBjbGFzcyBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7
CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOwogCiAgICAgdXNpbmcgV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpA
QCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nSWRlbnRp
ZmllcihTdHJpbmcmJik7CkBAIC03Myw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVz
aEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwot
ICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAg
ICB2b2lkIGVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7Cisg
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAg
ICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVv
RnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTg1LDEyICs5
MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWls
KCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VU
cmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3No
YXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVU
aHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZlZmFmYjQzZGNh
NjA4Y2RjMzdkNjIxNmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4OWI2NDYzMmFi
YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMu
aW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQog
ICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1ZXVlU2FtcGxl
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVlU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ugc2FtcGxlKQorICAgIEVucXVldWVT
YW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgQ2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVjY2JiNWFkMDBj
ZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2RkM2U1ZTcxOTc1
YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwog
ICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklk
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92
ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2VhYzQxYTYuLjIy
NGJmZmY2ZjhlNmJiZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYgKzM0Nyw5IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJj
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZScsCisg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJywKICAgICAgICAg
J1dlYktpdDo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCkBAIC04ODMsNiArODg2LDggQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0
dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9u
QW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIn
XSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJzogWyci
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6VGFwSWRl
bnRpZmllcic6IFsnIklkZW50aWZpZXJUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5jcHAKaW5kZXggYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNhYTNkODgwMTAyZjU3Yzg5YS4uYThk
MjU3ZWM2NzM1ZjEwZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxkbGZj
bi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00OCw2ICs0
OSw4IEBAIHN0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewogICAgIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsKIH07CisKK3N0
YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQQ1Rlc3RzIHsgMCB9OwogfQogCiBl
eHRlcm4gIkMiIHsKQEAgLTExNSw3ICsxMTgsOSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RhcnRNZXNz
YWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmluZyYmIGRyaXZlcgog
ICAgIGlmICghbV90ZXN0UXVldWUpCiAgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0
Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91
bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgb25nb2luZ0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1bk1lc3NhZ2VUZXN0aW5nKGNvbm5l
Y3Rpb24sIHNob3VsZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFtZSkpOworICAgICAgICBvbmdvaW5n
SVBDVGVzdHMtLTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDYgKzEzOSwxMSBAQCB2b2lkIElQQ1Rl
c3Rlcjo6c3RvcElmTmVlZGVkKCkKICAgICB9CiB9CiAKK2Jvb2wgaXNUZXN0aW5nSVBDKCkKK3sK
KyAgICByZXR1cm4gb25nb2luZ0lQQ1Rlc3RzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuaAppbmRleCA0NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJlY2ZkM2I4NDcx
ODVlLi5lYTQ5MzM1NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRmNjUzMzI3ZmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9JUENUZXN0ZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlIDxhdG9taWM+CkBAIC0zMyw2ICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBD
KCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkg
aGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisKKy8vIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0aW5nIElQQy1yZWxhdGVkIGZhaWx1
cmVzLCBzbyB0aGF0IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBhc3NlcnRpb25zCisvLyBhbmQgZXhw
b3NlcyBidWdzIHVuZGVybmVhdGguCitib29sIGlzVGVzdGluZ0lQQygpOworCiBjbGFzcyBJUENU
ZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAg
IElQQ1Rlc3RlcigpOwpAQCAtNTIsNiArNTksMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OwogfTsKIAorI2Vsc2UKKworY29uc3RleHBy
IGlubGluZSBib29sIGlzVGVzdGluZ0lQQygpCit7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAj
ZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI2OGNlNWNmZjFiZTM0ZjQ4Yzky
YWM0MTA4YjJhYTFlMDJkYzdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKQEAgLTAsMCArMSwyMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNp
bmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gVHlwZSBmb3IgdGhlIGtleSBpbiBtYXBwaW5nIGZyb20gb2JqZWN0IGlkZW50
aWZpZXIgcmVmZXJlbmNlcyB0byBvYmplY3Qgc3RhdGUuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Y2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICB7CisgICAg
fQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlcnNpb247IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9p
ZGVudGlmaWVyID09IG1faWRlbnRpZmllciAmJiBvdGhlci5tX3ZlcnNpb24gPT0gbV92ZXJzaW9u
OworICAgIH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsK
KyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVy
OworICAgICAgICBlbmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFQ+IGlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNp
b247CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lv
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsg
V1RGTW92ZSgqaWRlbnRpZmllciksICp2ZXJzaW9uIH07CisgICAgfQorcHJpdmF0ZToKKyAgICBU
IG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+OworICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKFJlZmVyZW5jZSByZWZlcmVu
Y2UpCisgICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsKKyAgICB9CisgICAg
VCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UuaWRlbnRpZmllcigpOyB9
CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLnZlcnNp
b24oKTsgfQorICAgIFJlZmVyZW5jZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
ZW5jZTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWZlcmVu
Y2U7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7
CisgICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlOworICAgICAgICBpZiAoIWRlY29kZXIuaXNW
YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSB9Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+OworICAgIHN0YXRpYyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4gZ2VuZXJh
dGVGb3JBZGQoKSB7IHJldHVybiB7IHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIDAgfSwgMCB9
OyB9CisKKyAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVy
ZW5jZSwgdWludDY0X3QgcGVuZGluZ1JlYWRzKQorICAgICAgICA6IG1fcmVmZXJlbmNlKHJlZmVy
ZW5jZSkKKyAgICAgICAgLCBtX3BlbmRpbmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAg
IH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5pZGVudGlm
aWVyKCk7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVu
Y2UudmVyc2lvbigpOyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1
cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2U7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJl
dGlyZWRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiB7IGlkZW50aWZpZXIoKSwgdmVyc2lvbigp
ICsgMSB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVy
ZW5jZTsKKyAgICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBlbmRpbmdSZWFkczsKKworICAgICAgICBkZWNvZGVyID4+IHJlZmVy
ZW5jZQorICAgICAgICAgICAgPj4gcGVuZGluZ1JlYWRzOworICAgICAgICBpZiAoIWRlY29kZXIu
aXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZSB7IFdURk1vdmUoKnJlZmVyZW5jZSks
ICpwZW5kaW5nUmVhZHMgfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmZXJlbmNlIG1fcmVm
ZXJlbmNlOworICAgIHVpbnQ2NF90IG1fcGVuZGluZ1JlYWRzIHsgMCB9OworfTsKKworLy8gQ2xh
c3MgdG8gZ2VuZXJhdGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byBhbiBPYmplY3RJZGVu
dGlmZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZVRyYWNrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2VUcmFja2VyKTsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gT2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2Ug
PSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgUmVmZXJlbmNl
ID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPjsKKworICAgIGV4cGxpY2l0IE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyKFQgaWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyKFJlZmVyZW5jZSByZWZlcmVuY2UpCisgICAgICAgIDogbV9p
ZGVudGlmaWVyKHJlZmVyZW5jZS5pZGVudGlmaWVyKCkpCisgICAgICAgICwgbV92ZXJzaW9uKHJl
ZmVyZW5jZS52ZXJzaW9uKCkpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAg
ICBSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVh
ZHMrKzsKKyAgICAgICAgcmV0dXJuIFJlZmVyZW5jZSB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9u
IH07CisgICAgfQorICAgIC8vIE5vdCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0
ZSB3cml0ZXMgYW5kIHJlYWRzIGFueXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4geyB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKysg
fSwgbV9wZW5kaW5nUmVhZHMuZXhjaGFuZ2UoMCkgfTsKKyAgICB9CisgICAgVCBpZGVudGlmaWVy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBUIG1faWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIHN0ZDo6YXRvbWlj
PHVpbnQ2NF90PiBtX3BlbmRpbmdSZWFkcyB7IDAgfTsKKyAgICBtdXRhYmxlIHVpbnQ2NF90IG1f
dmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFk
ZChIYXNoZXImIGhhc2hlciwgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiByZWZlcmVuY2Up
Cit7CisgICAgYWRkKGhhc2hlciwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSk7CisgICAgYWRkKGhh
c2hlciwgcmVmZXJlbmNlLnZlcnNpb24oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8
PCByZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2Up
Cit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKCIgPDwgcmVmZXJl
bmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIikiOwor
ICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCBy
ZWZlcmVuY2UudmVyc2lvbigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnBlbmRpbmdSZWFkcygpIDw8
ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZTxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlPFQ+PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBIYXNoVHJhaXRzPFQ+OjplbXB0eVZhbHVlSXNaZXJvOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZTxUPj4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVIYXNoKHJlZmVyZW5jZSk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgYSwgY29uc3Qg
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEgPT0gYjsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46OnNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
aHJlYWRTYWZlT2JqZWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMDllNWJhOGE0ODFiMzY1MDE2NzRm
MmUwZWM3OTJkMzg1YTVhODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRBc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBDb250YWluZXIgdGhhdCBob2xkcyBpZGVudGlm
aWVyIC0+IG9iamVjdCBtYXBwaW5nIGJldHdlZW4gdHdvIHByb2Nlc3Nlcy4KKy8vIFVzZWQgaW4g
c2NlbmFyaW9zIHdoZXJlIHRoZSBob2xkZXIgcHJvY2VzcyBwcm9jZXNzZXMgbWVzc2FnZXMgd2l0
aCB0aGUgb2JqZWN0IHJlZmVyZW5jZXMgaW4gbXVsdGlwbGUKKy8vIHRocmVhZHMuIGBUaHJlYWRT
YWZlT2JqZWN0SGVhcGAgdHJhY2tzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIHRo
ZSBjb250ZW50IHBvaW50ZWQKKy8vIGJ5IGEgcGFydGljdWxhciBpZGVudGlmaWVyLgorLy8gUGVu
ZGluZyByZWFkcyBtYXkgYmxvY2sgbmV3IHdyaXRlcy4gQWx0ZXJuYXRpdmVseSBuZXcgd3JpdGVz
IGNhbiBza2lwIGFoZWFkIG9mIHRoZSByZWFkcywKKy8vIGZvciBleGFtcGxlIGluIGNvcHktb24t
d3JpdGUgc2NlbmFyaW9zLgorLy8gUGVuZGluZyB3cml0ZXMgYmxvY2sgcmVhZHMuCisvLyBDdXJy
ZW50bHkgaW1wbGVtZW50ZWQgb25seSBmb3IgcmVhZC1vbmx5IChjcmVhdGUtcmVhZC1kZXN0cm95
KSBvciBjb3B5LW9uLXdyaXRlIHR5cGVzLAorLy8gZS5nLiBubyB0d28tcGhhc2UgZ2V0KCkgb3Bl
cmF0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50
aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgorY2xhc3MgVGhyZWFkU2FmZU9iamVjdEhlYXAgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmll
ciwgSGVsZFR5cGU+PiB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IHR5cGVu
YW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+OjpSZWFkUmVm
ZXJlbmNlOworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OldyaXRlUmVmZXJlbmNlOworICAgIHVz
aW5nIFJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
PElkZW50aWZpZXI+OjpSZWZlcmVuY2U7CisKKyAgICAvLyBXYWl0cyB1bnRpbCBhIHdyaXRlIGNy
ZWF0ZXMgdGhlIHJlZmVyZW5jZSBhbmQgdGhlbiByZXRpcmVzIHRoZSByZWFkIG9yCisgICAgLy8g
dGltZXMgb3V0LgorICAgIEhlbGRUeXBlIHJldGlyZShSZWFkUmVmZXJlbmNlJiYsIElQQzo6VGlt
ZW91dCk7CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBvciBy
ZW1vdmVzIGFuIG9sZCBvbmUgYW5kIHRoZW4gcmV0aXJlcyB0aGUgd3JpdGUgb3IKKyAgICAvLyB0
aW1lcyBvdXQuCisgICAgLy8gSWYgdGltZW91dCBpcyBwYXNzZWQsIHdhaXRzIHVudGlsIHBlbmRp
bmcgcmVhZHMgYXJlIGRvbmUuCisgICAgLy8gSXQgaXMgYSBjYWxsZXIgZXJyb3IgdG8gbm90IHdh
aXQgYW5kIG11dGF0ZSB0aGUgb2xkIG9iamVjdC4KKyAgICB2b2lkIHJldGlyZShXcml0ZVJlZmVy
ZW5jZSYmLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG5ld09iamVjdCwgc3RkOjpvcHRpb25h
bDxJUEM6OlRpbWVvdXQ+KTsKKworICAgIHZvaWQgcmV0aXJlUmVtb3ZlKFdyaXRlUmVmZXJlbmNl
JiYpOworCisgICAgdm9pZCBjbGVhcigpOworcHJpdmF0ZToKKyAgICBMb2NrIG1fb2JqZWN0c0xv
Y2s7CisgICAgQ29uZGl0aW9uIG1fb2JqZWN0c0NvbmRpdGlvbjsKKyAgICBzdHJ1Y3QgUmVmZXJl
bmNlU3RhdGUgeworICAgICAgICB1aW50NjRfdCByZXRpcmVkUmVhZHMgeyAwIH07CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbmFsUmVhZDsgLy8gUmVtb3ZlIGFmdGVyIGBmaW5h
bFJlYWRgIHJlYWRzLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiBvYmplY3Q7IC8v
IE9iamVjdCBvciB0b21ic3RvbmUuCisKKyAgICAgICAgUmVmZXJlbmNlU3RhdGUoKSA9IGRlZmF1
bHQ7CisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRlKEhlbGRUeXBlJiYgb2JqZWN0KQor
ICAgICAgICAgICAgOiBvYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgLy8gVG9tYnN0b25lIGNvbnN0cnVjdG9yLgorICAgICAgICBleHBsaWNpdCBS
ZWZlcmVuY2VTdGF0ZSh1aW50NjRfdCBmaW5hbFJlYWQpCisgICAgICAgICAgICA6IGZpbmFsUmVh
ZChmaW5hbFJlYWQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07CisgICAgSGFzaE1hcDxS
ZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlPiBtX29iamVjdHMgV1RGX0dVQVJERURfQllfTE9DSyht
X29iamVjdHNMb2NrKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVu
YW1lIEhlbGRUeXBlPgorSGVsZFR5cGUgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwg
SGVsZFR5cGU+OjpyZXRpcmUoUmVhZFJlZmVyZW5jZSYmIHJlYWQsIElQQzo6VGltZW91dCB0aW1l
b3V0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgZG8gewor
ICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZpbmQocmVhZC5yZWZlcmVuY2UoKSk7CisgICAg
ICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRl
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLm9iamVjdCkgeworICAgICAgICAg
ICAgICAgIEhlbGRUeXBlIHJlc3VsdCA9ICpzdGF0ZS5vYmplY3Q7CisgICAgICAgICAgICAgICAg
c3RhdGUucmV0aXJlZFJlYWRzKys7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVh
ZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdGUuZmluYWxSZWFkID49IHN0YXRl
LnJldGlyZWRSZWFkcyk7IC8vIFRydXN0ZWQgYXNzZXJ0IGJlY2F1c2UgdGhpcyBpcyBlbnN1cmVk
IG9uIGBmaW5hbFJlYWRgIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5maW5hbFJlYWQgPT0gc3RhdGUucmV0aXJlZFJlYWRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbV9vYmpl
Y3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0LmRlYWRsaW5lKCkp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRU
eXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJl
dGlyZShXcml0ZVJlZmVyZW5jZSYmIHdyaXRlLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG9i
amVjdCwgc3RkOjpvcHRpb25hbDxJUEM6OlRpbWVvdXQ+IHRpbWVvdXQpCit7CisgICAgY29uc3Qg
Ym9vbCB3YWl0Rm9yUGVuZGluZ1JlYWRzID0gdGltZW91dC5oYXNfdmFsdWUoKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9
IG1fb2JqZWN0cy5maW5kKHdyaXRlLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
b2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7Cisg
ICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkICYmIHN0YXRlLm9iamVjdCkgeworICAgICAg
ICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTogYGZpbmFsUmVhZGAgaXMgYXNzaWduZWQgb24gd3Jp
dGUuIENhbm5vdCBoYXZlIHRoZSBzYW1lIHZlcnNpb24gd2l0aCB3cml0ZXMuCisgICAgICAgICAg
ICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA+IHdyaXRl
LnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAgICAgLy8gV3JpdGUgdW5kZXJmbG93OiBt
b3JlIHJlYWRzIGhhdmUgYmVlbiBkb25lIHRoYW4gdGhlIHNlbmRlciBjbGFpbXMgaXMgdGhlIG1h
eGltdW0uCisgICAgICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSXQgaXMgbGlr
ZWx5IGEgY2FsbGVyIGVycm9yIHRvIHRyeSB0byBhZGQgYSBuZXcgcmVmZXJlbmNlIHdpdGggdGhl
IHNhbWUgY2xpZW50IG9iamVjdCB3aXRob3V0CisgICAgICAgICAgICAvLyB3YWl0aW5nIGZvciBw
ZW5kaW5nIHJlYWRzIG9uIHRoZSBvbGQgcmVmZXJlbmNlLgorICAgICAgICAgICAgQVNTRVJUKHdh
aXRGb3JQZW5kaW5nUmVhZHMgfHwgIXN0YXRlLm9iamVjdCB8fCAqc3RhdGUub2JqZWN0ICE9IG9i
amVjdCk7CisKKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVu
ZGluZ1JlYWRzKCkgfHwgIXdhaXRGb3JQZW5kaW5nUmVhZHMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc3RhdGUucmV0aXJlZFJlYWRzIDwgd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLmZpbmFsUmVhZCA9IHdyaXRlLnBlbmRpbmdSZWFkcygpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVh
ZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAg
ICAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlZFJlZmVyZW5jZSgpLCBSZWZl
cmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8m
IG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3Zl
KCpvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRo
ZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJz
dG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9v
YmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRG
b3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAv
LyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5y
ZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAg
ICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZN
b3ZlKHdyaXRlKS5yZXRpcmVkUmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZSgq
b2JqZWN0KSB9KTsKKyAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodGltZW91dCk7
CisgICAgICAgIGlmICghbV9vYmplY3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2Nr
LCB0aW1lb3V0LT5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUg
KHRydWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxk
VHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+Ojpy
ZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJiBvYmplY3QpCit7CisgICAgcmV0aXJlKFdURk1v
dmUob2JqZWN0KSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9i
amVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpjbGVhcigpCit7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBtX29iamVjdHMuY2xlYXIoKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAppbmRleCA0ZGUxZDBl
ZDJhN2JlNDllM2NiYmI5NWUzNzdmNTQ1MDlmYWMwN2FkLi43OGY3MzEzNGNlNmE3YTIxNGNkYzlk
ZTA1YzQ3NTM3MmUxN2M5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgQXRvbVN0cmluZyBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6dHJh
Y2tJRCgpIGNvbnN0CiAgICAgcmV0dXJuIEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrSUQpOwog
fQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUo
KQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBQbGF0Zm9ybVNhbXBsZTo6Qnl0ZVJhbmdl
U2FtcGxlVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKaW5kZXggYjhlNGQ3
NmNlNmYzOTI4NTc2ZTlmYjFlZjk2MmI0MDQ5N2UzZGMzMS4uZjgzMzZiZjAxMzcyMTA5MGRhMTkz
NzhmYjVhNDUzYzhkYWNhNTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBi
eXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQogCiAgICAgQXRv
bVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5
KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjVj
NWJkYzllZjg4NDM3ODgzOTlmYWFjZWU1ZTI5NGU4YWQ5YTZhMy4uNTA4ZGE3YTU3ZWIwMjYyM2E3
MGQwZDFhMThmYjdlN2RmZDkyYmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC03MCw2ICs3MCw3IEBAIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC03NDUsNiArNzQ2LDcgQEAgV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5v
LXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTg4Myw2ICs4ODUsNyBAQCBSZW1v
dGVEZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVRdWVyeVNldE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXVlTWVzc2FnZVJlY2VpdmVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGM2ODE4NWRmOTlhYTc1NzhlNTBiNzIyM2YxMDVkNjk3ZTU3NzM0NC4uM2E4NTRkZDBl
MDkzZWMwM2I4YWExZTczODNiMGNhYmNiMGFkNWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTExLDYgKzUxMTEsMTMgQEAKIAkJ
N0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAvKiBJUENU
ZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREExMjdBN0RDMUEw
MDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMzI3
QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RD
NTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUxMzYsNiArNTE0Myw3IEBACiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVk
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCRERBMzNGMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzNDAyNzU2NTJF
QTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBU
aHJlYWRTYWZlT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRTYWZlT2JqZWN0SGVh
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2
ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4MDAsNiArNjgwOCwxMCBAQAogCQkJCUNEODI1MkQxMjVE
NDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywKIAkJCQlD
RDgyNTJEMzI1RDQ2NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLm1l
c3NhZ2VzLmluICovLAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAvKiBSZW1vdGVSZW1v
dGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTAyN0E3REMxQTAw
NkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTMy
N0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8sCisJCQkJN0I1
QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovLAorCQkJ
CTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZGN0I2RiAvKiBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYyMkYxMTAwRkY3QjZG
IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCkBAIC02ODkwLDYg
KzY5MDIsOCBAQAogCQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDREQzg4MDA5NEZGQjQg
LyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2MjNENERDODgwMDk0
RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEzREE4MjdBN0RDQkMw
MDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCisJCQkJN0I1QTNE
QTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8sCiAJ
CQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94
eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApAQCAtNzI2Nyw2ICs3MjgxLDcgQEAKIAkJCQkxQURD
Qjg2ODE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJ
CTFBRENCODY5MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAog
CQkJCTVDRDc0OEI1MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oICovLAorCQkJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMxN0YxNiAv
KiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwICovLApAQCAtNzMwNyw2ICs3MzIyLDcgQEAKIAkJ
CQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9u
bHkuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0
ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25V
cGRhdGVSZXN1bHQuaCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFk
U2FmZU9iamVjdEhlYXAuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMgLyogVG91
Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFDIC8qIFRv
dWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0EgLyogVG91
Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlMjlmNGJkNTYxMzJlY2Q2
NzE3MWJjMzdjYjJjYzU2MWJlMTI5MzU5Li5iODNjMDcwZDZjNDNmOGQ3MzFlZWU5ODI0MmQzNThj
YzI5OGI4Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAKICNpbmNsdWRlICJVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjZW5kaWYKKwog
I2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCkBA
IC0yMDgsNiArMjEyLDEwIEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24o
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNUykK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4g
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24o
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9TZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQx
M2RhZDliODdiZGVkMGEuLjEyZDMyZTM1ODVmMmZhODE3NGQyYzMxZWM3NDAxY2I1N2NmZGE1ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsNiAr
MzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIyLDIzIEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlOjpSZXBseShyZXN1bHQpKTsKKyAg
ICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSwgV1RGTW92ZSgqcmVzdWx0KSk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZy
b21NZWRpYShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlmMDE5ODcxOTU1OTk4NzkyZWU3Nzk1ZDlh
YTYwYzJmMzk3Mzk3MS4uNWQxY2FiMjE4Zjc4NWNiYTExNDZhODkxMjJiMzBkMTBjYzY4MzA3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTY1LDYgKzY1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKCkgZmluYWw7CisjZW5kaWYKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwogICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdM
T2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggZmY3ZTE0OGQ2YjVl
ZWJhMDI0YTkzZTNlYjIxMjYyYmFiNzIyODA4Yy4uMGI4YmJhMTZjZmVjMTZiMmJhMTg3MTcxYWZk
OWIzYjMxMzFkNjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTksOSArOTgsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKLSNl
bmRpZgogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKQEAgLTExNCwyMCArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKLXsKLSAgICBp
ZiAoIW1fZGlzcGxheUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCi0gICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5
U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNl
LT5zdXJmYWNlKCkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKLX0KLSNlbmRpZgotCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjQyNTAyNjE1ZGEyNzJiM2JmNDZjZjQ2NDk2MWI3ZjhlYjJhMWYxYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXJUeXBlPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcg
UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJh
bWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyID0gT2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDhiYjIyOWIwMjUxZmE4MmQ3NjFlN2JkMzZlMDBjZjcxYTA2MmJlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGll
cyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBXVEZNb3ZlKHJlZmVyZW5jZSksCisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRp
bWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgpLAorICAgICAgICBtZWRp
YVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAgIGV4cGFuZGVkSW50U2l6ZShtZWRpYVNh
bXBsZS5wcmVzZW50YXRpb25TaXplKCkpCisgICAgfTsKK30KKworUmVmUHRyPFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmJiBwcm9wZXJ0
aWVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGNv
bm5lY3Rpb24sIFdURk1vdmUocHJvcGVydGllcykpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQcm9w
ZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZWxlYXNlKGNvbm5lY3Rpb24sIHsgeyBwcm9w
ZXJ0aWVzLnJlZmVyZW5jZS5pZGVudGlmaWVyKCksIHByb3BlcnRpZXMucmVmZXJlbmNlLnZlcnNp
b24oKSB9LCAwIH0pOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb3BlcnRpZXMmJiBwcm9wZXJ0
aWVzKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3JlZmVyZW5jZVRy
YWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3ByZXNlbnRhdGlvblRpbWUocHJv
cGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01pcnJvcmVkKHByb3BlcnRpZXMu
aXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGllcy5yb3RhdGlvbikKKyAgICAs
IG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCit7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6
flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgcmVsZWFzZShtX2Nvbm5lY3Rpb24uZ2V0
KCksIHdyaXRlKCkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlZmVyZW5j
ZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVu
Y2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRpbWUgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcmVzZW50
YXRpb25UaW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBXZWJDb3JlOjpQ
bGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSwgeyB9IH07Cit9CisKK01l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3Rh
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm90YXRpb247Cit9CisKK2Jvb2wgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
c01pcnJvcmVkOworfQorCit1aW50MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4
ZWxGb3JtYXQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJvbSB0aGUgYmFzZSBj
bGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiByZWxlYXNlV3Jp
dGUpCit7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUoV1RGTW92ZShyZWxlYXNlV3JpdGUpKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM1MWRl
NDUyOTgyYWViZjE2ZDM4ZTBiZTg1MjMyZTcwNjAyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBA
IC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworLy8gQSBXZWJDb3JlOjpWaWRlb0ZyYW1l
IGNsYXNzIHRoYXQgcG9pbnRzIHRvIGEgY29uY3JldGUgV2ViQ29yZTo6VmlkZW9GcmFtZSBpbnN0
YW5jZQorLy8gaW4gYW5vdGhlciBwcm9jZXNzLCBHUFUgcHJvY2Vzcy4KK2NsYXNzIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVW
aWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAg
ICAgLy8gVGhlIHJlY2VpdmVyIG93bnMgdGhlIHJlZmVyZW5jZSwgc28gaXQgbXVzdCBiZSByZWxl
YXNlZCB2aWEgZWl0aGVyIGFkb3B0aW9uIHRvCisgICAgICAgIC8vIGBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmNyZWF0ZSgpYCBvciB2aWEgYFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVsZWFzZVVu
dXNlZCgpYC4KKyAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlIHJlZmVy
ZW5jZTsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wg
aXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24geyBW
aWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKKwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0YXRp
YyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNl
JiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CisKKyAgICBzdGF0aWMgUmVmUHRyPFJl
bW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiYsIFByb3BlcnRpZXMm
Jik7CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGVuZC1wb2ludHMgdGhhdCBjYXB0dXJlIGNyZWF0
aW9uIG1lc3NhZ2VzIHRoYXQgYXJlIHNlbnQgZnJvbSBHUFVQIGJ1dAorICAgIC8vIHdob3NlIGRl
c3RpbmF0aW9ucyB3ZXJlIHJlbGVhc2VkIGluIFdQIGJlZm9yZSBtZXNzYWdlIHdhcyBwcm9jZXNz
ZWQuCisgICAgc3RhdGljIHZvaWQgcmVsZWFzZVVudXNlZChJUEM6OkNvbm5lY3Rpb24mLCBQcm9w
ZXJ0aWVzJiYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAg
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkludFNpemUg
c2l6ZSgpIGNvbnN0OworCisgICAgLy8gV2ViQ29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisg
ICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBWaWRlb1Jv
dGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpZGVvTWlycm9y
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
VmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBXaGVu
IFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQu
CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5h
bDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbiYsIFByb3BlcnRp
ZXMmJik7CisgICAgc3RhdGljIHZvaWQgcmVsZWFzZShJUEM6OkNvbm5lY3Rpb24mLCBSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciBt
X3JlZmVyZW5jZVRyYWNrZXI7CisgICAgY29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGlt
ZTsKKyAgICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKKyAgICBjb25zdCBWaWRlb1JvdGF0aW9u
IG1fcm90YXRpb247CisgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJv
cGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IGlzTWlycm9yZWQKKyAgICAgICAgPDwgcm90
YXRpb24KKyAgICAgICAgPDwgc2l6ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlPiByZWZlcmVuY2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpc01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlv
bj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHNp
emU7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisgICAgICAgID4+IGlzTWlycm9y
ZWQKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+PiBzaXplOworICAgIGlmICgh
ZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3ZlKCpwcmVzZW50YXRp
b25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSB9OworfQorCit9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBX
ZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZlNjA4MjM5NDYyYWE0MDQ4Y2I3
ZDNmYTAzNDJlOThiNTc1Li43Nzk5YTMwNjFjZDVlMDVlMmJmNDJmNTdkMWM2YmM0ZGQ4NDg1OGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFn
ZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50JiBjbGllbnQpCiAg
ICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQorICAgICwgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV9jb25u
ZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRo
aXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRD
bGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlh
bGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYgbG9nSWRlbnRpZmllcikK
IAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0
aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VMYXllciB7IG1faWRlbnRpZmll
ciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnJlbW92ZUxh
eWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTEgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9w
YXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5
PihzYW1wbGUpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRvd25jYXN0PFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyBy
ZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
c2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsK
ICAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBAIC0xNDgsNyArMTU1LDcgQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZSB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQpAQCAtMTcxLDExICsx
NzgsMTggQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldERpZEZhaWwoYm9vbCB2
YWx1ZSkKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlv
bkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKICAgICBtX3NoYXJlZFZpZGVvRnJh
bWVXcml0ZXIuZGlzYWJsZSgpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklm
TmVlZGVkKCk7CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWlsKCk7CiB9
CiAKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNjb25uZWN0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3NDb25uZWN0aW9u
ID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkKKyAgICAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDU2MzY5YWRkZjBhYmYzNDZi
MGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5NDQzMjExMTNlNjlkMjZiMTJi
MjU1YmZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Q2xpZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
Zk5lZWRlZCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiAg
ICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC03Niw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwogICAgIGJvb2wgY29weVNoYXJl
ZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlv
biogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRyPFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNjdhNjdhYTgzMTM0MjU1YTJiMGFmNjNiYjQzY2YyMGFiN2Y2MWQ4MS4uYWM3ZDE2ZDJmMDli
YWUzNTg5Y2EwMmYxYzU0Y2EwNDZhMzAzOWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAu
Y3BwOgorCiAyMDIyLTAyLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTUyNS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZi
MTgxLi41ZDc0MTUyMWFkYjU5OGE4MmZhODFlMTg5NTE3MzllZDBiMjU5NzhkIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0j
aWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRC
dWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1
cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0g
e3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9p
ZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRl
bnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5
bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpIFN5bmNocm9ub3VzCisj
ZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiB7fQogfX0KQEAgLTIz
Miw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJldHVybiBOb25l
CiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVzIGFyZSBjb250
YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1Jl
ZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYn
LCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAg
ICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBAIC02NDAsNyArNjQ2LDEzIEBA
IGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KICAgICAgICAgICAg
ICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5l
cikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUg
KyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0
cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlz
X2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2VseSB0aGlzIGNyZWF0ZXMgYSBk
YW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9IHsgeyB9IH07LgorICAgICAg
ICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0KKwogICAgICAgICAgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSldCiAgICAgICAgICAg
ICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAgICAgICAgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5h
bWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Nh
bXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0OGQyODgxNTdhZGZkYzFi
OC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTU3LDcgKzU3
LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBT
dHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJhY2tJRDsgfQogICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJl
c2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlh
VGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGltZSArPSBvZmZzZXQ7IG1fZGVj
b2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNvZGVUaW1lLCBtX2R1cmF0aW9u
LCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElzTm9uRGlzcGxheWluZykpOwog
ICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxh
Z3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJu
IHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6
Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTEwOTc4ZmQ0Mzdh
YTFlMGFjNjRiZmFhOGI4NGE0ZjQ3YTA4YjM5Li43ZmNmYjAxNTIyMDgzN2M0ZDgwZjYxYTJjMmVl
YzZlNzAxOTNmNjQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZW1v
dGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNl
ZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcHR1cmVkIFdlYkdMIHRvIGFub3RoZXIg
Y29udGV4dDJkIG9yIFdlYkdMIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIG1hcmsgZmV3IHRlc3RzIGFz
IHRpbWluZyBvdXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIy
LTAyLTExICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVGFiIGNoYXJhY3RlcnMgYW5kIGNoIHVuaXRzIGRvIG5vdCBvYmV5IHN5bnRoZXRpYyBib2xk
IHdpZHRoIGFkanVzdG1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZlZjMyMmMzNjhmMDFmZWY3ZjVmZWJmZmMwOTJk
YzZlODE1NTJhY2YuLjc3NjhhN2EwNDdlYjJiYjE4MjE5ZGZhNGE3YThiNTYyYWNjNzJlNGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIy
MjAsNCArMjIyMCw3IEBAIHdlYmtpdC5vcmcvYi8yMzQ1MzYgd2VieHIvaGlnaC1wZXJmb3JtYW5j
ZS5odG1sCiB3ZWJraXQub3JnL2IvMjM0NTM2IGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlh
LXRvLWNhbnZhcy0xLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQub3JnL2IvMjM0NTM2IGZhc3QvbWVk
aWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy0yLmh0bWwgWyBDcmFzaCBdCiB3ZWJraXQu
b3JnL2IvMjM0NTM2IHdlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1w
cmV2ZW50LWRlZmF1bHQuaHRtbCBbIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzIzNDUzNiB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1l
b3V0IF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjM0NTM2IHdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRp
bWVvdXQgXQorCisjIENhcHR1cmVkIFdlYkdMIHRvIGFub3RoZXIgY29udGV4dDJkIG9yIFdlYkdM
IG5vdCBpbXBsZW1lbnRlZCB5ZXQuCit3ZWJraXQub3JnL2IvMjM2NDk2IGZhc3QvbWVkaWFzdHJl
YW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIFsgVGltZW91dCBdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDI3ODZkYWM3MTVjYTFiYmVhMDRhOTQ0ZWQwNTkxNmRlOTIwZmY3YTIuLjQw
MTIzMjAzYjYxOGM2MmJiMTI1NWM0Mzk2MDI0NWMwYWY0YmNiMWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2NzcsMyArMTY3Nyw2IEBA
IGh0dHAvd3B0L2h0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1hLWVsZW1l
bnQvYS1kb3dubG9hZC1jbGljay00MDQuCiAKICMgcmRhcjovLzg2MDM3NDE3IFdpbmRvd1NlcnZl
ciByZXR1cm5lZCBub3QgYWxpdmUgd2l0aCBjb250ZXh0Oix1bnJlc3BvbnNpdmUgd29yayBwcm9j
ZXNzb3IocykKIFsgTW9udGVyZXkrIF0gaHR0cC90ZXN0cy9tb2RlbC9tb2RlbC1kb2N1bWVudC5o
dG1sIFsgU2tpcCBdCisKKyMgQ2FwdHVyZWQgV2ViR0wgdG8gYW5vdGhlciBjb250ZXh0MmQgb3Ig
V2ViR0wgbm90IGltcGxlbWVudGVkIHlldC4KK3dlYmtpdC5vcmcvYi8yMzY0OTYgZmFzdC9tZWRp
YXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwgWyBUaW1lb3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451682</attachid>
            <date>2022-02-11 05:58:26 -0800</date>
            <delta_ts>2022-02-11 08:10:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236099-20220211155824.patch</filename>
            <type>text/plain</type>
            <size>127613</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRiMmJhZDVkMTM0ZDY1
Mjk2ZjkxMjUxNWY2ZTQ1OTkzZmFjZTcxNS4uMzFlMjU4YWU4M2U5YzVlYWVmNDUzZTA2ZTlkMGQ1
NmZhNTg1Yjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBWaWRlb0ZyYW1lIDogcHVibGlj
IE1lZGlhU3RyZWFtLCBiYXNlIGNsYXNzIGZvciBNZWRpYSBTdHJlYW0gdmlkZW8gZnJhbWVzLgor
ICAgICAgICBDdXJyZW50bHkgaW5oZXJpdHMgZnJvbSBNZWRpYVNhbXBsZSwgYnV0IGxhdGVyIHdp
bGwgcmVtb3ZlIHRoZSBNZWRpYVNhbXBsZS4KKworICAgICAgICBUaGUgV2ViQ29yZTo6VmlkZW9G
cmFtZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHZhcmlvdXMgZW50cnktcG9pbnRzIHRoYXQK
KyAgICAgICAgY3VycmVudGx5IGFyZSBjdXJyZW50bHkgdHlwZWQgYXM6CisgICAgICAgICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb1NhbXBsZU1ldGFkYXRh
LCAuLi4pLgorICAgICAgICBUaGUgbmV3IGNsYXNzIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVBy
b3h5IDogcHVibGljIFZpZGVvRnJhbWUgY2FuIGJlIHBhc3NlZCB0byB0aGVzZSBBUElzLgorICAg
ICAgICBUaGUgQVBJIGVudHJ5cG9pbnRzIGFyZSBub3QgeWV0IGNoYW5nZWQgaW4gb3JkZXIgdG8g
cGFydGlhbGx5IHJvbGwgdGhlIGNoYW5nZXMgaW4uCisgICAgICAgIExhdGVyIG9uLCB0aGUgZW50
cnlwb2ludHMgd2lsbCBiZSBzaW1pbGFyIHRvOgorICAgICAgICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb1NhbXBsZU1ldGFkYXRhLCAuLi4pLgorCisgICAg
ICAgIFJlbW92ZXMgTWVkaWFTYW1wbGU6OnNldFRyYWNrSUQgYXMgdGhhdCBpcyBub3QgdXNlZC4K
KyAgICAgICAgQ2hhbmdlcyBNZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSB0byBjb25zdCwg
c28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20KKyAgICAgICAgY29uc3QgY29udGV4dC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpkZWNvZGVUaW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWU6OmR1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OnRyYWNr
SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjpvZmZzZXRUaW1lc3RhbXBzQnkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6c2V0VGltZXN0YW1wcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjppc0RpdmlzYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpkaXZpZGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Y3Jl
YXRlTm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFt
ZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6Ynl0ZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJhbWU6OmR1bXAgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6cGxhdGZvcm1TYW1w
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNh
bXBsZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhU2FtcGxlOjpwbGF0Zm9ybVNhbXBsZSBjb25zdCk6CisKIDIwMjItMDItMTEg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUYWIg
Y2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGgg
YWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwNzc4OWY3N2Q1ZGYwYTAwMzU1NjE1
ZTEwMzE3YmUzZWQxOTA0N2UuLmJiZWMxZmI2NzM3MTRhMTFmZmJhZjUzN2IzYjRlMDE0Njc5ZTVm
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkyIEBACisyMDIyLTAyLTExICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTWVk
aWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVzIHVzZWQgaW4g
TWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIENoYW5nZXMgYWZ0ZXIgcmV2ZXJ0OgorICAgICAgICAg
LSBGb3Igbm93LCBjcmVhdGUgdGhlIFJlbW90ZVZpZGVvRnJhbWUgaW4gR1BVUCB1c2luZyBzeW5j
aHJvbm91cyBtZXNzYWdlLiBUaGlzIHdheQorICAgICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkgZG9lcyBub3QgbmVlZCB0byByZWNlaXZlIG1lc3NhZ2VzLiBJdCBjYW5ub3QgZWFzaWx5IGRv
IHRoYXQsCisgICAgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgaW4gbXVsdGlwbGUgdGhyZWFk
cyBhbmQgdGh1cyB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgIGZvciB0aGUgaW5zdGFuY2UgZnJvbSBHUFVQcm9jZXNzIGluc3RhbmNlLCBhcyB0aGF0
IG9wZXJhdGlvbiBpcyBtYWluIHRocmVhZCBvbmx5LgorICAgICAgICAgICBUaGUgdHlwZSBjYW5u
b3QgYmUgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4sIGFzIHdlIGRvIG5vdCAoeWV0KSBjb250cm9s
IHRoZSBiYXNlIGNsYXNzCisgICAgICAgICAgIChNZWRpYVNhbXBsZSkuCisKKyAgICAgICAgV2Vi
Q29udGVudCBwcm9jZXNzOgorICAgICAgICBBZGQgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHksIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlIHByb3h5IG9iamVjdCB0aGF0CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBjYW4gdXNlLgorCisg
ICAgICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBjYW4gYmUgc2VudCB0byB0aGUgR1BVUCBhbmQg
dGhlIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuIFNvCisgICAgICAgIHRoZSBjYXB0dXJl
ZCBjb250ZW50IHNob3dzIGluIGNvbXBvc2l0aW5nIHRocm91Z2ggdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICBBdCB0aGUgbW9tZW50IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBjYW5ub3QgcGFpbnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHRvIHRoZQorICAgICAgICBkb2N1
bWVudCBDU1MgcGFpbnRlZCBjb250ZW50LCBDb250ZXh0MkQgb3IgV2ViR0wgY2FudmFzLgorCisg
ICAgICAgIEdQVVA6CisgICAgICAgIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGlzIGEgbWFw
cGluZworICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciAtPiBNZWRpYVNhbXBsZS4g
Q3VycmVudGx5IGFsbCBvYmplY3RzCisgICAgICAgIG1hcCB0byBub3JtYWwgTWVkaWFTYW1wbGVB
VkZPYmpDLgorCisgICAgICAgIEFkZCBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uIHdoZXJlIGEg
cmVtb3RlIE1lZGlhU2FtcGxlIGlzIHJldHVybmVkIGJ5IElQQzoKKyAgICAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkuCisK
KyAgICAgICAgVGhlIEdQVVAgb2JqZWN0IHBvaW50ZWQgYnkgUmVtb3RlVmlkZW9GcmFtZUlkZW50
aWZpZXIgaXM6CisgICAgICAgIC0gY3JlYXRlZCBpbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBpbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB0aHJlYWQKKyAgICAgICAgLSBjb25zdW1lZCBpbiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUgaW4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlciB0aHJlYWQKKyAgICAgICAgLSByZWxlYXNlZCBpbiBSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcDo6cmVsZWFzZVZpZGVvRnJhbWUgaW4gR1BVUCBtYWluIHRocmVhZAorICAgICAg
ICBBbGwgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGFzeW5jaHJvbm91cyBhbmQgY2FuIGFycml2ZSB0
byB0aGVpciBkZXN0aW5hdGlvbiBpbiBhbnkgb3JkZXIuCisgICAgICAgIEZvciBleGFtcGxlLCBy
ZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHZpZGVvIGZyYW1lIGNhbiBoYXBwZW4gYmVmb3JlIHRoZSBt
ZXNzYWdlIHRvIGNyZWF0ZSB0aGUgdmlkZW8gZnJhbWUgaGFzIGJlZW4KKyAgICAgICAgcmVjZWl2
ZWQuCisKKyAgICAgICAgVG8gc29sdmUgdGhlIG9yZGVyaW5nIGlzc3VlLCBpbnRyb2R1Y2UgcmVh
ZGVycy13cml0ZXJzIHJlZmVyZW5jZSBjb3VudGluZyBtZXRob2QgdmlhIGZvbGxvd2luZyBjbGFz
c2VzOgorICAgICAgICAgLSBPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZQorICAgICAgICAg
LSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UKKyAgICAgICAgIC0gT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIKKworICAgICAgICBPYmplY3RJZGVudGlmaWVyIGlkZW50aWZp
ZXMgdGhlIG9iamVjdC4KKyAgICAgICAgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIGlk
ZW50aWZpZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgY29udGVudCBwb2ludGVkIGJ5IHRoZSBpZGVu
dGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1wbGVzOgorICAgICAgICAgIFdyaXRlUmVm
ZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHBlbmRpbmdSZWFkcyA9IDAsIHZlcnNpb24gPSAwIH0g
bWVhbnM6CisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmllciAxLCB2
ZXJzaW9uIDAuIENyZWF0ZSB2ZXJzaW9uID0gMSIKKyAgICAgICAgICAgIFRoaXMgaXMgaG93IGlu
aXRpYWwgb2JqZWN0IGlzIGFzc2lnbmVkIHRvIHRoZSByZWZlcmVuY2UuCisgICAgICAgICAgV3Jp
dGVSZWZlcmVuY2UgeyBpZGVudGlmaWVyID0gMSwgcGVuZGluZ1JlYWRzID0gNzcsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICAiRW5kIHRoZSBsaWZlLXRpbWUgb2YgaWRlbnRpZmll
ciAxLCB2ZXJzaW9uIDMyIHdoZW4gYWxsIDc3IHJlYWRzIGhhdmUgY29tcGxldGVkLiBDcmVhdGUg
dmVyc2lvbiA9IDMzIgorCisgICAgICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIGRl
Y2xhcmVzIGEgcmVhZCBkZXBlbmRlbmN5IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgY29u
dGVudCBwb2ludGVkIGJ5IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBQc2V1ZG9jb2RlIGV4YW1w
bGVzOgorICAgICAgICAgICBSZWFkUmVmZXJlbmNlIHsgaWRlbnRpZmllciA9IDEsIHZlcnNpb24g
PSAzMiB9IG1lYW5zCisgICAgICAgICAgICJDb21wbGV0ZSBvbmUgcmVhZCBvZiBpZGVudGlmaWVy
IDEsIHZlcnNpb24gMzIiLgorCisgICAgICAgIENyZWF0ZXMsIHVwZGF0ZXMgYW5kIGRlc3RydWN0
aW9ucyBhcmUgV3JpdGVSZWZlcmVuY2VzLgorICAgICAgICBSZWFkcyBhcmUgUmVhZFJlZmVyZW5j
ZXMuCisKKyAgICAgICAgVGhlIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyIGNyZWF0
ZXMgd3JpdGUgYW5kIHJlYWQgcmVmZXJlbmNlcyBpbiB0aGUgUHJveHkgLXVzaW5nIHByb2Nlc3Mg
KFdlYkNvbnRlbnQgcHJvY2VzcykuCisKKyAgICAgICAgVGhlIGFkZGVkIFRocmVhZFNhZmVPYmpl
Y3RIZWFwIHJlc29sdmVzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIGluIHRoZSByZWFs
IG9iamVjdCBwcm9jZXNzIChHUFVQIGluIHRoaXMgY2FzZSkuCisgICAgICAgIFJlYWRzIGFuZCB3
cml0ZXMgYXJlIGJsb2NraW5nIHRoZSByZXF1ZXN0aW5nIHRocmVhZCBhcHByb3ByaWF0ZWx5Ogor
ICAgICAgICAgLSBSZWFkIG9mIHVua25vd24gdmVyc2lvbiBvZiB0aGUgaWRlbnRpZmllciBibG9j
a3MgdW50aWwgdGhlIHdyaXRlIGNyZWF0ZXMgdGhlIHZlcnNpb24KKyAgICAgICAgIC0gV3JpdGUg
b2YgbmV3IHZlcnNpb24gb2YgdGhlIGlkZW50aWZpZXIgYmxvY2tzIHVudGlsIHRoZSByZWFkcyBo
YXZlIHJldGlyZWQsIG9yIGNyZWF0ZXMgcGFyYWxsZWwsIG5ldyB2ZXJzaW9uCisgICAgICAgICAg
IG9mIHRoZSBjb250ZW50IGluIGNhc2Ugb2YgY29weS1vbi13cml0ZSBzY2hlbWVzLgorCisgICAg
ICAgIEluIHRoaXMgY29tbWl0IG9iamVjdHMgcG9pbnRlZCBieSBSZW1vdGVWaWRlb0ZyYW1lSWRl
bnRpZmllciBhcmUgaW1tdXRhYmxlIHVudGlsIGRlc3Ryb3llZCwgc28gdGhlcmUgaXMgbm8gdXBk
YXRlIG9yCisgICAgICAgIGNvcHktb24td3JpdGUgc2NoZW1lIGhlcmUuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dmlkZW9GcmFtZU9iamVjdEhlYXAgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjp+UmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpyZWxlYXNlVmlkZW9GcmFtZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlU2FtcGxlQ1YpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgICho
ZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGVyOjpzdGFydE1lc3NhZ2VUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6aXNUZXN0aW5nSVBDKToKKyAgICAgICAgKiBTaGFyZWQvSVBDVGVzdGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OmlzVGVzdGluZ0lQQyk6CisgICAgICAgICogU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlKToKKyAgICAgICAg
KFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U6OnZlcnNpb24gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVhZFJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6aWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlOjp2
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlYWRSZWZl
cmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZp
ZXJSZWFkUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJ
ZGVudGlmaWVyUmVhZFJlZmVyZW5jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCk6CisgICAgICAgIChXZWJL
aXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6T2JqZWN0SWRlbnRpZmllcldyaXRl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJl
bmNlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
cldyaXRlUmVmZXJlbmNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0
SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlOjpwZW5kaW5nUmVhZHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U6OnJlZmVyZW5jZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZTo6cmV0aXJl
ZFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJXcml0
ZVJlZmVyZW5jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIp
OgorICAgICAgICAoV2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlcjo6cmVh
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFj
a2VyOjp3cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZl
cmVuY2VUcmFja2VyOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNo
PFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPj46Omhhc2gpOgorICAgICAgICAo
V1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWZlcmVuY2U8VD4+Ojpl
cXVhbCk6CisgICAgICAgICogU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRTYWZlT2JqZWN0SGVhcDo6UmVmZXJlbmNlU3RhdGU6OlJl
ZmVyZW5jZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6SGVsZFR5cGU+OjpyZXRpcmUpOgorICAg
ICAgICAoV2ViS2l0OjpIZWxkVHlwZT46OnJldGlyZVJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6
OkhlbGRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNhbXBs
ZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuaDoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
SWRlbnRpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2VVbnVzZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6flJlbW90
ZVZpZGVvRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6d3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnBsYXRmb3JtU2FtcGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb1JvdGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb0ZyYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpyZWxlYXNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg6CisKIDIwMjItMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gQnViYmxld3JhcExhdW5jaGVyIGxlYWtz
IEQtQnVzIHByb3h5IHNvY2tldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDA4YTAxZTU3OGQ4YTM1
MjdlNmZlZTQ0MmNlOTA4MTFhZjViYWZhYzIuLjgwNTAwMTNlZDY1ZjQwYzg4ZjA0MzYxMjc4MDI1
ZDQ2MDRmYjMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL1VzZXJBZ2Vu
dC5oCiAgICAgcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCiAgICAgcGxh
dGZvcm0vVmFsaWRhdGlvbkJ1YmJsZS5oCisgICAgcGxhdGZvcm0vVmlkZW9GcmFtZS5oCiAgICAg
cGxhdGZvcm0vVmlkZW9GcmFtZU1ldGFkYXRhLmgKICAgICBwbGF0Zm9ybS9WaWRlb1NhbXBsZU1l
dGFkYXRhLmgKICAgICBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IDFlZGQ3MTgzOGNkMjdkMzdjMjlkNzlmNGFiMzNhOGJkNzVlN2E1OGEuLjYxNDJkMjQzZGIy
ODgwYzUxZWZlZjU4YTA0YzliMGJhNzUzZjYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTI2LDYg
KzE5MjYsNyBAQCBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CitwbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAogcGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29w
aWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9XaWRnZXQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTYzN2YzZmQ2MTFlZDBhMWY3YmE1Y2ViYjAxNjVkNTY0M2EzZWRhNS4uMTY0ZTUy
YWU1NWYyNDNmMjU0NWQwOTMwNjQ5ODk4ZGM3NzU0NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwNyw2ICsyNDA3LDcg
QEAKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNDQxMEUxMjc5NThGQzUwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVv
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDQxMERGMjc5NThGQzQwMDBCNEY4QSAvKiBNZWRpYVNhbXBsZVZpZGVvRnJhbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjVBM0RBRjI3QUJG
OEM1MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3IC8qIFZpZGVvRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYw
OTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAv
KiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTUyMCw2ICsxMTUyMSw4IEBACiAJCTdCMTYxOTEwMjcxOTg4
MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0MTBERjI3OTU4RkM0MDAwQjRGOEEgLyogTWVk
aWFTYW1wbGVWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU2FtcGxlVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ0
MTBFMjI3OTU4RkRFMDAwQjRGOEEgLyogTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVkaWFTYW1wbGVWaWRlb0ZyYW1lQVZGLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBQjI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb0ZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1QTNEQUQyN0FCRjhDNDAwNkM2Rjk3
IC8qIFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9G
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAz
ODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MjBCMEEyNzQzREJB
NjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMTUxLDYgKzMwMTU0
LDggQEAKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCiAJ
CQkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCAqLywKIAkJCQk4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJs
ZS5oICovLAorCQkJCTdCNUEzREFCMjdBQkY4QzQwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmNwcCAq
LywKKwkJCQk3QjVBM0RBRDI3QUJGOEM0MDA2QzZGOTcgLyogVmlkZW9GcmFtZS5oICovLAogCQkJ
CTQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLywKIAkJ
CQk0MTYwNDkzMTI3NDNCMEU3MDBBODZGQTAgLyogVmlkZW9TYW1wbGVNZXRhZGF0YS5oICovLAog
CQkJCTUxNUY3OTUxMUNGQ0EzQzcwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwICovLApAQCAtMzc4MjcsNiArMzc4MzIsNyBAQAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQz
N0FEQiAvKiBWZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhENzQgLyog
VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAx
QzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE4Mzk5NzIy
NjBmNzBlMDA3MzY3OTc5MTcyMjYyNWY1NmIyNTNmMDguLmI0ZmU3MTY1NzlmZjhlN2ZjMzQwZDg3
Y2M4OTJmMWJiYjRiMGQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU2FtcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApA
QCAtNDksOSArNDksMTAgQEAgc3RydWN0IFBsYXRmb3JtU2FtcGxlIHsKICAgICAgICAgQ01TYW1w
bGVCdWZmZXJUeXBlLAogICAgICAgICBHU3RyZWFtZXJTYW1wbGVUeXBlLAogICAgICAgICBCeXRl
UmFuZ2VTYW1wbGVUeXBlLAorICAgICAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHlUeXBlLCAvLyBG
SVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLgog
ICAgIH0gdHlwZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1w
bGVCb3g7CisgICAgICAgIGNvbnN0IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CiAgICAg
ICAgIENNU2FtcGxlQnVmZmVyUmVmIGNtU2FtcGxlQnVmZmVyOwogICAgICAgICBHc3RTYW1wbGUq
IGdzdFNhbXBsZTsKICAgICAgICAgc3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZiwgQ01G
b3JtYXREZXNjcmlwdGlvblJlZj4gYnl0ZVJhbmdlU2FtcGxlOwpAQCAtNjYsNyArNjcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEF0
b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhY2tJ
RChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGlt
ZSYpID0gMDsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICBIYXNTeW5jSW5mbyA9
IDEgPDwgMywKICAgICB9OwogICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgY29uc3QgPSAwOwogCiAg
ICAgc3RydWN0IEJ5dGVSYW5nZSB7CiAgICAgICAgIHNpemVfdCBieXRlT2Zmc2V0IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGU4MTZlY2Qw
OGNiOTU1MjRkNmFhMmQ3MWFmY2I5ZjBiOTE3ODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWRlb0Zy
YW1lOjpWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0OworCitWaWRlb0ZyYW1lOjp+VmlkZW9GcmFtZSgp
ID0gZGVmYXVsdDsKKworTWVkaWFUaW1lIFZpZGVvRnJhbWU6OmRlY29kZVRpbWUoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKK01lZGlh
VGltZSBWaWRlb0ZyYW1lOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworQXRvbVN0cmluZyBWaWRlb0ZyYW1lOjp0cmFj
a0lEKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OworfQorCitzaXplX3QgVmlkZW9GcmFtZTo6c2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitXZWJDb3JlOjpGbG9hdFNp
emUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBWaWRlb0ZyYW1lOjpzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IE1lZGlhVGltZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2Jvb2wgVmlkZW9GcmFtZTo6aXNEaXZpc2FibGUoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjpwYWlyPFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4sIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4+IFZpZGVvRnJh
bWU6OmRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKQoreworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIgfTsKK30KKworUmVm
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBWaWRlb0ZyYW1lOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0Cit7CisgICAgQ1JBU0goKTsKK30KKworTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdz
IFZpZGVvRnJhbWU6OmZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlNh
bXBsZUZsYWdzOjpOb25lOworfQorCitzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxlOjpCeXRlUmFu
Z2U+IFZpZGVvRnJhbWU6OmJ5dGVSYW5nZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFJlbW92
ZSBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgVmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0Cit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJkOTUwMTBkMzZlYjYyYjllYWUxYjk5ODM3Yjg0NzcxNDFlMDVm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHJlcHJlc2VudGluZyBhIHZpZGVvIGZyYW1lIGZyb20g
YSBkZWNvZGVyLCBjYXB0dXJlIHNvdXJjZSwgb3Igc2ltaWxhci4KKy8vIEZJWE1FOiBDdXJyZW50
bHkgZm9yIGltcGxlbWVudGF0aW9uIHB1cnBvc2VzIGluaGVydHMgZnJvbSBNZWRpYVNhbXBsZSB1
bnRpbCBjYXB0dXJlIGNvZGUKKy8vIHN0b3BzIHJlZmVycmluZyB0byBNZWRpYVNhbXBsZQorY2xh
c3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JU
IFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG5vdCBp
bnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGVzZSBvYmplY3RzLgorICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlIG92ZXJyaWRlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdHJhY2tJRCgp
IGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50
YXRpb25TaXplKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvZmZzZXRU
aW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEaXZpc2FibGUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRy
PE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VXNlRW5kVGltZSA9IFVzZUVuZFRpbWU6OkRvTm90VXNlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkg
Y29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25z
dCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRl
eCBjMTI2YjkzZTg3MDZmOTU1MzBmNjEyNmY4YWQyNWZhZjYyMjJhZDcxLi45YmY0YjBiOGQ1YzQ4
MWE1MzRmZDkwY2YxNmM5NTU5ZmI2Y2Q3MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMzM0LDYgKzMz
NCw5IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9jYWwgcGxheWJhY2sgb2YgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAoIWlzPE1lZGlhU2Ft
cGxlQVZGT2JqQz4oc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzYW1wbGVU
b0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7
CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyYmJkNmE0Y2IwZDIyZDJkZjk5Nzc1ZWU1
ZWUyN2M3OGEyMGQ1OTU1Li41MTI2OTZhMTNhYzcyYWM4OGY4MDA4NjU2MmUzMTEwNDVjNDFhYzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODcsNiArOTg3LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpCiAgICAgaWYgKG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVy
Lm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogRG9lcyBub3Qg
Y3VycmVudGx5IHN1cHBvcnQgUmVtb3RlVmlkZW9GcmFtZVByb3h5LgorICAgIGlmICghaXM8TWVk
aWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQog
ICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMuaAppbmRleCA2M2RiOWMwMDNjMDUxOWM2NjU2NjEyMWU3YzZmYjUxZGYy
Zjc3MWMxLi43YmU3MzUxZTViYWE3ZDIxZTYzZmM0OTlhMjcxMjM1ZWNmNGZiOWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNTQsMTMgKzU0LDEy
IEBAIHB1YmxpYzoKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0K
LSAgICB2b2lkIHNldFRyYWNrSUQoY29uc3QgU3RyaW5nJiBpZCkgb3ZlcnJpZGUgeyBtX2lkID0g
aWQ7IH0KIAogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTYW1wbGVG
bGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3Jt
U2FtcGxlKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CkBAIC05NywzICs5Niw3IEBAIHByb3RlY3RlZDoKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gbWVkaWFTYW1wbGUucGxh
dGZvcm1TYW1wbGUoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1
ZmZlclR5cGU7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2Ft
cGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCAyY2U2Y2VkZWE1NWRmZTQyOTUz
YzJjOWJmMmYyNjllYTEzYzQ2YzNiLi5hM2EzMTU2YmZiYTBjYTc5OTFmNjZkZDNlZjI0YzMyNDRk
MGUzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CkBAIC0xNTMsNyArMTUzLDcgQEAgc2l6ZV90IE1lZGlhU2FtcGxlQVZGT2JqQzo6c2l6ZUluQnl0
ZXMoKSBjb25zdAogICAgIHJldHVybiBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVT
aXplKG1fc2FtcGxlLmdldCgpKTsKIH0KIAotUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZP
YmpDOjpwbGF0Zm9ybVNhbXBsZSgpCitQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6
OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUsIHsgLmNtU2FtcGxlQnVmZmVyID0g
bV9zYW1wbGUuZ2V0KCkgfSB9OwogICAgIHJldHVybiBzYW1wbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCA5ZTdjMDg5NjA2YTdiMTM5YTlhNjIzOGU1MWRmOGYw
ZmRlZDdkMzM3Li4yN2Y5Nzk1ZWE0ZGE4YTc0ODIwNjkzN2Q0MjNkNjhiYjU2MzViZDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiB0aW1lc3RhbXBPZmZzZXQpCiAgICAgfQogfQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNh
bXBsZUdTdHJlYW1lcjo6cGxhdGZvcm1TYW1wbGUoKQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1w
bGVHU3RyZWFtZXI6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKIHsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpHU3RyZWFtZXJTYW1wbGVUeXBlLCB7IC5nc3RT
YW1wbGUgPSBtX3NhbXBsZS5nZXQoKSB9IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWQ3MWEzMzk2OWNmYmM2NzVkZWVjZWE3OGU2
NGYyZDY4OTllNDFlYi4uM2I1YTY5YWE3NmE2YWFmMTdhNTYxNzZjMWZiMjM5YTRmOTEwYjBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVi
bGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kdHM7IH0KICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2R1cmF0aW9uOyB9CiAgICAgQXRvbVN0cmluZyB0cmFja0lEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV90cmFja0lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkgb3ZlcnJpZGUgeyBtX3RyYWNrSWQgPSB0cmFja0lkOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblNpemU7IH0KICAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKQEAgLTYyLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxSZWZQ
dHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29uc3QgTWVkaWFU
aW1lJiwgVXNlRW5kVGltZSkgb3ZlcnJpZGUgIHsgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9
OyB9CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mbGFnczsgfQotICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJp
ZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJ
bWFnZURhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKaW5kZXggNWNiNjBiOWVmNmVmNTdhNDNiNGVlZjcyYTEzNzY3OWIxYWViZDY1Yi4uNGFj
NjlhY2Q5YTAwY2Y2ZTE5OWEzM2FhYzQ3M2Q4Y2Q4NWRjNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHByaXZhdGU6CiAgICAg
TWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5kZWNv
ZGVUaW1lc3RhbXAoKTsgfQogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNrSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0
IFN0cmluZyYgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6ZW9mKG1fYm94KTsgfQogICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4
Niw3IEBAIE1lZGlhU2FtcGxlOjpTYW1wbGVGbGFncyBNb2NrTWVkaWFTYW1wbGU6OmZsYWdzKCkg
Y29uc3QKICAgICByZXR1cm4gU2FtcGxlRmxhZ3MoZmxhZ3MpOwogfQogCi1QbGF0Zm9ybVNhbXBs
ZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK1BsYXRmb3JtU2FtcGxlIE1vY2tN
ZWRpYVNhbXBsZTo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogewogICAgIFBsYXRmb3JtU2FtcGxl
IHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9
IH07CiAgICAgcmV0dXJuIHNhbXBsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ZjRjNzgxODE4
MGRlMmNiMjQ5NTA3MmU4NDYwYTUwYWQzNjRhNDAuLmRjNGQzMWNmNmY0ODVmODExMGZkOTlhMGE0
M2FhNzk0MTY0MjhlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNl
dChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkKICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lclByb3h5CiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKIAogICAg
IEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5CiAgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5k
ZXggZjkyNzVmZjYxMzhjNDkxNDY5MGFjMGEwOWVkYzE2MGFjZTA5YWJmNS4uMGQ0ZGZkMTJjZTlj
ZjZhYTcyMGRhODU4MjJiODFkOWJlNDdhOGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtNjcsNiArNjcsNyBAQCAkKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDkyZDIwNjA5OTM0MTc3YWVj
OTdlODg2YzY2Y2U4ZDkxMzc4MjQwODMuLjI3MjJkM2M0MGFjNjFhMDNmYmU3Zjg1MWY4NGMxZDFk
ZWZmN2NkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtMzgxLDYgKzM4MSw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVRleHR1cmVWaWV3TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9SZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1JlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQvUmVtb3RlVmlkZW9UcmFja1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9SZW1vdGVWaWRl
b1RyYWNrUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L1JlbW90ZVZpZGVvVHJhY2tQcm94eU1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjllNGM4NDY2MzQ1YjMzOTgzZGU3NDgyODdiOTQxNTQ2
NDdmMjliZC4uYjdjODkzZDBlMTUwYzUyOThlYjE0YjE4NzhmM2E1NDc0YTkzZTYxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzAwLDYgKzMwMCw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
XAogCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCiAJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCBcCiAJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lclByb3h5IFwKIAlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA0ZDUyNGU4Yjg2NzlhODMwYzQ1ZWI2YjViYzEwNGI3NTQxMDRiNjNl
Li4xMDM5MzllODMzMjYxNmQwZmVkNTc0ZTRjMmUyYWM5YWJiZTk2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0xNDEsNiArMTQxLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNlbmRpZgogCkBAIC0yNTcsNiArMjU4LDkgQEAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNz
JiBncHVQcm9jZXNzLCBXZWIKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFW
RShBVkFVRElPX1JPVVRJTkdfQVJCSVRFUikKICAgICBncHVQcm9jZXNzLmF1ZGlvU2Vzc2lvbk1h
bmFnZXIoKS5zZXNzaW9uKCkuc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KG1fcm91dGluZ0Fy
Yml0cmF0b3IuZ2V0KCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBt
X3ZpZGVvRnJhbWVPYmplY3RIZWFwID0gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNyZWF0
ZSgqdGhpcyk7CisjZW5kaWYKIAogICAgIGlmICghcGFyYW1ldGVycy5vdmVycmlkZUxhbmd1YWdl
cy5pc0VtcHR5KCkpCiAgICAgICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJh
bWV0ZXJzLm92ZXJyaWRlTGFuZ3VhZ2VzKTsKQEAgLTMwMCw3ICszMDQsOSBAQCB2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgbV9hdWRpb1Nlc3Npb25Qcm94eSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlm
Ci0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAu
cmVzZXQoKTsKKyNlbmRpZgogICAgIC8vIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb2JqZWN0cyBy
ZWYgdGhlaXIgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZQogICAgIC8vIHRvIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYnkgZGVzdHJveWluZyB0aGVt
LgogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5jbGVhcigpOwpAQCAtOTQxLDYgKzk0
NywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVBdHRyaWJ1
dGlvblN0cmluZygpIGNvbnN0CiB7CiB9CiAjZW5kaWYKKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnZpZGVvRnJhbWVPYmplY3RIZWFwKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fdmlkZW9GcmFtZU9iamVjdEhlYXAuZ2V0KCk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKaW5kZXggNjI0ZTNmYTM1MWNmMGIwMzVlMmUxM2E5MzMyNWRkZDRjMzQyYjE0OS4uOTk2ZjU0
ZjNjODQ5NTBmNWUwZTdmMDI0YzQ3NTRhMzNlYWY0OGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDYsNiAr
MTA2LDEwIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogY2xhc3MgUmVtb3RlV0NMYXllclRyZWVIb3N0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKKwog
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6Tm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dApAQCAtMTQxLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0F1ZGlvQ2FwdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQXVkaW9DYXB0dXJlOyB9CiAgICAgYm9vbCBhbGxv
d3NWaWRlb0NhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1ZpZGVvQ2FwdHVyZTsgfQog
ICAgIGJvb2wgYWxsb3dzRGlzcGxheUNhcHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Rp
c3BsYXlDYXB0dXJlOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAmIHZpZGVvRnJh
bWVPYmplY3RIZWFwKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzA1LDYgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0F1ZGlvQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c1ZpZGVv
Q2FwdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFs
c2UgfTsKKyAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFtZU9iamVjdEhlYXA7CiAjZW5kaWYKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9wcmVz
ZW50aW5nQXBwbGljYXRpb25BdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggZWNiNGI1NzY3Y2M5YThlMjY4NjQ2ZGNlMzlkMjY2MmMzNDJjMzNiNi4uZTlhMTA1MWUwMzA3
Mzk2NDI2NTVjZmQ3YTIxNTgxNDBjYTNiOWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xD
Vi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjgsNiArNzIsOSBAQCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1QwogICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBX
VEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkp
KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKHJlbmRlcmluZ0JhY2tlbmQpCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAsIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy52aWRlb0ZyYW1lT2JqZWN0SGVhcCgpKQorI2VuZGlmCiAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QoU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKIHsKQEAgLTIy
Myw2ICsyMzAsMjEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWYKICAgICBwYWludFBpeGVsQnVm
ZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50
aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1U
aHJlYWQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXM+IHJlc3VsdDsKKyAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9jb250ZXh0
LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpKSB7CisgICAgICAgIGF1dG8g
d3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRlRm9yQWRkKCk7
CisgICAgICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJlbmNl
KCk7CisgICAgICAgIHJlc3VsdCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhX
VEZNb3ZlKG5ld0ZyYW1lUmVmZXJlbmNlKSwgKnZpZGVvRnJhbWUpOworICAgICAgICBtX3ZpZGVv
RnJhbWVPYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZSh3cml0ZSksIFdURk1vdmUodmlkZW9GcmFt
ZSksIHN0ZDo6bnVsbG9wdCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFp
bnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGViMjBkMTZjMzc3ZjVmM2UwMDdmMjFiYTI1NjI0ZGQxOWUzNmJiMTcuLmMyMzZk
OTJiZWU4Yzg1N2M5YjVjNDM2NmRkZTYzZjI5OWVmOWViMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUgIldDQ29udGVudEJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1v
dGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94
eS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgTWFjaFNlbmRSaWdodDsKQEAgLTYxLDYgKzY2LDkgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsK
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CisjZW5kaWYKIAogLy8gR1BVIHByb2Nl
c3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0
R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgpAQCAtMTA4LDYgKzExNiw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4mJik+JiYpOworI2VuZGlmCiAgICAgdm9pZCBj
b3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQz
Ml90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCkBAIC0xMzAsNiArMTQxLDkgQEAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMPiBtX2NvbnRleHQg
V1RGX0dVQVJERURfQllfTE9DSyhtX3N0cmVhbVRocmVhZCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0JhY2tlbmQ7CisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKyAgICBSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+IG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXA7CisjZW5kaWYKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNT
IFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCmluZGV4IGM4YWIyOTc3MjkzMGJmZDQwOGEwM2NlYjM3YTBjMjk4OThl
MzAyYjIuLjQwMzNjMzAwZDU1NTgyMjhkMjA1MjlmYzI2ZDhlMWFhNGNhZWJmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTQyLDYgKzQyLDkgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewog
ICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIHZv
aWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIENv
cHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVp
bnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hy
b25vdXMKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgUGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gcHJvcGVydGllcykgU3luY2hyb25vdXMKKyNlbmRp
ZgogICAgIHZvaWQgU2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyBldmVudCkKIAogICAgIHZvaWQgTW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUpIFN5bmNocm9u
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTk1ZjdhYmVlZDQ2M2Vk
NTJiY2QxYmYxOWFlY2IyNDEyNTNlZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1JlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4gUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RI
ZWFwKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoJmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24obV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkpCit7CisgICAgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKK30KKworUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6On5SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcCgpCit7CisgICAgQVNTRVJUKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOworfQorCit2b2lkIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjpzdG9wTGlzdGVu
aW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiByZWZGcm9tQ29ubmVj
dGlvbikKK3sKKyAgICBhc3NlcnRJc0N1cnJlbnQobV9jb25zdW1lVGhyZWFkKTsKKyAgICBpZiAo
YXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IHN0ZDo6ZXhjaGFuZ2UobV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBudWxscHRyKSkgeworICAgICAgICBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
OworICAgICAgICAvLyBDbGllbnRzIG1pZ2h0IGhvbGQgb24gdG8gdGhlIHJlZiBhZnRlciB0aGlz
IGhhcHBlbnMuIFRoZXkgc2hvdWxkIGFsc28gc3RvcCB0aGVtc2VsdmVzLCBidXQgaWYgdGhleSBk
byBub3QsCisgICAgICAgIC8vIGF2b2lkIGJpZyBtZW1vcnkgbGVha3MgYnkgY2xlYXJpbmcgdGhl
IGZyYW1lcy4gVGhlIGNsaWVudHMgc2hvdWxkIGZhaWwgZ3JhY2VmdWxseSAoZG8gbm90aGluZykg
aW4gY2FzZSB0aGV5IGZhaWwgdG8gbG9vayB1cAorICAgICAgICAvLyBmcmFtZXMuCisgICAgICAg
IGNsZWFyKCk7CisgICAgICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5n
LgorICAgIH0KK30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6cmVsZWFzZVZp
ZGVvRnJhbWUoUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJiYgd3JpdGUpCit7CisgICAg
YXNzZXJ0SXNDdXJyZW50KG1fY29uc3VtZVRocmVhZCk7CisgICAgcmV0aXJlUmVtb3ZlKFdURk1v
dmUod3JpdGUpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWQzN2ZkZDRlYTdlNjg3OWViNDM1YTAyZThmNDJhNjYwZGQ0ZDBhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRocmVhZFNhZmVP
YmplY3RIZWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKworLy8gSG9sZHMgcmVmZXJlbmNlcyB0byBhbGwgVmlk
ZW9GcmFtZSBpbnN0YW5jZXMgdGhhdCBhcmUgbWFwcGVkIGZyb20gV2ViIHByb2Nlc3MgdG8gR1BV
IHByb2Nlc3MgdHdvIHByb2Nlc3Nlcy4KKy8vIEFzIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzcGVj
aWFsIHN0YXRlIGZvciBSZW1vdGVWaWRlb0ZyYW1lLCB0aGUgb2JqZWN0IGhlYXAgc3RvcmVzIFZp
ZGVvRnJhbWUgaW5zdGFuY2VzIChNZWRpYVNhbXBsZSkuCisvLyBBcyBjdXJyZW50bHkgdGhlcmUg
aXMgbm8gUmVtb3RlVmlkZW9GcmFtZSwgcmVzcG9uc2libGUgZm9yIGRpc3BhdGNoaW5nIHRoZSBW
aWRlb0ZyYW1lIG1ldGhvZHMgdG8gdGhlIG9iamVjdHMuCisvLyBDb25zdW1lIHRocmVhZCBpcyB0
aGUgdGhyZWFkIHRoYXQgdXNlcyB0aGUgVmlkZW9GcmFtZS4gRm9yIEdQVVAgdGhpcyBpcyB0aGUg
bWVkaWEgcGxheWVyIHRocmVhZCwgdGhlIG1haW4gdGhyZWFkLgorLy8gRklYTUU6IGN1cnJlbnRs
eSBWaWRlb0ZyYW1lIGluc3RhbmNlcyBhcmUgTWVkaWFTYW1wbGUgaW5zdGFuY2VzLgorY2xhc3Mg
UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZU9iamVj
dEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOworCisgICAg
dm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4m
JiByZWZGcm9tQ29ubmVjdGlvbik7Citwcml2YXRlOgorICAgIFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKworICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMuCisgICAg
dm9pZCByZWxlYXNlVmlkZW9GcmFtZShSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7
CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOworICAgIGNvbnN0IFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBUaHJlYWRBc3NlcnRpb24gbV9j
b25zdW1lVGhyZWFkIE5PX1VOSVFVRV9BRERSRVNTOworfTsKKworCisKK30KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNzhjZTNk
MDM5ZGJlMTczMWQ1YWY2YzhlNDk5MTBhMzk1MmE3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
K21lc3NhZ2VzIC0+IFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIE5vdFJlZkNvdW50ZWQgewor
ICAgIFJlbGVhc2VWaWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJl
bmNlIGlkZW50aWZpZXIpCit9CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzI0YThjOTZiN2U3ZTVlMGRi
YWJhMDgyMzFiYjhiNzhmOWJiZjBjMC4uYmY0NjFjZGZmOGFkZDYxNGRmYjBlYmYxNDkzOTNlNGVh
NWMzYWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIklQQ1Rlc3Rlci5oIgorI2luY2x1ZGUg
IlJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lmg+CkBAIC0zNSwxOCArMzcsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2Ft
cGxlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRl
ZmF1bHRUaW1lb3V0IHsgMzBfcyB9OworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRvIGxheWVyID0g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4obmV3IFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
KSk7CisgICAgYXV0byBsYXllciA9IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI+KG5ldyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoZ3B1Q29ubmVj
dGlvbiwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSkpOwogICAgIHJldHVybiBsYXll
ci0+bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPyBXVEZNb3ZlKGxheWVyKSA6IG51bGxwdHI7
CiB9CiAKLVJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCitSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uLCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVD
b25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMpKQorICAgICwg
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcChtX2dwdUNvbm5lY3Rpb24udmlkZW9GcmFtZU9iamVjdEhl
YXAoKSkKIHsKICAgICBBU1NFUlQobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpOwogfQpAQCAt
MTEzLDcgKzExOSwyMyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1
c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lk
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShSZW1vdGVWaWRl
b1NhbXBsZSYmIHJlbW90ZVNhbXBsZSkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgc2FtcGxl
KQoreworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5yZXRp
cmUoV1RGTW92ZShzYW1wbGUpLCBkZWZhdWx0VGltZW91dCk7CisgICAgaWYgKCFtZWRpYVNhbXBs
ZSkgeworICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIWlzPE1lZGlhU2FtcGxlQVZGT2JqQz4obWVkaWFTYW1wbGUpKSB7Cisg
ICAgICAgIEFTU0VSVF9JU19URVNUSU5HX0lQQygpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGF1dG8mIGF2Zk1lZGlhU2FtcGxlID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigq
bWVkaWFTYW1wbGUpOworICAgIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0QXNEaXNwbGF5SW1tZWRp
YXRlbHkoYXZmTWVkaWFTYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlU2FtcGxlKGF2Zk1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZSYmIHJlbW90ZVNhbXBsZSkKIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKICAg
ICBpZiAoIXJlbW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oCmluZGV4IDcyNWIzZDI2YjcxYzc4ODZkYzQ4ODgyN2QwYTZmN2QyNTJhYTdhMGQuLjgw
MmM5MGZlOWViNjY0YmE5MzIxZDdhOGJkZTVkOTg0ZjQwM2YxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzAsMTAgKzMwLDEyIEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZEFzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVDsKQEAgLTQyLDExICs0NCwxMyBAQCBjbGFzcyBSZW1vdGVWaWRlb1NhbXBs
ZTsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogCiBjbGFzcyBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBjcmVhdGUoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7
CiAgICAgflJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOwogCiAgICAgdXNpbmcgV2Vi
Q29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpA
QCAtNjEsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAg
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nSWRlbnRp
ZmllcihTdHJpbmcmJik7CkBAIC03Myw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVz
aEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwot
ICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKKyAg
ICB2b2lkIGVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJik7Cisg
ICAgdm9pZCBlbnF1ZXVlU2FtcGxlQ1YoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJik7CiAg
ICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVv
RnJhbWVNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKQEAgLTg1LDEyICs5
MCwxNiBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Q2xpZW50CiAgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWls
KCkgZmluYWw7CiAKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b24gV1RGX0dVQVJERURfQllfTE9DSyhtX2NvbnN1bWVUaHJlYWQpOwogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VU
cmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciBtX3No
YXJlZFZpZGVvRnJhbWVSZWFkZXI7CisgICAgUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwOworICAgIFRocmVhZEFzc2VydGlvbiBtX2NvbnN1bWVU
aHJlYWQgTk9fVU5JUVVFX0FERFJFU1M7CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggZTUwNDgzMTQxZWZlZmFmYjQzZGNh
NjA4Y2RjMzdkNjIxNmY3ZWNkZi4uM2NhMWY5MzI3MDcyN2RlMGMyYjc1NDQ3YWI4OWI2NDYzMmFi
YTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMu
aW4KQEAgLTMyLDcgKzMyLDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIE5vdFJlZkNvdW50ZWQgewogICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQog
ICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1ZXVlU2FtcGxl
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSkKKyAgICBFbnF1ZXVlU2FtcGxlKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Ugc2FtcGxlKQorICAgIEVucXVldWVT
YW1wbGVDVihXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUpCiAgICAgQ2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGE1NDQ1ZDdmZDVjY2JiNWFkMDBj
ZGVjZWM1ZDAzZjYzMzRiNWQxNTEuLjc2ZTc5OWMzNWFmMmVkZDIzNjZkN2NhY2RkM2U1ZTcxOTc1
YzU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNw
cApAQCAtODEsNyArODEsNyBAQCBib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXI6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbgogdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpjcmVhdGVMYXllcihTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGlkZVJvb3RMYXllciwgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplLCBMYXllckNyZWF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGlkZW50aWZpZXIsIGhpZGVSb290TGF5ZXIsIHNpemUsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbGF5ZXIgPSBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJl
ZigpKTsKKyAgICAgICAgYXV0byBsYXllciA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcywgaWRlbnRpZmllciwgbV9jb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIGF1dG8mIGxheWVyUmVmZXJlbmNlID0gKmxheWVyOwog
ICAgICAgICBsYXllclJlZmVyZW5jZS5pbml0aWFsaXplKGhpZGVSb290TGF5ZXIsIHNpemUsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgaWRlbnRpZmllciwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKV0oYXV0byBsYXllcklk
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBpZGVudGlmaWVyLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBsYXllcklkID0gV1RGTW92
ZShsYXllcklkKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDc1OGQ1MDU1NmZmMmY2ZTQ3Mzc3ZDE0ZTgyNjZiYzVlM2VhYzQxYTYuLjIy
NGJmZmY2ZjhlNmJiZjAwN2EyNjU1MGMzMTQ4ZGQzMzUzZWExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzQ3LDYgKzM0Nyw5IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJj
ZUlkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmll
cicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZScsCisg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJywKICAgICAgICAg
J1dlYktpdDo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcicsCkBAIC04ODMsNiArODg2LDggQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZp
Z3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0
dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9u
QW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIn
XSwKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJzogWyci
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6U2VsZWN0
aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6VGFwSWRl
bnRpZmllcic6IFsnIklkZW50aWZpZXJUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0lQQ1Rlc3Rl
ci5jcHAKaW5kZXggYmFiYTBiMDg4NzdjNDcyYTUwNzFmZjNhYTNkODgwMTAyZjU3Yzg5YS4uYThk
MjU3ZWM2NzM1ZjEwZGE1OTU0ODMwMGNlNmZlM2YyY2RmOWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9J
UENUZXN0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRlY29kZXIuaCIKIAorI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxkbGZj
bi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00OCw2ICs0
OSw4IEBAIHN0cnVjdCBTZW5kTWVzc2FnZUNvbnRleHQgewogICAgIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbjsKICAgICBzdGQ6OmF0b21pYzxib29sPiYgc2hvdWxkU3RvcDsKIH07CisKK3N0
YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gb25nb2luZ0lQQ1Rlc3RzIHsgMCB9OwogfQogCiBl
eHRlcm4gIkMiIHsKQEAgLTExNSw3ICsxMTgsOSBAQCB2b2lkIElQQ1Rlc3Rlcjo6c3RhcnRNZXNz
YWdlVGVzdGluZyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmluZyYmIGRyaXZlcgog
ICAgIGlmICghbV90ZXN0UXVldWUpCiAgICAgICAgIG1fdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIklQQyB0ZXN0aW5nIHdvcmsgcXVldWUiKTsKICAgICBtX3Rlc3RRdWV1ZS0+ZGlzcGF0
Y2goW2Nvbm5lY3Rpb24gPSBSZWYgeyBjb25uZWN0aW9uIH0sICZzaG91bGRTdG9wID0gbV9zaG91
bGRTdG9wLCBkcml2ZXJOYW1lID0gV1RGTW92ZShkcml2ZXJOYW1lKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgb25nb2luZ0lQQ1Rlc3RzKys7CiAgICAgICAgIHJ1bk1lc3NhZ2VUZXN0aW5nKGNvbm5l
Y3Rpb24sIHNob3VsZFN0b3AsIFdURk1vdmUoZHJpdmVyTmFtZSkpOworICAgICAgICBvbmdvaW5n
SVBDVGVzdHMtLTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDYgKzEzOSwxMSBAQCB2b2lkIElQQ1Rl
c3Rlcjo6c3RvcElmTmVlZGVkKCkKICAgICB9CiB9CiAKK2Jvb2wgaXNUZXN0aW5nSVBDKCkKK3sK
KyAgICByZXR1cm4gb25nb2luZ0lQQ1Rlc3RzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSVBDVGVzdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9JUENUZXN0ZXIuaAppbmRleCA0NDk5MDkzNWJkNTUxZDRlZWI1ODM1NDNlMTJlY2ZkM2I4NDcx
ODVlLi5lYTQ5MzM1NmQ0MzkyYzNmYTdiNWY3ZjVlMmI1NjRmNjUzMzI3ZmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JUENUZXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9JUENUZXN0ZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlIDxhdG9taWM+CkBAIC0zMyw2ICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorI2RlZmluZSBBU1NFUlRfSVNfVEVTVElOR19JUEMoKSBBU1NFUlQoaXNUZXN0aW5nSVBD
KCksICJVbnRydXN0ZWQgY29ubmVjdGlvbiBzZW50IGludmFsaWQgZGF0YS4gU2hvdWxkIG9ubHkg
aGFwcGVuIHdoZW4gdGVzdGluZyBJUEMuIikKKworI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkp
CisKKy8vIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZW4gYXNzZXJ0aW5nIElQQy1yZWxhdGVkIGZhaWx1
cmVzLCBzbyB0aGF0IElQQyB0ZXN0aW5nIHNraXBzIHRoZSBhc3NlcnRpb25zCisvLyBhbmQgZXhw
b3NlcyBidWdzIHVuZGVybmVhdGguCitib29sIGlzVGVzdGluZ0lQQygpOworCiBjbGFzcyBJUENU
ZXN0ZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAg
IElQQ1Rlc3RlcigpOwpAQCAtNTIsNiArNTksMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Nob3VsZFN0b3AgeyBmYWxzZSB9OwogfTsKIAorI2Vsc2UKKworY29uc3RleHBy
IGlubGluZSBib29sIGlzVGVzdGluZ0lQQygpCit7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAj
ZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL09iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI2OGNlNWNmZjFiZTM0ZjQ4Yzky
YWM0MTA4YjJhYTFlMDJkYzdkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL09iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyLmgKQEAgLTAsMCArMSwyMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNp
bmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gVHlwZSBmb3IgdGhlIGtleSBpbiBtYXBwaW5nIGZyb20gb2JqZWN0IGlkZW50
aWZpZXIgcmVmZXJlbmNlcyB0byBvYmplY3Qgc3RhdGUuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Y2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgT2JqZWN0SWRl
bnRpZmllclJlZmVyZW5jZSgpID0gZGVmYXVsdDsKKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJl
bmNlKFQgaWRlbnRpZmllciwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICB7CisgICAg
fQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2UoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlcnNpb247IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9p
ZGVudGlmaWVyID09IG1faWRlbnRpZmllciAmJiBvdGhlci5tX3ZlcnNpb24gPT0gbV92ZXJzaW9u
OworICAgIH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsK
KyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVy
OworICAgICAgICBlbmNvZGVyIDw8IG1fdmVyc2lvbjsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFQ+IGlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNp
b247CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcgorICAgICAgICAgICAgPj4gdmVyc2lv
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlIHsg
V1RGTW92ZSgqaWRlbnRpZmllciksICp2ZXJzaW9uIH07CisgICAgfQorcHJpdmF0ZToKKyAgICBU
IG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+OworICAgIE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKFJlZmVyZW5jZSByZWZlcmVu
Y2UpCisgICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsKKyAgICB9CisgICAg
VCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2UuaWRlbnRpZmllcigpOyB9
CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlLnZlcnNp
b24oKTsgfQorICAgIFJlZmVyZW5jZSByZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
ZW5jZTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9yZWZlcmVu
Y2U7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7
CisgICAgICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlOworICAgICAgICBpZiAoIWRlY29kZXIuaXNW
YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IE9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSB9Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZlcmVuY2UgbV9yZWZlcmVuY2U7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllcldyaXRlUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNl
PFQ+OworICAgIHN0YXRpYyBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD4gZ2VuZXJh
dGVGb3JBZGQoKSB7IHJldHVybiB7IHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIDAgfSwgMCB9
OyB9CisKKyAgICBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVy
ZW5jZSwgdWludDY0X3QgcGVuZGluZ1JlYWRzKQorICAgICAgICA6IG1fcmVmZXJlbmNlKHJlZmVy
ZW5jZSkKKyAgICAgICAgLCBtX3BlbmRpbmdSZWFkcyhwZW5kaW5nUmVhZHMpCisgICAgeworICAg
IH0KKyAgICBUIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5pZGVudGlm
aWVyKCk7IH0KKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVu
Y2UudmVyc2lvbigpOyB9CisgICAgdWludDY0X3QgcGVuZGluZ1JlYWRzKCkgY29uc3QgeyByZXR1
cm4gbV9wZW5kaW5nUmVhZHM7IH0KKyAgICBSZWZlcmVuY2UgcmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2U7IH0KKyAgICBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+IHJl
dGlyZWRSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiB7IGlkZW50aWZpZXIoKSwgdmVyc2lvbigp
ICsgMSB9OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX3JlZmVy
ZW5jZTsKKyAgICAgICAgZW5jb2RlciA8PCBtX3BlbmRpbmdSZWFkczsKKyAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T2JqZWN0SWRlbnRp
ZmllcldyaXRlUmVmZXJlbmNlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlPiByZWZlcmVuY2U7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBlbmRpbmdSZWFkczsKKworICAgICAgICBkZWNvZGVyID4+IHJlZmVy
ZW5jZQorICAgICAgICAgICAgPj4gcGVuZGluZ1JlYWRzOworICAgICAgICBpZiAoIWRlY29kZXIu
aXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIE9iamVjdElkZW50aWZpZXJXcml0ZVJlZmVyZW5jZSB7IFdURk1vdmUoKnJlZmVyZW5jZSks
ICpwZW5kaW5nUmVhZHMgfTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmZXJlbmNlIG1fcmVm
ZXJlbmNlOworICAgIHVpbnQ2NF90IG1fcGVuZGluZ1JlYWRzIHsgMCB9OworfTsKKworLy8gQ2xh
c3MgdG8gZ2VuZXJhdGUgcmVhZCBhbmQgd3JpdGUgcmVmZXJlbmNlcyB0byBhbiBPYmplY3RJZGVu
dGlmZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT2JqZWN0SWRlbnRpZmllclJlZmVy
ZW5jZVRyYWNrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9iamVjdElkZW50aWZpZXJS
ZWZlcmVuY2VUcmFja2VyKTsKK3B1YmxpYzoKKyAgICB1c2luZyBSZWFkUmVmZXJlbmNlID0gT2Jq
ZWN0SWRlbnRpZmllclJlYWRSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgV3JpdGVSZWZlcmVuY2Ug
PSBPYmplY3RJZGVudGlmaWVyV3JpdGVSZWZlcmVuY2U8VD47CisgICAgdXNpbmcgUmVmZXJlbmNl
ID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPjsKKworICAgIGV4cGxpY2l0IE9iamVjdElk
ZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyKFQgaWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorICAgIGV4cGxpY2l0IE9iamVjdElkZW50
aWZpZXJSZWZlcmVuY2VUcmFja2VyKFJlZmVyZW5jZSByZWZlcmVuY2UpCisgICAgICAgIDogbV9p
ZGVudGlmaWVyKHJlZmVyZW5jZS5pZGVudGlmaWVyKCkpCisgICAgICAgICwgbV92ZXJzaW9uKHJl
ZmVyZW5jZS52ZXJzaW9uKCkpCisgICAgeworICAgIH0KKyAgICAvLyBUaHJlYWQgc2FmZS4KKyAg
ICBSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wZW5kaW5nUmVh
ZHMrKzsKKyAgICAgICAgcmV0dXJuIFJlZmVyZW5jZSB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9u
IH07CisgICAgfQorICAgIC8vIE5vdCB0aHJlYWQgc2FmZS4gQ2xpZW50IG11c3QgY29vcmRpbmF0
ZSB3cml0ZXMgYW5kIHJlYWRzIGFueXdheS4KKyAgICBXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4geyB7IG1faWRlbnRpZmllciwgbV92ZXJzaW9uKysg
fSwgbV9wZW5kaW5nUmVhZHMuZXhjaGFuZ2UoMCkgfTsKKyAgICB9CisgICAgVCBpZGVudGlmaWVy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBUIG1faWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIHN0ZDo6YXRvbWlj
PHVpbnQ2NF90PiBtX3BlbmRpbmdSZWFkcyB7IDAgfTsKKyAgICBtdXRhYmxlIHVpbnQ2NF90IG1f
dmVyc2lvbiB7IDAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGFk
ZChIYXNoZXImIGhhc2hlciwgT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiByZWZlcmVuY2Up
Cit7CisgICAgYWRkKGhhc2hlciwgcmVmZXJlbmNlLmlkZW50aWZpZXIoKSk7CisgICAgYWRkKGhh
c2hlciwgcmVmZXJlbmNlLnZlcnNpb24oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJLaXQ6Ok9iamVj
dElkZW50aWZpZXJSZWZlcmVuY2U8VD4mIHJlZmVyZW5jZSkKK3sKKyAgICB0cyA8PCAiT2JqZWN0
SWRlbnRpZmllclJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8
PCByZWZlcmVuY2UudmVyc2lvbigpIDw8ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBXZWJLaXQ6Ok9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2Up
Cit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZpZXJSZWFkUmVmZXJlbmNlKCIgPDwgcmVmZXJl
bmNlLmlkZW50aWZpZXIoKSA8PCAiLCAiIDw8IHJlZmVyZW5jZS52ZXJzaW9uKCkgPDwgIikiOwor
ICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllcldy
aXRlUmVmZXJlbmNlPFQ+JiByZWZlcmVuY2UpCit7CisgICAgdHMgPDwgIk9iamVjdElkZW50aWZp
ZXJXcml0ZVJlZmVyZW5jZSgiIDw8IHJlZmVyZW5jZS5pZGVudGlmaWVyKCkgPDwgIiwgIiA8PCBy
ZWZlcmVuY2UudmVyc2lvbigpIDw8ICIsICIgPDwgcmVmZXJlbmNlLnBlbmRpbmdSZWFkcygpIDw8
ICIpIjsKKyAgICByZXR1cm4gdHM7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZTxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViS2l0OjpPYmplY3RJZGVu
dGlmaWVyUmVmZXJlbmNlPFQ+PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBIYXNoVHJhaXRzPFQ+OjplbXB0eVZhbHVlSXNaZXJvOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6T2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZTxUPj4geworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6
T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVIYXNoKHJlZmVyZW5jZSk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFdlYktpdDo6T2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZTxUPiYgYSwgY29uc3Qg
V2ViS2l0OjpPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFQ+JiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEgPT0gYjsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gRGVmYXVsdEhhc2g8VD46OnNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RocmVhZFNhZmVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
aHJlYWRTYWZlT2JqZWN0SGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMDllNWJhOGE0ODFiMzY1MDE2NzRm
MmUwZWM3OTJkMzg1YTVhODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9UaHJlYWRTYWZlT2JqZWN0SGVhcC5oCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisjaW5jbHVkZSAiSVBDVGVzdGVyLmgiCisjaW5jbHVkZSAiT2JqZWN0SWRlbnRpZmll
clJlZmVyZW5jZVRyYWNrZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRBc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBDb250YWluZXIgdGhhdCBob2xkcyBpZGVudGlm
aWVyIC0+IG9iamVjdCBtYXBwaW5nIGJldHdlZW4gdHdvIHByb2Nlc3Nlcy4KKy8vIFVzZWQgaW4g
c2NlbmFyaW9zIHdoZXJlIHRoZSBob2xkZXIgcHJvY2VzcyBwcm9jZXNzZXMgbWVzc2FnZXMgd2l0
aCB0aGUgb2JqZWN0IHJlZmVyZW5jZXMgaW4gbXVsdGlwbGUKKy8vIHRocmVhZHMuIGBUaHJlYWRT
YWZlT2JqZWN0SGVhcGAgdHJhY2tzIHRoZSByZWFkIGFuZCB3cml0ZSByZWZlcmVuY2VzIHRvIHRo
ZSBjb250ZW50IHBvaW50ZWQKKy8vIGJ5IGEgcGFydGljdWxhciBpZGVudGlmaWVyLgorLy8gUGVu
ZGluZyByZWFkcyBtYXkgYmxvY2sgbmV3IHdyaXRlcy4gQWx0ZXJuYXRpdmVseSBuZXcgd3JpdGVz
IGNhbiBza2lwIGFoZWFkIG9mIHRoZSByZWFkcywKKy8vIGZvciBleGFtcGxlIGluIGNvcHktb24t
d3JpdGUgc2NlbmFyaW9zLgorLy8gUGVuZGluZyB3cml0ZXMgYmxvY2sgcmVhZHMuCisvLyBDdXJy
ZW50bHkgaW1wbGVtZW50ZWQgb25seSBmb3IgcmVhZC1vbmx5IChjcmVhdGUtcmVhZC1kZXN0cm95
KSBvciBjb3B5LW9uLXdyaXRlIHR5cGVzLAorLy8gZS5nLiBubyB0d28tcGhhc2UgZ2V0KCkgb3Bl
cmF0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50
aWZpZXIsIHR5cGVuYW1lIEhlbGRUeXBlPgorY2xhc3MgVGhyZWFkU2FmZU9iamVjdEhlYXAgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmll
ciwgSGVsZFR5cGU+PiB7CitwdWJsaWM6CisgICAgdXNpbmcgUmVhZFJlZmVyZW5jZSA9IHR5cGVu
YW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2VyPElkZW50aWZpZXI+OjpSZWFkUmVm
ZXJlbmNlOworICAgIHVzaW5nIFdyaXRlUmVmZXJlbmNlID0gdHlwZW5hbWUgT2JqZWN0SWRlbnRp
ZmllclJlZmVyZW5jZVRyYWNrZXI8SWRlbnRpZmllcj46OldyaXRlUmVmZXJlbmNlOworICAgIHVz
aW5nIFJlZmVyZW5jZSA9IHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJSZWZlcmVuY2VUcmFja2Vy
PElkZW50aWZpZXI+OjpSZWZlcmVuY2U7CisKKyAgICAvLyBXYWl0cyB1bnRpbCBhIHdyaXRlIGNy
ZWF0ZXMgdGhlIHJlZmVyZW5jZSBhbmQgdGhlbiByZXRpcmVzIHRoZSByZWFkIG9yCisgICAgLy8g
dGltZXMgb3V0LgorICAgIEhlbGRUeXBlIHJldGlyZShSZWFkUmVmZXJlbmNlJiYsIElQQzo6VGlt
ZW91dCk7CisKKyAgICAvLyBJbnNlcnRzIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBvciBy
ZW1vdmVzIGFuIG9sZCBvbmUgYW5kIHRoZW4gcmV0aXJlcyB0aGUgd3JpdGUgb3IKKyAgICAvLyB0
aW1lcyBvdXQuCisgICAgLy8gSWYgdGltZW91dCBpcyBwYXNzZWQsIHdhaXRzIHVudGlsIHBlbmRp
bmcgcmVhZHMgYXJlIGRvbmUuCisgICAgLy8gSXQgaXMgYSBjYWxsZXIgZXJyb3IgdG8gbm90IHdh
aXQgYW5kIG11dGF0ZSB0aGUgb2xkIG9iamVjdC4KKyAgICB2b2lkIHJldGlyZShXcml0ZVJlZmVy
ZW5jZSYmLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG5ld09iamVjdCwgc3RkOjpvcHRpb25h
bDxJUEM6OlRpbWVvdXQ+KTsKKworICAgIHZvaWQgcmV0aXJlUmVtb3ZlKFdyaXRlUmVmZXJlbmNl
JiYpOworCisgICAgdm9pZCBjbGVhcigpOworcHJpdmF0ZToKKyAgICBMb2NrIG1fb2JqZWN0c0xv
Y2s7CisgICAgQ29uZGl0aW9uIG1fb2JqZWN0c0NvbmRpdGlvbjsKKyAgICBzdHJ1Y3QgUmVmZXJl
bmNlU3RhdGUgeworICAgICAgICB1aW50NjRfdCByZXRpcmVkUmVhZHMgeyAwIH07CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbmFsUmVhZDsgLy8gUmVtb3ZlIGFmdGVyIGBmaW5h
bFJlYWRgIHJlYWRzLgorICAgICAgICBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiBvYmplY3Q7IC8v
IE9iamVjdCBvciB0b21ic3RvbmUuCisKKyAgICAgICAgUmVmZXJlbmNlU3RhdGUoKSA9IGRlZmF1
bHQ7CisgICAgICAgIGV4cGxpY2l0IFJlZmVyZW5jZVN0YXRlKEhlbGRUeXBlJiYgb2JqZWN0KQor
ICAgICAgICAgICAgOiBvYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgLy8gVG9tYnN0b25lIGNvbnN0cnVjdG9yLgorICAgICAgICBleHBsaWNpdCBS
ZWZlcmVuY2VTdGF0ZSh1aW50NjRfdCBmaW5hbFJlYWQpCisgICAgICAgICAgICA6IGZpbmFsUmVh
ZChmaW5hbFJlYWQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07CisgICAgSGFzaE1hcDxS
ZWZlcmVuY2UsIFJlZmVyZW5jZVN0YXRlPiBtX29iamVjdHMgV1RGX0dVQVJERURfQllfTE9DSyht
X29iamVjdHNMb2NrKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVu
YW1lIEhlbGRUeXBlPgorSGVsZFR5cGUgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwg
SGVsZFR5cGU+OjpyZXRpcmUoUmVhZFJlZmVyZW5jZSYmIHJlYWQsIElQQzo6VGltZW91dCB0aW1l
b3V0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX29iamVjdHNMb2NrIH07CisgICAgZG8gewor
ICAgICAgICBhdXRvIGl0ID0gbV9vYmplY3RzLmZpbmQocmVhZC5yZWZlcmVuY2UoKSk7CisgICAg
ICAgIGlmIChpdCAhPSBtX29iamVjdHMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0YXRl
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgaWYgKHN0YXRlLm9iamVjdCkgeworICAgICAgICAg
ICAgICAgIEhlbGRUeXBlIHJlc3VsdCA9ICpzdGF0ZS5vYmplY3Q7CisgICAgICAgICAgICAgICAg
c3RhdGUucmV0aXJlZFJlYWRzKys7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmZpbmFsUmVh
ZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdGUuZmluYWxSZWFkID49IHN0YXRl
LnJldGlyZWRSZWFkcyk7IC8vIFRydXN0ZWQgYXNzZXJ0IGJlY2F1c2UgdGhpcyBpcyBlbnN1cmVk
IG9uIGBmaW5hbFJlYWRgIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5maW5hbFJlYWQgPT0gc3RhdGUucmV0aXJlZFJlYWRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbV9vYmpl
Y3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2NrLCB0aW1lb3V0LmRlYWRsaW5lKCkp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXIsIHR5cGVuYW1lIEhlbGRU
eXBlPgordm9pZCBUaHJlYWRTYWZlT2JqZWN0SGVhcDxJZGVudGlmaWVyLCBIZWxkVHlwZT46OnJl
dGlyZShXcml0ZVJlZmVyZW5jZSYmIHdyaXRlLCBzdGQ6Om9wdGlvbmFsPEhlbGRUeXBlPiYmIG9i
amVjdCwgc3RkOjpvcHRpb25hbDxJUEM6OlRpbWVvdXQ+IHRpbWVvdXQpCit7CisgICAgY29uc3Qg
Ym9vbCB3YWl0Rm9yUGVuZGluZ1JlYWRzID0gdGltZW91dC5oYXNfdmFsdWUoKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9vYmplY3RzTG9jayB9OworICAgIGRvIHsKKyAgICAgICAgYXV0byBpdCA9
IG1fb2JqZWN0cy5maW5kKHdyaXRlLnJlZmVyZW5jZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
b2JqZWN0cy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byYgc3RhdGUgPSBpdC0+dmFsdWU7Cisg
ICAgICAgICAgICBpZiAoc3RhdGUuZmluYWxSZWFkICYmIHN0YXRlLm9iamVjdCkgeworICAgICAg
ICAgICAgICAgIC8vIFdyaXRlIHJlcGxheTogYGZpbmFsUmVhZGAgaXMgYXNzaWduZWQgb24gd3Jp
dGUuIENhbm5vdCBoYXZlIHRoZSBzYW1lIHZlcnNpb24gd2l0aCB3cml0ZXMuCisgICAgICAgICAg
ICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA+IHdyaXRl
LnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAgICAgLy8gV3JpdGUgdW5kZXJmbG93OiBt
b3JlIHJlYWRzIGhhdmUgYmVlbiBkb25lIHRoYW4gdGhlIHNlbmRlciBjbGFpbXMgaXMgdGhlIG1h
eGltdW0uCisgICAgICAgICAgICAgICAgQVNTRVJUX0lTX1RFU1RJTkdfSVBDKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSXQgaXMgbGlr
ZWx5IGEgY2FsbGVyIGVycm9yIHRvIHRyeSB0byBhZGQgYSBuZXcgcmVmZXJlbmNlIHdpdGggdGhl
IHNhbWUgY2xpZW50IG9iamVjdCB3aXRob3V0CisgICAgICAgICAgICAvLyB3YWl0aW5nIGZvciBw
ZW5kaW5nIHJlYWRzIG9uIHRoZSBvbGQgcmVmZXJlbmNlLgorICAgICAgICAgICAgQVNTRVJUKHdh
aXRGb3JQZW5kaW5nUmVhZHMgfHwgIXN0YXRlLm9iamVjdCB8fCAqc3RhdGUub2JqZWN0ICE9IG9i
amVjdCk7CisKKyAgICAgICAgICAgIGlmIChzdGF0ZS5yZXRpcmVkUmVhZHMgPT0gd3JpdGUucGVu
ZGluZ1JlYWRzKCkgfHwgIXdhaXRGb3JQZW5kaW5nUmVhZHMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc3RhdGUucmV0aXJlZFJlYWRzIDwgd3JpdGUucGVuZGluZ1JlYWRzKCkpCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLmZpbmFsUmVhZCA9IHdyaXRlLnBlbmRpbmdSZWFkcygpOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLnJldGlyZWRSZWFkcyA9PSB3cml0ZS5wZW5kaW5nUmVh
ZHMoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3RzLnJlbW92ZShpdCk7CisgICAgICAg
ICAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoV1RGTW92ZSh3cml0ZSkucmV0aXJlZFJlZmVyZW5jZSgpLCBSZWZl
cmVuY2VTdGF0ZSB7IFdURk1vdmUoKm9iamVjdCkgfSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8m
IG5ld1N0YXRlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEVudHJ5IHdhcyBhIHRvbWJzdG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuZXdTdGF0ZS5maW5hbFJlYWQgJiYgISpuZXdTdGF0ZS5maW5hbFJlYWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX29iamVjdHMucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdTdGF0ZS5vYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZS5vYmplY3QgPSBXVEZNb3Zl
KCpvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSByZXBsYXk6IHRo
ZSByZXRpcmVkIHdyaXRlIGFscmVhZHkgZXhpc3RzLCB0aGUgZW50cnkgd2FzIG5vdCBhIHRvbWJz
dG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfSVNfVEVTVElOR19JUEMo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9v
YmplY3RzQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXdhaXRG
b3JQZW5kaW5nUmVhZHMgfHwgIXdyaXRlLnBlbmRpbmdSZWFkcygpKSB7CisgICAgICAgICAgICAv
LyBXcml0ZSB0aGUgdG9tYnN0b25lLgorICAgICAgICAgICAgbV9vYmplY3RzLmFkZCh3cml0ZS5y
ZWZlcmVuY2UoKSwgUmVmZXJlbmNlU3RhdGUgeyB3cml0ZS5wZW5kaW5nUmVhZHMoKSB9KTsKKyAg
ICAgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICAgICAgbV9vYmplY3RzLmFkZChXVEZN
b3ZlKHdyaXRlKS5yZXRpcmVkUmVmZXJlbmNlKCksIFJlZmVyZW5jZVN0YXRlIHsgV1RGTW92ZSgq
b2JqZWN0KSB9KTsKKyAgICAgICAgICAgIG1fb2JqZWN0c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodGltZW91dCk7
CisgICAgICAgIGlmICghbV9vYmplY3RzQ29uZGl0aW9uLndhaXRVbnRpbChtX29iamVjdHNMb2Nr
LCB0aW1lb3V0LT5kZWFkbGluZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gd2hpbGUg
KHRydWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxk
VHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9iamVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+Ojpy
ZXRpcmVSZW1vdmUoV3JpdGVSZWZlcmVuY2UmJiBvYmplY3QpCit7CisgICAgcmV0aXJlKFdURk1v
dmUob2JqZWN0KSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJZGVudGlmaWVyLCB0eXBlbmFtZSBIZWxkVHlwZT4KK3ZvaWQgVGhyZWFkU2FmZU9i
amVjdEhlYXA8SWRlbnRpZmllciwgSGVsZFR5cGU+OjpjbGVhcigpCit7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb2JqZWN0c0xvY2sgfTsKKyAgICBtX29iamVjdHMuY2xlYXIoKTsKK30KKworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmNwcAppbmRleCA0ZGUxZDBl
ZDJhN2JlNDllM2NiYmI5NWUzNzdmNTQ1MDlmYWMwN2FkLi43OGY3MzEzNGNlNmE3YTIxNGNkYzlk
ZTA1YzQ3NTM3MmUxN2M5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVCeXRlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgQXRvbVN0cmluZyBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6dHJh
Y2tJRCgpIGNvbnN0CiAgICAgcmV0dXJuIEF0b21TdHJpbmc6Om51bWJlcihtX3RyYWNrSUQpOwog
fQogCi1QbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUJ5dGVSYW5nZTo6cGxhdGZvcm1TYW1wbGUo
KQorUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVCeXRlUmFuZ2U6OnBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBQbGF0Zm9ybVNhbXBsZTo6Qnl0ZVJhbmdl
U2FtcGxlVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVNhbXBsZUJ5dGVSYW5nZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKaW5kZXggYjhlNGQ3
NmNlNmYzOTI4NTc2ZTlmYjFlZjk2MmI0MDQ5N2UzZGMzMS4uZjgzMzZiZjAxMzcyMTA5MGRhMTkz
NzhmYjVhNDUzYzhkYWNhNTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQnl0ZVJhbmdlLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZVJhbmdlPiBi
eXRlUmFuZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2J5dGVSYW5nZTsgfQogCiAgICAgQXRv
bVN0cmluZyB0cmFja0lEKCkgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1w
bGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5
KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjVj
NWJkYzllZjg4NDM3ODgzOTlmYWFjZWU1ZTI5NGU4YWQ5YTZhMy4uNTA4ZGE3YTU3ZWIwMjYyM2E3
MGQwZDFhMThmYjdlN2RmZDkyYmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC03MCw2ICs3MCw3IEBAIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC03NDUsNiArNzQ2LDcgQEAgV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5j
cHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAgQG5v
LXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTg4Myw2ICs4ODUsNyBAQCBSZW1v
dGVEZXZpY2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVFeHRlcm5hbFRleHR1cmVNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVHUFVQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1v
dGVRdWVyeVNldE1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZVF1ZXVlTWVzc2FnZVJlY2VpdmVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMGM2ODE4NWRmOTlhYTc1NzhlNTBiNzIyM2YxMDVkNjk3ZTU3NzM0NC4uM2E4NTRkZDBl
MDkzZWMwM2I4YWExZTczODNiMGNhYmNiMGFkNWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTExLDYgKzUxMTEsMTMgQEAKIAkJ
N0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNTBFOTdGMjc3MUY2Q0UwMDNEQUFDNCAvKiBJUENU
ZXN0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSVBDVGVzdGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I1MEU5ODAyNzcxRjZDRjAwM0RBQUM0IC8qIElQQ1Rlc3Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJUENUZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I1QTNEQTAyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREExMjdBN0RDMUEw
MDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlVmlkZW9GcmFtZVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMjI3QTdEQzFBMDA2QzZGOTcgLyogUmVtb3RlVmlk
ZW9GcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RBMzI3
QTdEQzZDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNUEzREE3MjdBN0RDQkMwMDZDNkY5NyAvKiBSZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjVBM0RBODI3QTdEQ0JDMDA2QzZGOTcgLyogUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjVBM0RD
NTI3QUU1MDFBMDA2QzZGOTcgLyogT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gT2JqZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUxMzYsNiArNTE0Myw3IEBACiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVk
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCRERBMzNGMjc1NjUyRUEwMDM4NjU5RSAvKiBBdXhpbGlhcnlQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JEREEzNDAyNzU2NTJF
QTAwMzg2NTlFIC8qIEF1eGlsaWFyeVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBU
aHJlYWRTYWZlT2JqZWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRTYWZlT2JqZWN0SGVh
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2
ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4MDAsNiArNjgwOCwxMCBAQAogCQkJCUNEODI1MkQxMjVE
NDY0QUIwMDg2MkZEOCAvKiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLywKIAkJCQlD
RDgyNTJEMzI1RDQ2NEJGMDA4NjJGRDggLyogUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLm1l
c3NhZ2VzLmluICovLAogCQkJCUNEODI1MkQ0MjVENDY1MTAwMDg2MkZEOCAvKiBSZW1vdGVSZW1v
dGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTAyN0E3REMxQTAw
NkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggKi8sCisJCQkJN0I1QTNEQTMy
N0E3REM2QzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgKi8sCisJCQkJN0I1
QTNEQTIyN0E3REMxQTAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVQcm94eS5oICovLAorCQkJ
CTdCNUEzREExMjdBN0RDMUEwMDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJMUREMkE2M0EyNTVERTZEMTAwRkY3QjZGIC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTFERDJBNjM5MjU1REU2RDEwMEZGN0I2RiAvKiBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMUREMkE2NkYyNTYyMkYxMTAwRkY3QjZG
IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCkBAIC02ODkwLDYg
KzY5MDIsOCBAQAogCQkJCTFERDJBNjY2MjU2MUVEMDQwMEZGN0I2RiAvKiBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwN0UxOUYwNzIzRDREQzg4MDA5NEZGQjQg
LyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovLAogCQkJCTA3RTE5RjA2MjNENERDODgwMDk0
RkZCNCAvKiBSZW1vdGVUZXh0VHJhY2tQcm94eS5oICovLAorCQkJCTdCNUEzREE4MjdBN0RDQkMw
MDZDNkY5NyAvKiBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgKi8sCisJCQkJN0I1QTNE
QTcyN0E3RENCQzAwNkM2Rjk3IC8qIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggKi8sCiAJ
CQkJMDcxQkM1ODQyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAg
Ki8sCiAJCQkJMDcxQkM1ODUyM0NDMkMwOTAwNjgwRDdDIC8qIFJlbW90ZVZpZGVvVHJhY2tQcm94
eS5oICovLAogCQkJCTA3RTE5RjA1MjNENERDODgwMDk0RkZCNCAvKiBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbi5oICovLApAQCAtNzI2Nyw2ICs3MjgxLDcgQEAKIAkJCQkxQURD
Qjg2ODE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJ
CTFBRENCODY5MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAog
CQkJCTVDRDc0OEI1MjNDOEVCMTkwMDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oICovLAorCQkJCTdCNUEzREM1MjdBRTUwMUEwMDZDNkY5NyAvKiBPYmplY3RJZGVudGlm
aWVyUmVmZXJlbmNlVHJhY2tlci5oICovLAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0Ig
LyogUGVyc2lzdGVuY3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMxN0YxNiAv
KiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwICovLApAQCAtNzMwNyw2ICs3MzIyLDcgQEAKIAkJ
CQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9u
bHkuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0
ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25V
cGRhdGVSZXN1bHQuaCAqLywKKwkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFk
U2FmZU9iamVjdEhlYXAuaCAqLywKIAkJCQkyRkQ0M0I5MjFGQTAwNkEzMDA4M0Y1MUMgLyogVG91
Y2hCYXJNZW51RGF0YS5jcHAgKi8sCiAJCQkJMkZENDNCOTExRkEwMDZBMTAwODNGNTFDIC8qIFRv
dWNoQmFyTWVudURhdGEuaCAqLywKIAkJCQkyRjgwOURENTFGQkQxQkM5MDA1RkU2M0EgLyogVG91
Y2hCYXJNZW51SXRlbURhdGEuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBlMjlmNGJkNTYxMzJlY2Q2
NzE3MWJjMzdjYjJjYzU2MWJlMTI5MzU5Li5iODNjMDcwZDZjNDNmOGQ3MzFlZWU5ODI0MmQzNThj
YzI5OGI4Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTAgQEAKICNpbmNsdWRlICJVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCisjZW5kaWYKKwog
I2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCkBA
IC0yMDgsNiArMjEyLDEwIEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24o
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNUykK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4g
UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24o
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisjZW5kaWYKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9TZXNzaW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDdhZTFlZTc2ZGM0YjA3YzQwM2Y2MGI4YWQx
M2RhZDliODdiZGVkMGEuLjEyZDMyZTM1ODVmMmZhODE3NGQyYzMxZWM3NDAxY2I1N2NmZGE1ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsNiAr
MzUsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJSZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTgsNiArMTIyLDIzIEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBiCiAgICAgfQogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzPiByZXN1bHQ7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlOjpSZXBseShyZXN1bHQpKTsKKyAg
ICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6Y3JlYXRlKG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSwgV1RGTW92ZSgqcmVzdWx0KSk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZy
b21NZWRpYShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggMjlmMDE5ODcxOTU1OTk4NzkyZWU3Nzk1ZDlh
YTYwYzJmMzk3Mzk3MS4uNWQxY2FiMjE4Zjc4NWNiYTExNDZhODkxMjJiMzBkMTBjYzY4MzA3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTY1LDYgKzY1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAg
ICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKCkgZmluYWw7CisjZW5kaWYKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwogICAgIGJv
b2wgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdM
T2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggZmY3ZTE0OGQ2YjVl
ZWJhMDI0YTkzZTNlYjIxMjYyYmFiNzIyODA4Yy4uMGI4YmJhMTZjZmVjMTZiMmJhMTg3MTcxYWZk
OWIzYjMxMzFkNjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTksOSArOTgsNiBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKLSNl
bmRpZgogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKQEAgLTExNCwyMCArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKLXsKLSAgICBp
ZiAoIW1fZGlzcGxheUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCi0gICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5
U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNl
LT5zdXJmYWNlKCkpOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpD
OjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKLX0KLSNlbmRpZgotCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjQyNTAyNjE1ZGEyNzJiM2JmNDZjZjQ2NDk2MWI3ZjhlYjJhMWYxYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlVHJhY2tlci5oIgorI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVWaWRlb0Zy
YW1lSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZp
ZXJUeXBlPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlID0gT2JqZWN0SWRl
bnRpZmllclJlYWRSZWZlcmVuY2U8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+OwordXNpbmcg
UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlID0gT2JqZWN0SWRlbnRpZmllcldyaXRlUmVm
ZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJh
bWVSZWZlcmVuY2UgPSBPYmplY3RJZGVudGlmaWVyUmVmZXJlbmNlPFJlbW90ZVZpZGVvRnJhbWVJ
ZGVudGlmaWVyPjsKK3VzaW5nIFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2VUcmFja2VyID0gT2Jq
ZWN0SWRlbnRpZmllclJlZmVyZW5jZVRyYWNrZXI8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXI+
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDhiYjIyOWIwMjUxZmE4MmQ3NjFlN2JkMzZlMDBjZjcxYTA2MmJlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXBNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGll
cyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBXVEZNb3ZlKHJlZmVyZW5jZSksCisgICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRp
bWUoKSwKKyAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgpLAorICAgICAgICBtZWRp
YVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCisgICAgICAgIGV4cGFuZGVkSW50U2l6ZShtZWRpYVNh
bXBsZS5wcmVzZW50YXRpb25TaXplKCkpCisgICAgfTsKK30KKworUmVmUHRyPFJlbW90ZVZpZGVv
RnJhbWVQcm94eT4gUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpjcmVhdGUoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmJiBwcm9wZXJ0
aWVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlVmlkZW9GcmFtZVByb3h5KGNv
bm5lY3Rpb24sIFdURk1vdmUocHJvcGVydGllcykpKTsKK30KKwordm9pZCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OnJlbGVhc2VVbnVzZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQcm9w
ZXJ0aWVzJiYgcHJvcGVydGllcykKK3sKKyAgICByZWxlYXNlKGNvbm5lY3Rpb24sIHsgeyBwcm9w
ZXJ0aWVzLnJlZmVyZW5jZS5pZGVudGlmaWVyKCksIHByb3BlcnRpZXMucmVmZXJlbmNlLnZlcnNp
b24oKSB9LCAwIH0pOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlJlbW90ZVZpZGVvRnJh
bWVQcm94eShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb3BlcnRpZXMmJiBwcm9wZXJ0
aWVzKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3JlZmVyZW5jZVRy
YWNrZXIocHJvcGVydGllcy5yZWZlcmVuY2UpCisgICAgLCBtX3ByZXNlbnRhdGlvblRpbWUocHJv
cGVydGllcy5wcmVzZW50YXRpb25UaW1lKQorICAgICwgbV9pc01pcnJvcmVkKHByb3BlcnRpZXMu
aXNNaXJyb3JlZCkKKyAgICAsIG1fcm90YXRpb24ocHJvcGVydGllcy5yb3RhdGlvbikKKyAgICAs
IG1fc2l6ZShwcm9wZXJ0aWVzLnNpemUpCit7Cit9CisKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6
flJlbW90ZVZpZGVvRnJhbWVQcm94eSgpCit7CisgICAgcmVsZWFzZShtX2Nvbm5lY3Rpb24uZ2V0
KCksIHdyaXRlKCkpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciBSZW1vdGVWaWRl
b0ZyYW1lUHJveHk6OmlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlZmVyZW5j
ZVRyYWNrZXIuaWRlbnRpZmllcigpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVu
Y2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp3cml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cmVmZXJlbmNlVHJhY2tlci53cml0ZSgpOworfQorCitSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOworfQorCitNZWRpYVRpbWUgUmVtb3RlVmlkZW9GcmFt
ZVByb3h5OjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcmVzZW50
YXRpb25UaW1lOworfQorCitXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OnBsYXRmb3JtU2FtcGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBXZWJDb3JlOjpQ
bGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZSwgeyB9IH07Cit9CisKK01l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9Sb3Rh
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm90YXRpb247Cit9CisKK2Jvb2wgUmVtb3Rl
VmlkZW9GcmFtZVByb3h5Ojp2aWRlb01pcnJvcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
c01pcnJvcmVkOworfQorCit1aW50MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4
ZWxGb3JtYXQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJvbSB0aGUgYmFzZSBj
bGFzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVNhbXBsZVZpZGVvRnJhbWU+IFJlbW90ZVZpZGVvRnJh
bWVQcm94eTo6dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKwordm9pZCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnJlbGVhc2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJiByZWxlYXNlV3Jp
dGUpCit7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcDo6UmVsZWFzZVZpZGVvRnJhbWUoV1RGTW92ZShyZWxlYXNlV3JpdGUpKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM1MWRl
NDUyOTgyYWViZjE2ZDM4ZTBiZTg1MjMyZTcwNjAyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBA
IC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgQ29ubmVjdGlvbjsKK2NsYXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKKworLy8gQSBXZWJDb3JlOjpWaWRlb0ZyYW1l
IGNsYXNzIHRoYXQgcG9pbnRzIHRvIGEgY29uY3JldGUgV2ViQ29yZTo6VmlkZW9GcmFtZSBpbnN0
YW5jZQorLy8gaW4gYW5vdGhlciBwcm9jZXNzLCBHUFUgcHJvY2Vzcy4KK2NsYXNzIFJlbW90ZVZp
ZGVvRnJhbWVQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVW
aWRlb0ZyYW1lUHJveHkpOworcHVibGljOgorICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsKKyAgICAg
ICAgLy8gVGhlIHJlY2VpdmVyIG93bnMgdGhlIHJlZmVyZW5jZSwgc28gaXQgbXVzdCBiZSByZWxl
YXNlZCB2aWEgZWl0aGVyIGFkb3B0aW9uIHRvCisgICAgICAgIC8vIGBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmNyZWF0ZSgpYCBvciB2aWEgYFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cmVsZWFzZVVu
dXNlZCgpYC4KKyAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlIHJlZmVy
ZW5jZTsKKyAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CisgICAgICAgIGJvb2wg
aXNNaXJyb3JlZCB7IGZhbHNlIH07CisgICAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24geyBW
aWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKKwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0YXRp
YyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNl
JiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CisKKyAgICBzdGF0aWMgUmVmUHRyPFJl
bW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiYsIFByb3BlcnRpZXMm
Jik7CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGVuZC1wb2ludHMgdGhhdCBjYXB0dXJlIGNyZWF0
aW9uIG1lc3NhZ2VzIHRoYXQgYXJlIHNlbnQgZnJvbSBHUFVQIGJ1dAorICAgIC8vIHdob3NlIGRl
c3RpbmF0aW9ucyB3ZXJlIHJlbGVhc2VkIGluIFdQIGJlZm9yZSBtZXNzYWdlIHdhcyBwcm9jZXNz
ZWQuCisgICAgc3RhdGljIHZvaWQgcmVsZWFzZVVudXNlZChJUEM6OkNvbm5lY3Rpb24mLCBQcm9w
ZXJ0aWVzJiYpOworCisgICAgflJlbW90ZVZpZGVvRnJhbWVQcm94eSgpIGZpbmFsOworCisgICAg
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OworICAgIFJlbW90
ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZSB3cml0ZSgpIGNvbnN0OworICAgIFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlIHJlYWQoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkludFNpemUg
c2l6ZSgpIGNvbnN0OworCisgICAgLy8gV2ViQ29yZTo6VmlkZW9GcmFtZSBvdmVycmlkZXMuCisg
ICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKKyAgICBWaWRlb1Jv
dGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpZGVvTWlycm9y
ZWQoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
VmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworICAgIC8vIEZJWE1FOiBXaGVu
IFZpZGVvRnJhbWUgaXMgbm90IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQu
CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5h
bDsKKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5KElQQzo6Q29ubmVjdGlvbiYsIFByb3BlcnRp
ZXMmJik7CisgICAgc3RhdGljIHZvaWQgcmVsZWFzZShJUEM6OkNvbm5lY3Rpb24mLCBSZW1vdGVW
aWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2UmJik7CisKKyAgICBzdGF0aWMgaW5saW5lIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKworICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKKyAgICBSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlVHJhY2tlciBt
X3JlZmVyZW5jZVRyYWNrZXI7CisgICAgY29uc3QgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGlt
ZTsKKyAgICBjb25zdCBib29sIG1faXNNaXJyb3JlZDsKKyAgICBjb25zdCBWaWRlb1JvdGF0aW9u
IG1fcm90YXRpb247CisgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJv
cGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBwcmVzZW50YXRpb25UaW1lCisgICAgICAgIDw8IGlzTWlycm9yZWQKKyAgICAgICAgPDwgcm90
YXRpb24KKyAgICAgICAgPDwgc2l6ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlPiByZWZlcmVuY2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxNZWRpYVRpbWU+IHByZXNlbnRhdGlvblRpbWU7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpc01pcnJvcmVkOworICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9Sb3RhdGlv
bj4gdmlkZW9Sb3RhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFNpemU+IHNp
emU7CisgICAgZGVjb2RlciA+PiBwcmVzZW50YXRpb25UaW1lCisgICAgICAgID4+IGlzTWlycm9y
ZWQKKyAgICAgICAgPj4gdmlkZW9Sb3RhdGlvbgorICAgICAgICA+PiBzaXplOworICAgIGlmICgh
ZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3ZlKCpwcmVzZW50YXRp
b25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSB9OworfQorCit9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBX
ZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpWaWRlb0ZyYW1lKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIG1lZGlhU2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFt
ZVByb3h5VHlwZTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBlNWVmNDZlNjA4MjM5NDYyYWE0MDQ4Y2I3
ZDNmYTAzNDJlOThiNTc1Li43Nzk5YTMwNjFjZDVlMDVlMmJmNDJmNTdkMWM2YmM0ZGQ4NDg1OGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNDksMTIgKzUwLDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Y3JlYXRlKFNhbXBsCiAKIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIG1hbmFn
ZXIsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50JiBjbGllbnQpCiAg
ICAgOiBXZWJDb3JlOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQorICAgICwgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbigmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV9jb25u
ZWN0aW9uKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpKQorICAgICwgbV9jb25uZWN0aW9uKG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKSkKICAgICAsIG1faWRlbnRpZmllcihTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogewogICAgIG1hbmFnZXIuYWRkTGF5ZXIoKnRo
aXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRD
bGllbnQoKnRoaXMpOwogfQogCiB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlh
bGl6ZShib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYgbG9nSWRlbnRpZmllcikK
IAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgZGlzY29ubmVjdEdQVVByb2Nlc3NDb25uZWN0
aW9uSWZOZWVkZWQoKTsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OlJlbGVhc2VMYXllciB7IG1faWRlbnRpZmll
ciB9LCAwKTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnJlbW92ZUxh
eWVyKCp0aGlzKTsKQEAgLTE0MCw2ICsxNDIsMTEgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9w
YXVzZWQpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5
PihzYW1wbGUpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZVNhbXBsZSA9IGRvd25jYXN0PFJlbW90
ZVZpZGVvRnJhbWVQcm94eT4oc2FtcGxlKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyBy
ZW1vdGVTYW1wbGUucmVhZCgpIH0sIG1faWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBhdXRvIHJlbW90ZVNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
c2FtcGxlLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsK
ICAgICBpZiAoIXJlbW90ZVNhbXBsZS0+c3VyZmFjZSgpKSB7CkBAIC0xNDgsNyArMTU1LDcgQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZSB7ICpyZW1vdGVTYW1wbGUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVNh
bXBsZUNWIHsgKnJlbW90ZVNhbXBsZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQpAQCAtMTcxLDExICsx
NzgsMTggQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldERpZEZhaWwoYm9vbCB2
YWx1ZSkKIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpncHVQcm9jZXNzQ29ubmVjdGlv
bkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKIHsKICAgICBtX3NoYXJlZFZpZGVvRnJh
bWVXcml0ZXIuZGlzYWJsZSgpOworICAgIGRpc2Nvbm5lY3RHUFVQcm9jZXNzQ29ubmVjdGlvbklm
TmVlZGVkKCk7CiAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRGYWlsKCk7CiB9
CiAKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpkaXNjb25uZWN0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3NDb25uZWN0aW9u
ID0gc3RkOjpleGNoYW5nZShtX2dwdVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKSkKKyAgICAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW92ZUNsaWVudCgqdGhpcyk7Cit9CisKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDU2MzY5YWRkZjBhYmYzNDZi
MGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjA0NDRlY2YyYjg2Mjc5NDQzMjExMTNlNjlkMjZiMTJi
MjU1YmZhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYsIFdlYkNvcmU6OlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Q2xpZW50Jik7CisgICAgdm9pZCBkaXNjb25uZWN0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
Zk5lZWRlZCgpOwogCiAgICAgLy8gV2ViQ29yZTo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCiAg
ICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgV2ViQ29yZTo6SW50U2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC03Niw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXREaWRGYWlsKGJvb2wpOwogICAgIGJvb2wgY29weVNoYXJl
ZFZpZGVvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKKyAgICBHUFVQcm9jZXNzQ29ubmVjdGlv
biogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBXZWFrUHRyPFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXI+IG1fbWFuYWdlcjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNjdhNjdhYTgzMTM0MjU1YTJiMGFmNjNiYjQzY2YyMGFiN2Y2MWQ4MS4uYWM3ZDE2ZDJmMDli
YWUzNTg5Y2EwMmYxYzU0Y2EwNDZhMzAzOWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTExICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGEg
UmVtb3RlTWVkaWFTYW1wbGVQcm94eSB0byByZXByZXNlbnQgY2FwdHVyZWQgdmlkZW8gZnJhbWVz
IHVzZWQgaW4gTWVkaWEgU3RyZWFtcyBhbmQgcHJlc2VudCBpbiBHUFVQCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAu
Y3BwOgorCiAyMDIyLTAyLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTUyNS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZi
MTgxLi41ZDc0MTUyMWFkYjU5OGE4MmZhODFlMTg5NTE3MzllZDBiMjU5NzhkIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05NCw3ICs5NCwxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogI2VuZGlmCi0j
aWYgIVBMQVRGT1JNKENPQ09BKQorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKKyAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXQ0NvbnRlbnRC
dWZmZXJJZGVudGlmaWVyPiBjb250ZW50QnVmZmVyKSBTeW5jaHJvbm91cworI2VuZGlmCisjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdSQVBISUNTX0xBWUVSX1dDKQogICAgIHZvaWQgUHJl
cGFyZUZvckRpc3BsYXkoKSAtPiAoKSBTeW5jaHJvbm91cwogI2VuZGlmCiAgICAgdm9pZCBFbnN1
cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCkBAIC0xMDQsNiArMTA3LDkgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0g
e3sKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9p
ZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRl
bnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5
bmNocm9ub3VzCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2b2lkIFBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXM+IHByb3BlcnRpZXMpIFN5bmNocm9ub3VzCisj
ZW5kaWYKICAgICB2b2lkIFNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZXZlbnQpCiB7fQogfX0KQEAgLTIz
Miw3ICsyMzgsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBlX25hbWUgOiBz
dHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJldHVybiBOb25l
CiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVzIGFyZSBjb250
YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1Jl
ZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYn
LCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJuIE5vbmUKICAg
ICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCkBAIC02NDAsNyArNjQ2LDEzIEBA
IGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAgICAg
ICB3ZWJraXRfaXBjX3R5cGUgPSB3ZWJraXRfaXBjX3R5cGVzW28udHlwZV0KICAgICAgICAgICAg
ICAgICBhc3NlcnQoaXNpbnN0YW5jZSh3ZWJraXRfaXBjX3R5cGUsIGNwcF90eXBlX2NvbnRhaW5l
cikpCiAgICAgICAgICAgICAgICAgdiA9IGNwcF9hcmcod2Via2l0X2lwY190eXBlLCBvLm5hbWUg
KyAiUmVwbHkiKQotICAgICAgICAgICAgICAgIHNlbGYucHJlX2NhbGxfc3RtdHMgKz0gW2Yie3N0
cih2LnR5cGUpfSB7c3RyKHYubmFtZSl9OyJdCisgICAgICAgICAgICAgICAgaWYgby50eXBlLmlz
X2R5bmFtaWNfc3BhbigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZV9jYWxsX3N0bXRz
ICs9IFtmIntzdHIodi50eXBlKX0ge3N0cih2Lm5hbWUpfTsiXQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IExpa2VseSB0aGlzIGNyZWF0ZXMgYSBk
YW5nbGluZyByZWZlcmVuY2Ugc3BhbjxpbnQsIDI+IGFSZXBseSA9IHsgeyB9IH07LgorICAgICAg
ICAgICAgICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzU4ODkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVfY2FsbF9zdG10cyArPSBbZiJ7c3Ry
KHYudHlwZSl9IHtzdHIodi5uYW1lKX0ge3sge3sgfX0gfX07Il0KKwogICAgICAgICAgICAgICAg
IHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcih2LnR5cGUsIHYubmFtZSldCiAgICAgICAgICAg
ICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAgICAgICAgICAgICAgICAgICBz
ZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUoInNpemVfdCIpLCBmIntvLm5h
bWV9LmJ1ZlNpemUiKV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TYW1wbGVNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Nh
bXBsZU1hcC5jcHAKaW5kZXggZDE0NmNlYzRmMmVjNGNmNjkxMmQ3ZjA0OGQyODgxNTdhZGZkYzFi
OC4uYzQ1YzY3YTMxNjZiZmZiOTg3N2JjMGQ4MzRmZWY4NDRhNDg2NjUxOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTU3LDcgKzU3
LDYgQEAgcHVibGljOgogICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kZWNvZGVUaW1lOyB9CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJRDsgfQotICAgIHZvaWQgc2V0VHJhY2tJRChjb25zdCBT
dHJpbmcmIHRyYWNrSUQpIGZpbmFsIHsgbV90cmFja0lEID0gdHJhY2tJRDsgfQogICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJl
c2VudGF0aW9uU2l6ZTsgfQogICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlh
VGltZSYgb2Zmc2V0KSBmaW5hbCB7IG1fcHJlc2VudGF0aW9uVGltZSArPSBvZmZzZXQ7IG1fZGVj
b2RlVGltZSArPSBvZmZzZXQ7IH0KQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY3JlYXRlKG1fcHJlc2VudGF0aW9uVGltZSwgbV9kZWNvZGVUaW1lLCBtX2R1cmF0aW9u
LCBzdGF0aWNfY2FzdDxTYW1wbGVGbGFncz4obV9mbGFncyB8IElzTm9uRGlzcGxheWluZykpOwog
ICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxh
Z3M7IH0KLSAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJu
IHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KKyAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgUGxhdGZvcm1TYW1wbGU6
Ok5vbmUsIHsgbnVsbHB0ciB9IH07IH0KICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTEwOTc4ZmQ0Mzdh
YTFlMGFjNjRiZmFhOGI4NGE0ZjQ3YTA4YjM5Li41NGRlMTNmMDlkNzMzZDM3ZjA4YzAwZWMyMTI2
NmFiMTU4MzFjYmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTEgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZW1v
dGVNZWRpYVNhbXBsZVByb3h5IHRvIHJlcHJlc2VudCBjYXB0dXJlZCB2aWRlbyBmcmFtZXMgdXNl
ZCBpbiBNZWRpYSBTdHJlYW1zIGFuZCBwcmVzZW50IGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQ2FwdHVyZWQgV2ViR0wgdG8gYW5vdGhlciBj
b250ZXh0MmQgb3IgV2ViR0wgbm90IGltcGxlbWVudGVkIHlldCwgbWFyayBmZXcgdGVzdHMgYXMg
dGltaW5nIG91dC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjIt
MDItMTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUYWIgY2hhcmFjdGVycyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQg
d2lkdGggYWRqdXN0bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmVmMzIyYzM2OGYwMWZlZjdmNWZlYmZmYzA5MmRj
NmU4MTU1MmFjZi4uNzc2OGE3YTA0N2ViMmJiMTgyMTlkZmE0YTdhOGI1NjJhY2M3MmU0ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjIy
MCw0ICsyMjIwLDcgQEAgd2Via2l0Lm9yZy9iLzIzNDUzNiB3ZWJ4ci9oaWdoLXBlcmZvcm1hbmNl
Lmh0bWwKIHdlYmtpdC5vcmcvYi8yMzQ1MzYgZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEt
dG8tY2FudmFzLTEuaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8yMzQ1MzYgZmFzdC9tZWRp
YXN0cmVhbS9nZXRVc2VyTWVkaWEtdG8tY2FudmFzLTIuaHRtbCBbIENyYXNoIF0KIHdlYmtpdC5v
cmcvYi8yMzQ1MzYgd2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXBy
ZXZlbnQtZGVmYXVsdC5odG1sIFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMjM0NTM2IHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVv
dXQgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMzQ1MzYgd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsgVGlt
ZW91dCBdCisKKyMgQ2FwdHVyZWQgV2ViR0wgdG8gYW5vdGhlciBjb250ZXh0MmQgb3IgV2ViR0wg
bm90IGltcGxlbWVudGVkIHlldC4KK3dlYmtpdC5vcmcvYi8yMzY0OTYgZmFzdC9tZWRpYXN0cmVh
bS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwgWyBUaW1lb3V0IF0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggMjc4NmRhYzcxNWNhMWJiZWEwNGE5NDRlZDA1OTE2ZGU5MjBmZjdhMi4uNDAx
MjMyMDNiNjE4YzYyYmIxMjU1YzQzOTYwMjQ1YzBhZjRiY2IxYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTY3NywzICsxNjc3LDYgQEAg
aHR0cC93cHQvaHRtbC9zZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLWEtZWxlbWVu
dC9hLWRvd25sb2FkLWNsaWNrLTQwNC4KIAogIyByZGFyOi8vODYwMzc0MTcgV2luZG93U2VydmVy
IHJldHVybmVkIG5vdCBhbGl2ZSB3aXRoIGNvbnRleHQ6LHVucmVzcG9uc2l2ZSB3b3JrIHByb2Nl
c3NvcihzKQogWyBNb250ZXJleSsgXSBodHRwL3Rlc3RzL21vZGVsL21vZGVsLWRvY3VtZW50Lmh0
bWwgWyBTa2lwIF0KKworIyBDYXB0dXJlZCBXZWJHTCB0byBhbm90aGVyIGNvbnRleHQyZCBvciBX
ZWJHTCBub3QgaW1wbGVtZW50ZWQgeWV0Lgord2Via2l0Lm9yZy9iLzIzNjQ5NiBmYXN0L21lZGlh
c3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbCBbIFRpbWVvdXQgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>