<?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>233541</bug_id>
          
          <creation_ts>2021-11-28 03:49:38 -0800</creation_ts>
          <short_desc>[GStreamer] requestVideoFrameCallback support</short_desc>
          <delta_ts>2021-12-01 10:37:27 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818072</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-28 03:49:38 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818073</commentid>
    <comment_count>1</comment_count>
      <attachid>445238</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-28 04:03:52 -0800</bug_when>
    <thetext>Created attachment 445238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818236</commentid>
    <comment_count>2</comment_count>
      <attachid>445238</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-11-29 09:15:30 -0800</bug_when>
    <thetext>Comment on attachment 445238
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:38
&gt; +    static Ref&lt;MediaSampleGStreamer&gt; create(GRefPtr&lt;GstSample&gt;&amp;&amp; sample, const FloatSize&amp; presentationSize, const AtomString&amp; trackId, VideoRotation videoRotation = VideoRotation::None, bool videoMirrored = false, std::optional&lt;VideoSampleMetadata&gt; metadata = { })

I think it should be a std::optional&amp;&amp; and passing a std::nullopt as default;

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:40
&gt; +        return adoptRef(*new MediaSampleGStreamer(WTFMove(sample), presentationSize, trackId, videoRotation, videoMirrored, metadata));

move here

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:44
&gt; +    static Ref&lt;MediaSampleGStreamer&gt; createImageSample(PixelBuffer&amp;&amp;, const IntSize&amp; destinationSize = { }, double frameRate = 1, VideoRotation videoRotation = VideoRotation::None, bool videoMirrored = false, std::optional&lt;VideoSampleMetadata&gt; metadata = { });

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:68
&gt; +    MediaSampleGStreamer(GRefPtr&lt;GstSample&gt;&amp;&amp;, const FloatSize&amp; presentationSize, const AtomString&amp; trackId, VideoRotation = VideoRotation::None, bool videoMirrored = false, std::optional&lt;VideoSampleMetadata&gt; metadata = { });

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:93
&gt; +                auto [buf, copyMeta] = ensureVideoFrameMetadata(buffer);

Aren&apos;t these vars unused?

&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:122
&gt; +    GUniquePtr&lt;char&gt; elementNameForSinkPad(gst_element_get_name(element));

You better spare the smart ptr here. It&apos;s mostly useless.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:131
&gt; +    GUniquePtr&lt;char&gt; elementNameForSrcPad(gst_element_get_name(element));

Ditto.

&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:157
&gt; +    VideoSampleMetadata metadata;
&gt; +    metadata.captureTime = MonotonicTime::now().secondsSinceEpoch();
&gt; +    auto sample = MediaSampleGStreamer::createImageSample(WTFMove(*pixelBuffer), size(), frameRate(), sampleRotation(), false, metadata);

You might want to emplace the optional here and move it down.

&gt; Source/WebCore/platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:64
&gt; +    auto metadata = metadataFromVideoFrame(frame);
&gt; +    callOnMainThread([protectedThis = Ref { *this }, frame, metadata] {
&gt;          auto gstSample = GStreamerSampleFromLibWebRTCVideoFrame(frame);
&gt; -        auto sample = MediaSampleGStreamer::create(WTFMove(gstSample), { }, { });
&gt; +        auto sample = MediaSampleGStreamer::create(WTFMove(gstSample), { }, { }, static_cast&lt;MediaSample::VideoRotation&gt;(frame.rotation()), false, metadata);

You can probably create the optional, move the optional into the lambda and move again when calling the constructor (for this you&apos;ll need to make the lambda mutable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818289</commentid>
    <comment_count>3</comment_count>
      <attachid>445238</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-29 10:23:44 -0800</bug_when>
    <thetext>Comment on attachment 445238
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:38
&gt;&gt; +    static Ref&lt;MediaSampleGStreamer&gt; create(GRefPtr&lt;GstSample&gt;&amp;&amp; sample, const FloatSize&amp; presentationSize, const AtomString&amp; trackId, VideoRotation videoRotation = VideoRotation::None, bool videoMirrored = false, std::optional&lt;VideoSampleMetadata&gt; metadata = { })
&gt; 
&gt; I think it should be a std::optional&amp;&amp; and passing a std::nullopt as default;

I wonder what&apos;s the difference :) Are we really avoiding an allocation in this scenario? Seems to add more confusion than anything else: https://ddanilov.me/the-state-of-std-optional-after-move/

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:93
&gt;&gt; +                auto [buf, copyMeta] = ensureVideoFrameMetadata(buffer);
&gt; 
&gt; Aren&apos;t these vars unused?

buf yes, copyMeta is used just below :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818660</commentid>
    <comment_count>4</comment_count>
      <attachid>445238</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-11-30 02:21:55 -0800</bug_when>
    <thetext>Comment on attachment 445238
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.h:38
&gt;&gt;&gt; +    static Ref&lt;MediaSampleGStreamer&gt; create(GRefPtr&lt;GstSample&gt;&amp;&amp; sample, const FloatSize&amp; presentationSize, const AtomString&amp; trackId, VideoRotation videoRotation = VideoRotation::None, bool videoMirrored = false, std::optional&lt;VideoSampleMetadata&gt; metadata = { })
&gt;&gt; 
&gt;&gt; I think it should be a std::optional&amp;&amp; and passing a std::nullopt as default;
&gt; 
&gt; I wonder what&apos;s the difference :) Are we really avoiding an allocation in this scenario? Seems to add more confusion than anything else: https://ddanilov.me/the-state-of-std-optional-after-move/

Yes, we should be avoiding an allocation of the std::optional object. We should do it the same way we do for the other parameters, like sample, PixelBuffer below, etc.

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:93
&gt;&gt;&gt; +                auto [buf, copyMeta] = ensureVideoFrameMetadata(buffer);
&gt;&gt; 
&gt;&gt; Aren&apos;t these vars unused?
&gt; 
&gt; buf yes, copyMeta is used just below :)

:facepalm:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818729</commentid>
    <comment_count>5</comment_count>
      <attachid>445418</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-30 07:58:35 -0800</bug_when>
    <thetext>Created attachment 445418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819153</commentid>
    <comment_count>6</comment_count>
      <attachid>445418</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2021-12-01 01:15:46 -0800</bug_when>
    <thetext>Comment on attachment 445418
Patch

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

There are a couple style issues from the bot as well.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:122
&gt; +    auto* elementNameForSinkPad = gst_element_get_name(element);

You could even inline this call as parameter of add_probe and save a var.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:131
&gt; +    auto* elementNameForSrcPad = gst_element_get_name(element);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819314</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-12-01 10:36:48 -0800</bug_when>
    <thetext>Committed r286369 (244728@main): &lt;https://commits.webkit.org/244728@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819315</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 10:37:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/85929030&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445238</attachid>
            <date>2021-11-28 04:03:52 -0800</date>
            <delta_ts>2021-11-30 07:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233541-20211128040350.patch</filename>
            <type>text/plain</type>
            <size>42895</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLjQwNzhjZjQ3Zjk3ZjkxYmQxZTRmNWFiYmQyZmRiNTc0MzI1Y2I1
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHJlcXVlc3RWaWRlb0Zy
YW1lQ2FsbGJhY2sgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWw6IEVuYWJsZSBydmZjIHN1cHBvcnQgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIx
LTExLTE5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtN
b2RlbF0gYWRkIGF1ZGlvIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYjI2Njc3OTE3OTI0MmJjNWU1
NWE2OWQzMDFhYTRjNDU2NTlmMDRjLi5lMTVmMmExM2FjYThiOTg2NzgyNjljZjdhYmQwNTIwOGQw
MjFlNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjEtMTEtMjggIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHJl
cXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVmlkZW8gZnJhbWVzIG1ldGFkYXRhIHJlcG9ydGVkIGJ5
IHRoZSBwbGF5ZXIgaXMgc3RvcmVkIGluIEdzdEJ1ZmZlcnMgYXMgYSBuZXcgR3N0TWV0YS4KKyAg
ICAgICAgUHJvY2Vzc2luZyB0aW1lcyBpcyB0cmFja2VkIGluIGNvbnZlcnRlcnMgYW5kIGRlY29k
ZXJzIHVzaW5nIHBhZCBwcm9iZXMuIFRoZSBHU3RyZWFtZXIKKyAgICAgICAgbWVkaWFzdHJlYW0g
dmlkZW8gY2FwdHVyZXIgaXMgbm93IGluc2VydGluZyBtZXRhZGF0YSB0aGF0IGluY2x1ZGVzIHRo
ZSBjYXB0dXJlIHRpbWVzdGFtcCBpbgorICAgICAgICB0aGUgYnVmZmVycy4gVGhlIFdlYlJUQyBp
bmNvbWluZyBhbmQgbW9jayBzb3VyY2VzIGFyZSB3cmFwcGluZyB0aGUgbWV0YWRhdGEgaW4gdGhl
CisgICAgICAgIE1lZGlhU2FtcGxlcyB0aGV5IGNyZWF0ZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpmcm9tR3N0Q2xvY2tUaW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NU
UGxheUJpbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNvbmZpZ3VyZVZpZGVvRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Zmx1c2hDdXJyZW50QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9GcmFtZU1l
dGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVh
bWVyLmNwcDogQWRkZWQuCisgICAgICAgICh2aWRlb0ZyYW1lTWV0YWRhdGFBUElHZXRUeXBlKToK
KyAgICAgICAgKHZpZGVvRnJhbWVNZXRhZGF0YUdldEluZm8pOgorICAgICAgICAod2Via2l0R3N0
QnVmZmVyU2V0VmlkZW9TYW1wbGVNZXRhZGF0YSk6CisgICAgICAgICh3ZWJraXRHc3RUcmFjZVBy
b2Nlc3NpbmdUaW1lRm9yRWxlbWVudCk6CisgICAgICAgICh3ZWJraXRHc3RCdWZmZXJHZXRWaWRl
b0ZyYW1lTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6
CisgICAgICAgIChtZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUdldFRhZ3MpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lcjo6dXBkYXRlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJU
Qy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJX
ZWJSVEM6Ok9uRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisKIDIw
MjEtMTEtMjcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgRmlsdGVyRWZmZWN0IENvcmVJbWFnZSBhcHBsaWVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBkMTRjNGI0YWFlNWU5Zjk5OGZmMzZhZWY1
NjEwMzcwNGYyZTIwZTg1Li5kNTEyYjRhNjc5YWVkN2M5MDA5MDhjZjMxYzQzZWQzNDVkYjY3ZjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtMTE3Miw4ICsxMTcyLDEwIEBAIFJl
cXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tFbmFibGVkOgogICAgIFdlYktpdExlZ2FjeToKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgorICAgICAgIlVTRShHU1RSRUFNRVIpIjogdHJ1
ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJDb3JlOgorICAgICAgIlVTRShHU1RSRUFN
RVIpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKIAogIyBGSVhNRTogVGhpcyBpcyBvbiBi
eSBkZWZhdWx0IGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNvbnNpZGVyIHR1cm5pbmcg
aXQgb24gZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0
cmVhbWVyLmNtYWtlCmluZGV4IDFjMjYzNDc1ZjgxNmQ1YzJhNGZkYjRkNzQ5NDU1ZDc5NmFhNWRk
MDMuLmFiOWM3MDkyZTY1ZjUxMTUyMDEzYzEyYmE0ODAyN2ZkNzBiODI0YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTI0LDYgKzI0LDcgQEAgaWYgKEVOQUJM
RV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVGV4dENvbWJpbmVyUGFkR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWVNZXRhZGF0YS5oCmluZGV4IDk0ZGRmMGVmMGY2MTEzNWJkOWI2ODkwOGI4MTE1NmZi
YmJkZjIzZTIuLmViNTk0Y2E4OTM1YWJlOTA4N2U4ODBkNWQ5MmViZjZjMTUzOGJkZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5oCkBAIC0yNyw2ICsy
Nyw4IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNsdWRlIDxvcHRpb25hbD4KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVmlkZW9GcmFtZU1ldGFkYXRhIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1MGJk
MjU3Li5iYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCkBAIC04Nyw2ICs4NywxNCBAQCBpbmxpbmUgR3N0Q2xvY2tUaW1lIHRv
R3N0Q2xvY2tUaW1lKGNvbnN0IE1lZGlhVGltZSAmbWVkaWFUaW1lKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHc3RDbG9ja1RpbWU+KHRvR3N0VW5zaWduZWQ2NFRpbWUobWVkaWFUaW1lKSk7CiB9
CiAKK2lubGluZSBNZWRpYVRpbWUgZnJvbUdzdENsb2NrVGltZShHc3RDbG9ja1RpbWUgdGltZSkK
K3sKKyAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEKHRpbWUpKQorICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgcmV0dXJuIE1lZGlhVGltZShHU1Rf
VElNRV9BU19VU0VDT05EUyh0aW1lKSwgR19VU0VDX1BFUl9TRUMpOworfQorCiBjbGFzcyBHc3RN
YXBwZWRCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdzdE1hcHBlZEJ1ZmZlcik7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDkxMTI2NTkyYzhiYTc2YmQ2NjM3MzMyNGQ1YmIyOTZiMzFkZTAzYmUuLjYzZGM2
NjA2ZGI0YWI4M2QxMTUzOTBlNTBjNmExZTdlZDZiZDY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRleHRD
b21iaW5lckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRleHRTaW5rR1N0cmVhbWVyLmgiCisjaW5j
bHVkZSAiVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0yNzMx
LDMxICsyNzMyLDI2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVH
U1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsKQogICAgIGdfc2lnbmFsX2Nvbm5lY3QoR1NUX0JJTl9D
QVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCAiZGVlcC1lbGVtZW50LWFkZGVkIiwgR19DQUxMQkFDSygr
W10oR3N0QmluKiwgR3N0QmluKiBzdWJCaW4sIEdzdEVsZW1lbnQqIGVsZW1lbnQsIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
YmluTmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVF9DQVNUKHN1YkJpbikpKTsK
ICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRfbmFt
ZShlbGVtZW50KSk7CisgICAgICAgIGF1dG8gZWxlbWVudENsYXNzID0gbWFrZVN0cmluZyhnc3Rf
ZWxlbWVudF9nZXRfbWV0YWRhdGEoZWxlbWVudCwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1Mp
KTsKKyAgICAgICAgYXV0byBjbGFzc2lmaWVycyA9IGVsZW1lbnRDbGFzcy5zcGxpdCgnLycpOwog
Ci0gICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1lLmdldCgpLCAiZG93bmxv
YWRidWZmZXIiKSkgewotICAgICAgICAgICAgcGxheWVyLT5jb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihlbGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICAvLyBD
b2xsZWN0IHByb2Nlc3NpbmcgdGltZSBtZXRyaWNzIGZvciB2aWRlbyBkZWNvZGVycyBhbmQgY29u
dmVydGVycy4KKyAgICAgICAgaWYgKChjbGFzc2lmaWVycy5jb250YWlucygiQ29udmVydGVyIl9z
KSB8fCBjbGFzc2lmaWVycy5jb250YWlucygiRGVjb2RlciJfcykpICYmIGNsYXNzaWZpZXJzLmNv
bnRhaW5zKCJWaWRlbyJfcykgJiYgIWNsYXNzaWZpZXJzLmNvbnRhaW5zKCJQYXJzZXIiKSkKKyAg
ICAgICAgICAgIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KGVsZW1lbnQp
OwogCi0gICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1lLmdldCgpLCAidXJp
ZGVjb2RlYmluIikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBzZXQgdGhlIG11bHRpcXVl
dWUgc2l6ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAgIGdfb2JqZWN0X3NldChl
bGVtZW50LCAiYnVmZmVyLXNpemUiLCAyICogTUIsIG51bGxwdHIpOworICAgICAgICBpZiAoY2xh
c3NpZmllcnMuY29udGFpbnMoIkRlY29kZXIiX3MpICYmIGNsYXNzaWZpZXJzLmNvbnRhaW5zKCJW
aWRlbyJfcykpIHsKKyAgICAgICAgICAgIHBsYXllci0+Y29uZmlndXJlVmlkZW9EZWNvZGVyKGVs
ZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFn
X3N0cl9oYXNfcHJlZml4KGJpbk5hbWUuZ2V0KCksICJkZWNvZGViaW4iKSkKKyAgICAgICAgaWYg
KGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJkb3dubG9hZGJ1ZmZlciIpKSB7
CisgICAgICAgICAgICBwbGF5ZXItPmNvbmZpZ3VyZURvd25sb2FkQnVmZmVyKGVsZW1lbnQpOwog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKGdfc3RyX2hhc19w
cmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJ2NGwyIikpCi0gICAgICAgICAgICBwbGF5ZXItPm1f
dmlkZW9EZWNvZGVyUGxhdGZvcm0gPSBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6VmlkZW80TGlu
dXg7Ci0gICAgICAgIGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCks
ICJpbXh2cHVkZWMiKSkKLSAgICAgICAgICAgIHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9y
bSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFU7Ci0gICAgICAgIGVsc2UgaWYgKGdf
c3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJvbXgiKSkKLSAgICAgICAgICAgIHBs
YXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpP
cGVuTUFYOwotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgICAgICBwbGF5ZXItPnVw
ZGF0ZVRleHR1cmVNYXBwZXJGbGFncygpOwotI2VuZGlmCisgICAgICAgIC8vIFRoaXMgd2lsbCBz
ZXQgdGhlIG11bHRpcXVldWUgc2l6ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgaWYg
KGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJ1cmlkZWNvZGViaW4iKSkKKyAg
ICAgICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAiYnVmZmVyLXNpemUiLCAyICogTUIsIG51
bGxwdHIpOwogICAgIH0pLCB0aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCht
X3BpcGVsaW5lLmdldCgpLCAic291cmNlLXNldHVwIiwgR19DQUxMQkFDSyhzb3VyY2VTZXR1cENh
bGxiYWNrKSwgdGhpcyk7CkBAIC0yODAwLDYgKzI3OTYsMjcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgICAg
IH0pLCB0aGlzKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZp
Z3VyZVZpZGVvRGVjb2RlcihHc3RFbGVtZW50KiBkZWNvZGVyKQoreworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gbmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShkZWNvZGVyKSk7CisgICAgaWYgKGdfc3Ry
X2hhc19wcmVmaXgobmFtZS5nZXQoKSwgInY0bDIiKSkKKyAgICAgICAgbV92aWRlb0RlY29kZXJQ
bGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpWaWRlbzRMaW51eDsKKyAgICBlbHNl
IGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUuZ2V0KCksICJpbXh2cHVkZWMiKSkKKyAgICAgICAg
bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFU7
CisgICAgZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChuYW1lLmdldCgpLCAib214IikpCisgICAg
ICAgIG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0gPSBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6T3Bl
bk1BWDsKKyAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUuZ2V0KCksICJhdmRlYyIp
KSB7CisgICAgICAgIC8vIFNldCB0aGUgZGVjb2RlciBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRz
IHRvIGEgbG93LCBmaXhlZCB2YWx1ZSwgbm90IGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgLy8g
cGxhdGZvcm0uIFRoaXMgYWxzbyBoZWxwcyB3aXRoIHByb2Nlc3NpbmcgbWV0cmljcyBnYXRoZXJp
bmcuIFdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgLy8gdGhlIGRlY29kZXIg
aW50cm9kdWNlcyBhcnRpZmljaWFsIHByb2Nlc3NpbmcgbGF0ZW5jeSByZWZsZWN0aW5nIHRoZSBt
YXhpbXVtIG51bWJlciBvZiB0aHJlYWRzLgorICAgICAgICBnX29iamVjdF9zZXQoZGVjb2Rlciwg
Im1heC10aHJlYWRzIiwgMiwgbnVsbHB0cik7CisgICAgfQorCisjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorICAgIHVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncygpOworI2VuZGlmCit9CisKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkg
Y29uc3QKIHsKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9TUkMobV9zb3VyY2UuZ2V0KCkpKQpAQCAt
MjkxMSw2ICsyOTI4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1c2hU
ZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0
KCkpKQogICAgICAgICByZXR1cm47CiAKKyAgICArK21fc2FtcGxlQ291bnQ7CisKICAgICBhdXRv
IGludGVybmFsQ29tcG9zaXRpbmdPcGVyYXRpb24gPSBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eSYgcHJveHksIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVy
PiYmIGZyYW1lSG9sZGVyKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgIGlmIChmcmFtZUhvbGRl
ci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgewpAQCAtMzIxMSw3ICszMjMwLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcigpCiB7CiAgICAgTG9j
a2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKIAotICAgIGlmIChtX3NhbXBsZSkg
eworICAgIGlmIChtX3NhbXBsZSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUuZ2V0
KCkpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgbmV3IGNvcHkgb2YgdGhlIHNhbXBsZSB3aGlj
aCBoYXMgdG8gYmUgcmVsZWFzZWQuIFRoZSBjb3B5IGlzIG5lY2Vzc2FyeSBzbyB0aGF0CiAgICAg
ICAgIC8vIHRoZSB2aWRlbyBkaW1lbnNpb25zIGNhbiBzdGlsbCBiZSBmZXRjaGVkIGFuZCBhbHNv
IGZvciBjYW52YXMgcmVuZGVyaW5nLiBUaGUgcmVsZWFzZSBpcwogICAgICAgICAvLyBuZWNlc3Nh
cnkgYmVjYXVzZSB0aGUgc2FtcGxlIG1pZ2h0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYnkgYSBoYXJk
d2FyZSBkZWNvZGVyIGFuZCBtZW1vcnkKQEAgLTM3NjcsNiArMzc4NiwzMSBAQCBXVEZMb2dDaGFu
bmVsJiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvZ0NoYW5uZWwoKSBjb25zdAogfQog
I2VuZGlmCiAKK3N0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnZpZGVvRnJhbWVNZXRhZGF0YSgpCit7CisgICAgaWYgKG1fc2FtcGxl
Q291bnQgPT0gbV9sYXN0VmlkZW9GcmFtZU1ldGFkYXRhU2FtcGxlQ291bnQpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBtX2xhc3RWaWRlb0ZyYW1lTWV0YWRhdGFTYW1wbGVDb3VudCA9IG1f
c2FtcGxlQ291bnQ7CisKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9
OworICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1w
bGUuZ2V0KCkpOworICAgIGF1dG8gbWV0YWRhdGEgPSB3ZWJraXRHc3RCdWZmZXJHZXRWaWRlb0Zy
YW1lTWV0YWRhdGEoYnVmZmVyKTsKKyAgICBhdXRvIHNpemUgPSBuYXR1cmFsU2l6ZSgpOworICAg
IG1ldGFkYXRhLndpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIG1ldGFkYXRhLmhlaWdodCA9IHNp
emUuaGVpZ2h0KCk7CisgICAgbWV0YWRhdGEucHJlc2VudGVkRnJhbWVzID0gbV9zYW1wbGVDb3Vu
dDsKKworICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlU
aW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBn
ZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCisgICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwor
ICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25U
aW1lOworCisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoR1NU
UkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmlu
ZGV4IDQwYmQ2ODBhY2ZlZTFjZDIwZjEwMWQ4NWJmNjFiNzA2NDk1NWYxYWIuLjIxNDc3NmEzMGQ4
N2IwYTY0NGE5NWU5M2IzYWRiN2Y4MjU5NWJhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ2OSw2ICs0NjksOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCopOwogICAgIHN0YXRpYyB2
b2lkIGRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqKTsKIAorICAgIHZvaWQgY29uZmlndXJlVmlkZW9EZWNvZGVyKEdzdEVsZW1lbnQq
KTsKKwogICAgIHZvaWQgc2V0UGxheWJpblVSTChjb25zdCBVUkwmIHVybFN0cmluZyk7CiAKICAg
ICB2b2lkIHVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24+Jik7
CkBAIC01NjQsNiArNTY2LDkgQEAgcHJpdmF0ZToKICAgICBEYXRhTXV0ZXg8VGFza0F0TWVkaWFU
aW1lU2NoZWR1bGVyPiBtX1Rhc2tBdE1lZGlhVGltZVNjaGVkdWxlckRhdGFNdXRleDsKIAogcHJp
dmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9GcmFtZU1l
dGFkYXRhKCkgZmluYWw7CisgICAgdWludDY0X3QgbV9zYW1wbGVDb3VudCB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX2xhc3RWaWRlb0ZyYW1lTWV0YWRhdGFTYW1wbGVDb3VudCB7IDAgfTsKICNpZiBV
U0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQogICAgIEdVbmlxdWVQdHI8c3RydWN0
IHdwZV92aWRlb19wbGFuZV9kaXNwbGF5X2RtYWJ1Zl9zb3VyY2U+IG1fd3BlVmlkZW9QbGFuZURp
c3BsYXlEbWFCdWY7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3Bw
CmluZGV4IDM4NzM2ZjJjNDA1MmIxZWY3YWIxNjA1MjhmOTViOGIyNzk0NDkwZmYuLjNjYWVjNDY5
MDkxZDA1ZDYwYjg5Nzk3NjgwMzc3YTViMWEzMzQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2Ft
cGxlR1N0cmVhbWVyLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiR1N0cmVhbWVy
Q29tbW9uLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
TWV0YWRhdGFHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+CkBAIC0zMiw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotTWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0
U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lkLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wg
dmlkZW9NaXJyb3JlZCkKK01lZGlhU2FtcGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cihHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0
aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgVmlkZW9Sb3RhdGlvbiB2aWRlb1Jv
dGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6b3B0aW9uYWw8VmlkZW9TYW1wbGVNZXRh
ZGF0YT4gbWV0YWRhdGEpCiAgICAgOiBtX3B0cyhNZWRpYVRpbWU6Onplcm9UaW1lKCkpCiAgICAg
LCBtX2R0cyhNZWRpYVRpbWU6Onplcm9UaW1lKCkpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSkKQEAgLTQ2LDI5ICs0NywyNyBAQCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
TWVkaWFTYW1wbGVHU3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBG
bAogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5n
ZXQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYnVmZmVyKTsKIAotICAgIGF1dG8gY3JlYXRlTWVk
aWFUaW1lID0KLSAgICAgICAgW10oR3N0Q2xvY2tUaW1lIHRpbWUpIC0+IE1lZGlhVGltZSB7Ci0g
ICAgICAgICAgICByZXR1cm4gTWVkaWFUaW1lKEdTVF9USU1FX0FTX1VTRUNPTkRTKHRpbWUpLCBH
X1VTRUNfUEVSX1NFQyk7Ci0gICAgICAgIH07CisgICAgaWYgKG1ldGFkYXRhKQorICAgICAgICBi
dWZmZXIgPSB3ZWJraXRHc3RCdWZmZXJTZXRWaWRlb1NhbXBsZU1ldGFkYXRhKGJ1ZmZlciwgKm1l
dGFkYXRhKTsKIAogICAgIGlmIChHU1RfQlVGRkVSX1BUU19JU19WQUxJRChidWZmZXIpKQotICAg
ICAgICBtX3B0cyA9IGNyZWF0ZU1lZGlhVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpKTsKKyAg
ICAgICAgbV9wdHMgPSBmcm9tR3N0Q2xvY2tUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpOwog
ICAgIGlmIChHU1RfQlVGRkVSX0RUU19JU19WQUxJRChidWZmZXIpIHx8IEdTVF9CVUZGRVJfUFRT
X0lTX1ZBTElEKGJ1ZmZlcikpCi0gICAgICAgIG1fZHRzID0gY3JlYXRlTWVkaWFUaW1lKEdTVF9C
VUZGRVJfRFRTX09SX1BUUyhidWZmZXIpKTsKKyAgICAgICAgbV9kdHMgPSBmcm9tR3N0Q2xvY2tU
aW1lKEdTVF9CVUZGRVJfRFRTX09SX1BUUyhidWZmZXIpKTsKICAgICBpZiAoR1NUX0JVRkZFUl9E
VVJBVElPTl9JU19WQUxJRChidWZmZXIpKSB7CiAgICAgICAgIC8vIFNvbWV0aW1lcyAoYWxiZWl0
IHJhcmVseSwgc28gZmFyIHNlZW4gb25seSBhdCB0aGUgZW5kIG9mIGEgdHJhY2spCiAgICAgICAg
IC8vIGZyYW1lcyBoYXZlIHZlcnkgc21hbGwgZHVyYXRpb25zLCBzbyBzbWFsbCB0aGF0IG1heSBi
ZSB1bmRlciB0aGUKICAgICAgICAgLy8gcHJlY2lzaW9uIHdlIGFyZSB3b3JraW5nIHdpdGggYW5k
IGJlIHRydW5jYXRlZCB0byB6ZXJvLgogICAgICAgICAvLyBTb3VyY2VCdWZmZXIgYWxnb3JpdGht
cyBhcmUgbm90IGV4cGVjdGluZyBmcmFtZXMgd2l0aCB6ZXJvLWR1cmF0aW9uLAogICAgICAgICAv
LyBzbyBsZXQncyB1c2Ugc29tZXRoaW5nIHZlcnkgc21hbGwgaW5zdGVhZCBpbiB0aG9zZSBmcmlu
Z2UgY2FzZXMuCi0gICAgICAgIG1fZHVyYXRpb24gPSBjcmVhdGVNZWRpYVRpbWUoc3RkOjptYXgo
R1NUX0JVRkZFUl9EVVJBVElPTihidWZmZXIpLCBtaW5pbXVtRHVyYXRpb24pKTsKKyAgICAgICAg
bV9kdXJhdGlvbiA9IGZyb21Hc3RDbG9ja1RpbWUoc3RkOjptYXgoR1NUX0JVRkZFUl9EVVJBVElP
TihidWZmZXIpLCBtaW5pbXVtRHVyYXRpb24pKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBV
bmZvcnR1bmF0ZWx5LCBzb21ldGltZXMgc2FtcGxlcyBkb24ndCBwcm92aWRlIGEgZHVyYXRpb24u
IFRoaXMgY2FuIG5ldmVyIGhhcHBlbiBpbiBNUDQgYmVjYXVzZSBvZiB0aGUgd2F5CiAgICAgICAg
IC8vIHRoZSBmb3JtYXQgaXMgbGFpZCBvdXQsIGJ1dCBpdCdzIHByZXR0eSBjb21tb24gaW4gV2Vi
TS4KICAgICAgICAgLy8gVGhlIGdvb2QgcGFydCBpcyB0aGF0IGR1cmF0aW9ucyBkb24ndCBtYXR0
ZXIgZm9yIHBsYXliYWNrLCBqdXN0IGZvciBidWZmZXJlZCByYW5nZXMgYW5kIGNvZGVkIGZyYW1l
IGRlbGV0aW9uLgogICAgICAgICAvLyBXZSB3YW50IHRvIHBpY2sgc29tZXRoaW5nIHNtYWxsIGVu
b3VnaCB0byBub3QgY2F1c2UgdW53YW50ZWQgZnJhbWUgZGVsZXRpb24sIGJ1dCBiaWcgZW5vdWdo
IHRvIG5ldmVyIGJlCiAgICAgICAgIC8vIG1pc3Rha2VuIGZvciBhIHJvdW5kaW5nIGFydGlmYWN0
LgotICAgICAgICBtX2R1cmF0aW9uID0gY3JlYXRlTWVkaWFUaW1lKDE2NjY2NjY3KTsgLy8gMS82
MCBzZWNvbmRzCisgICAgICAgIG1fZHVyYXRpb24gPSBmcm9tR3N0Q2xvY2tUaW1lKDE2NjY2NjY3
KTsgLy8gMS82MCBzZWNvbmRzCiAgICAgfQogCiAgICAgbV9zaXplID0gZ3N0X2J1ZmZlcl9nZXRf
c2l6ZShidWZmZXIpOwpAQCAtMTAxLDcgKzEwMCw3IEBAIFJlZjxNZWRpYVNhbXBsZUdTdHJlYW1l
cj4gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZUZha2VTYW1wbGUoR3N0Q2FwcyosIE1lZGlh
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpnc3RyZWFtZXJNZWRpYVNhbXBsZSk7CiB9CiAKLVJlZjxN
ZWRpYVNhbXBsZUdTdHJlYW1lcj4gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZUltYWdlU2Ft
cGxlKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9u
U2l6ZSwgZG91YmxlIGZyYW1lUmF0ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29s
IHZpZGVvTWlycm9yZWQpCitSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlhU2FtcGxlR1N0
cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25z
dCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFZpZGVvUm90YXRp
b24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVv
U2FtcGxlTWV0YWRhdGE+IG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1lckluaXRpYWxp
emVkKCk7CiAKQEAgLTEyMCw2ICsxMTksOSBAQCBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmCiAgICAg
YXV0byBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwogICAgIGdzdF9idWZmZXJfYWRkX3ZpZGVvX21l
dGEoYnVmZmVyLmdldCgpLCBHU1RfVklERU9fRlJBTUVfRkxBR19OT05FLCBHU1RfVklERU9fRk9S
TUFUX0JHUkEsIHdpZHRoLCBoZWlnaHQpOwogCisgICAgaWYgKG1ldGFkYXRhKQorICAgICAgICB3
ZWJraXRHc3RCdWZmZXJTZXRWaWRlb1NhbXBsZU1ldGFkYXRhKGJ1ZmZlci5nZXQoKSwgKm1ldGFk
YXRhKTsKKwogICAgIGludCBmcmFtZVJhdGVOdW1lcmF0b3IsIGZyYW1lUmF0ZURlbm9taW5hdG9y
OwogICAgIGdzdF91dGlsX2RvdWJsZV90b19mcmFjdGlvbihmcmFtZVJhdGUsICZmcmFtZVJhdGVO
dW1lcmF0b3IsICZmcmFtZVJhdGVEZW5vbWluYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxl
R1N0cmVhbWVyLmgKaW5kZXggNmFiZjIwY2U1ZjI3ZGM1NjU0ODMyYzA3ODUzNGM5YjQxM2FmNzJj
NC4uNzY3YmEzZjAwMDI1MTEyYTllZTliNTlhZTFkNTUxZjI0MWM1NDAxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJNZWRpYVNh
bXBsZS5oIgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlTWV0YWRhdGEuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDEzICszNSwx
MyBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFTYW1wbGVHU3RyZWFtZXIgOiBw
dWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVH
U3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0
U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgVmlkZW9S
b3RhdGlvbiB2aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01p
cnJvcmVkID0gZmFsc2UpCisgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gY3Jl
YXRlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50
YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxz
ZSwgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiBtZXRhZGF0YSA9IHsgfSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlR1N0cmVhbWVyKFdU
Rk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCwgdmlkZW9Sb3RhdGlvbiwg
dmlkZW9NaXJyb3JlZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBs
ZUdTdHJlYW1lcihXVEZNb3ZlKHNhbXBsZSksIHByZXNlbnRhdGlvblNpemUsIHRyYWNrSWQsIHZp
ZGVvUm90YXRpb24sIHZpZGVvTWlycm9yZWQsIG1ldGFkYXRhKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlZjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gY3JlYXRlRmFrZVNhbXBsZShHc3RDYXBzKiwg
TWVkaWFUaW1lIHB0cywgTWVkaWFUaW1lIGR0cywgTWVkaWFUaW1lIGR1cmF0aW9uLCBjb25zdCBG
bG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpOwot
ICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IGNyZWF0ZUltYWdlU2FtcGxlKFBp
eGVsQnVmZmVyJiYsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91Ymxl
IGZyYW1lUmF0ZSA9IDEsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRp
b246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgUmVmPE1l
ZGlhU2FtcGxlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmLCBjb25z
dCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFtZVJhdGUgPSAxLCBW
aWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIHZp
ZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiBt
ZXRhZGF0YSA9IHsgfSk7CiAKICAgICB2b2lkIGV4dGVuZFRvVGhlQmVnaW5uaW5nKCk7CiAgICAg
TWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3B0
czsgfQpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb01pcnJvcmVkOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBNZWRpYVNhbXBsZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxv
YXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBWaWRl
b1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0gZmFs
c2UpOworICAgIE1lZGlhU2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBjb25z
dCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQs
IFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiBtZXRhZGF0YSA9IHsg
fSk7CiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3NzI2ODY1NDAxMzMwNTRmNjQzODA2OWM0NmViYWIxODJmYjlhZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCitH
U1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF92aWRlb19mcmFtZV9tZXRhX2RlYnVnKTsK
KyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF92aWRlb19mcmFtZV9tZXRhX2RlYnVnCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3QgVmlkZW9GcmFtZU1ldGFkYXRhUHJp
dmF0ZSB7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiB2aWRlb1NhbXBs
ZU1ldGFkYXRhOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8R3N0Q2xvY2tUaW1lLCBH
c3RDbG9ja1RpbWU+PiBwcm9jZXNzaW5nVGltZXM7Cit9OworCitXRUJLSVRfREVGSU5FX0FTWU5D
X0RBVEFfU1RSVUNUKFZpZGVvRnJhbWVNZXRhZGF0YVByaXZhdGUpOworCit0eXBlZGVmIHN0cnVj
dCBfVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyIHsKKyAgICBHc3RNZXRhIG1ldGE7CisgICAg
VmlkZW9GcmFtZU1ldGFkYXRhUHJpdmF0ZSogcHJpdjsKK30gVmlkZW9GcmFtZU1ldGFkYXRhR1N0
cmVhbWVyOworCitHVHlwZSB2aWRlb0ZyYW1lTWV0YWRhdGFBUElHZXRUeXBlKCkKK3sKKyAgICBz
dGF0aWMgR1R5cGUgdHlwZTsKKyAgICBzdGF0aWMgY29uc3QgZ2NoYXIqIHRhZ3NbXSA9IHsgbnVs
bHB0ciB9OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgdHlwZSA9IGdzdF9tZXRhX2FwaV90eXBl
X3JlZ2lzdGVyKCJXZWJLaXRWaWRlb0ZyYW1lTWV0YWRhdGFBUEkiLCB0YWdzKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gdHlwZTsKK30KKworI2RlZmluZSBWSURFT19GUkFNRV9NRVRBREFUQV9BUElf
VFlQRSB2aWRlb0ZyYW1lTWV0YWRhdGFBUElHZXRUeXBlKCkKKyNkZWZpbmUgVklERU9fRlJBTUVf
TUVUQURBVEFfQ0FTVChwKSByZWludGVycHJldF9jYXN0PFZpZGVvRnJhbWVNZXRhZGF0YUdTdHJl
YW1lcio+KHApCisjZGVmaW5lIGdldEludGVybmFsVmlkZW9GcmFtZU1ldGFkYXRhKGJ1ZmZlcikg
VklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChnc3RfYnVmZmVyX2dldF9tZXRhKGJ1ZmZlciwgVklE
RU9fRlJBTUVfTUVUQURBVEFfQVBJX1RZUEUpKQorCitjb25zdCBHc3RNZXRhSW5mbyogdmlkZW9G
cmFtZU1ldGFkYXRhR2V0SW5mbygpOworCitzdGQ6OnBhaXI8R3N0QnVmZmVyKiwgVmlkZW9GcmFt
ZU1ldGFkYXRhR1N0cmVhbWVyKj4gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdzdEJ1ZmZlciog
YnVmZmVyKQoreworICAgIGF1dG8qIG1ldGEgPSBnZXRJbnRlcm5hbFZpZGVvRnJhbWVNZXRhZGF0
YShidWZmZXIpOworICAgIGlmIChtZXRhKQorICAgICAgICByZXR1cm4geyBidWZmZXIsIG1ldGEg
fTsKKworICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZShidWZmZXIpOworICAg
IHJldHVybiB7IGJ1ZmZlciwgVklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChnc3RfYnVmZmVyX2Fk
ZF9tZXRhKGJ1ZmZlciwgdmlkZW9GcmFtZU1ldGFkYXRhR2V0SW5mbygpLCBudWxscHRyKSkgfTsK
K30KKworY29uc3QgR3N0TWV0YUluZm8qIHZpZGVvRnJhbWVNZXRhZGF0YUdldEluZm8oKQorewor
ICAgIHN0YXRpYyBjb25zdCBHc3RNZXRhSW5mbyogbWV0YUluZm8gPSBudWxscHRyOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgWyZdIHsKKyAgICAgICAgbWV0YUluZm8gPSBnc3RfbWV0YV9yZWdpc3RlcihWSURFT19GUkFN
RV9NRVRBREFUQV9BUElfVFlQRSwgIldlYktpdFZpZGVvRnJhbWVNZXRhZGF0YSIsIHNpemVvZihW
aWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIpLAorICAgICAgICAgICAgW10oR3N0TWV0YSogbWV0
YSwgZ3BvaW50ZXIsIEdzdEJ1ZmZlciopIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgICAgICBh
dXRvKiBmcmFtZU1ldGEgPSBWSURFT19GUkFNRV9NRVRBREFUQV9DQVNUKG1ldGEpOworICAgICAg
ICAgICAgICAgIGZyYW1lTWV0YS0+cHJpdiA9IGNyZWF0ZVZpZGVvRnJhbWVNZXRhZGF0YVByaXZh
dGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBbXShHc3RNZXRhKiBtZXRhLCBHc3RCdWZmZXIqKSB7CisgICAgICAgICAgICAgICAg
YXV0byogZnJhbWVNZXRhID0gVklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChtZXRhKTsKKyAgICAg
ICAgICAgICAgICBkZXN0cm95VmlkZW9GcmFtZU1ldGFkYXRhUHJpdmF0ZShmcmFtZU1ldGEtPnBy
aXYpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIFtdKEdzdEJ1ZmZlciogYnVmZmVyLCBH
c3RNZXRhKiBtZXRhLCBHc3RCdWZmZXIqLCBHUXVhcmsgdHlwZSwgZ3BvaW50ZXIpIC0+IGdib29s
ZWFuIHsKKyAgICAgICAgICAgICAgICBpZiAoIUdTVF9NRVRBX1RSQU5TRk9STV9JU19DT1BZKHR5
cGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgICAgICAg
ICBhdXRvKiBmcmFtZU1ldGEgPSBWSURFT19GUkFNRV9NRVRBREFUQV9DQVNUKG1ldGEpOworICAg
ICAgICAgICAgICAgIGF1dG8gW2J1ZiwgY29weU1ldGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFk
YXRhKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgY29weU1ldGEtPnByaXYtPnZpZGVvU2FtcGxl
TWV0YWRhdGEgPSBmcmFtZU1ldGEtPnByaXYtPnZpZGVvU2FtcGxlTWV0YWRhdGE7CisgICAgICAg
ICAgICAgICAgY29weU1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcyA9IGZyYW1lTWV0YS0+cHJp
di0+cHJvY2Vzc2luZ1RpbWVzOworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAg
ICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0dXJuIG1ldGFJbmZvOworfQorCitHc3RCdWZmZXIq
IHdlYmtpdEdzdEJ1ZmZlclNldFZpZGVvU2FtcGxlTWV0YWRhdGEoR3N0QnVmZmVyKiBidWZmZXIs
IGNvbnN0IFZpZGVvU2FtcGxlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIGlmICghR1NUX0lT
X0JVRkZFUihidWZmZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gW21v
ZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShidWZmZXIpOwor
ICAgIG1ldGEtPnByaXYtPnZpZGVvU2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKKyAgICByZXR1
cm4gbW9kaWZpZWRCdWZmZXI7Cit9CisKK3ZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGlt
ZUZvckVsZW1lbnQoR3N0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7CisgICAg
ICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF92aWRlb19mcmFtZV9tZXRhX2RlYnVn
LCAid2Via2l0dmlkZW9mcmFtZW1ldGEiLCAwLCAiVmlkZW8gZnJhbWUgcHJvY2Vzc2luZyBtZXRy
aWNzIik7CisgICAgfSk7CisKKyAgICBHU1RfREVCVUcoIlRyYWNpbmcgcHJvY2Vzc2luZyB0aW1l
IGZvciAlIiBHU1RfUFRSX0ZPUk1BVCwgZWxlbWVudCk7CisgICAgYXV0byBwcm9iZVR5cGUgPSBz
dGF0aWNfY2FzdDxHc3RQYWRQcm9iZVR5cGU+KEdTVF9QQURfUFJPQkVfVFlQRV9QVVNIIHwgR1NU
X1BBRF9QUk9CRV9UWVBFX0JVRkZFUik7CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGVsZW1lbnRO
YW1lRm9yU2lua1BhZChnc3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSk7CisgICAgYXV0byBz
aW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGVsZW1lbnQsICJz
aW5rIikpOworICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQYWQuZ2V0KCksIHByb2JlVHlwZSwg
W10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4g
R3N0UGFkUHJvYmVSZXR1cm4geworICAgICAgICBhdXRvIFttb2RpZmllZEJ1ZmZlciwgbWV0YV0g
PSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9QUk9CRV9JTkZPX0JVRkZFUihpbmZv
KSk7CisgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRBKGluZm8pID0gbW9kaWZpZWRCdWZm
ZXI7CisgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0
YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJP
QkVfT0s7CisgICAgfSwgZWxlbWVudE5hbWVGb3JTaW5rUGFkLnJlbGVhc2UoKSwgZ19mcmVlKTsK
KworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZWxlbWVudE5hbWVGb3JTcmNQYWQoZ3N0X2VsZW1lbnRf
Z2V0X25hbWUoZWxlbWVudCkpOworICAgIGF1dG8gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVt
ZW50X2dldF9zdGF0aWNfcGFkKGVsZW1lbnQsICJzcmMiKSk7CisgICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc3JjUGFkLmdldCgpLCBwcm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyog
aW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKKyAgICAgICAg
YXV0byogbWV0YSA9IGdldEludGVybmFsVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVf
SU5GT19CVUZGRVIoaW5mbykpOworICAgICAgICAvLyBTb21lIGRlY29kZXJzIChzdWNoIGFzIHRo
ZW9yYWRlYykgZG8gbm90IGFsd2F5cyBjb3B5IHRoZSBpbnB1dCBtZXRhIHRvIHRoZSBvdXRwdXQg
ZnJhbWUsCisgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhlIG1ldGEgaXMgdmFsaWQg
aGVyZSBiZWZvcmUgYWNjZXNzaW5nIGl0LgorICAgICAgICBpZiAoIW1ldGEpCisgICAgICAgICAg
ICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKworICAgICAgICBhdXRvKiBlbGVtZW50TmFtZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9
IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOworICAgICAgICBt
ZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFp
cih2YWx1ZS5maXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CisgICAgICAgIHJldHVy
biBHU1RfUEFEX1BST0JFX09LOworICAgIH0sIGVsZW1lbnROYW1lRm9yU3JjUGFkLnJlbGVhc2Uo
KSwgZ19mcmVlKTsKK30KKworVmlkZW9GcmFtZU1ldGFkYXRhIHdlYmtpdEdzdEJ1ZmZlckdldFZp
ZGVvRnJhbWVNZXRhZGF0YShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpZiAoIUdTVF9JU19C
VUZGRVIoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZpZGVvRnJhbWVNZXRh
ZGF0YSB2aWRlb0ZyYW1lTWV0YWRhdGE7CisgICAgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElE
KGJ1ZmZlcikpCisgICAgICAgIHZpZGVvRnJhbWVNZXRhZGF0YS5tZWRpYVRpbWUgPSBmcm9tR3N0
Q2xvY2tUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpLnRvRG91YmxlKCk7CisKKyAgICBhdXRv
KiBtZXRhID0gZ2V0SW50ZXJuYWxWaWRlb0ZyYW1lTWV0YWRhdGEoYnVmZmVyKTsKKyAgICBpZiAo
IW1ldGEpCisgICAgICAgIHJldHVybiB2aWRlb0ZyYW1lTWV0YWRhdGE7CisKKyAgICBhdXRvIHBy
b2Nlc3NpbmdEdXJhdGlvbiA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKKyAgICBmb3IgKGF1dG8m
IFtzdGFydFRpbWUsIHN0b3BUaW1lXSA6IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy52YWx1
ZXMoKSkKKyAgICAgICAgcHJvY2Vzc2luZ0R1cmF0aW9uICs9IGZyb21Hc3RDbG9ja1RpbWUoR1NU
X0NMT0NLX0RJRkYoc3RhcnRUaW1lLCBzdG9wVGltZSkpOworCisgICAgaWYgKHByb2Nlc3NpbmdE
dXJhdGlvbiAhPSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpCisgICAgICAgIHZpZGVvRnJhbWVNZXRh
ZGF0YS5wcm9jZXNzaW5nRHVyYXRpb24gPSBwcm9jZXNzaW5nRHVyYXRpb24udG9Eb3VibGUoKTsK
KworICAgIGF1dG8gdmlkZW9TYW1wbGVNZXRhZGF0YSA9IG1ldGEtPnByaXYtPnZpZGVvU2FtcGxl
TWV0YWRhdGE7CisgICAgaWYgKCF2aWRlb1NhbXBsZU1ldGFkYXRhKQorICAgICAgICByZXR1cm4g
dmlkZW9GcmFtZU1ldGFkYXRhOworCisgICAgaWYgKHZpZGVvU2FtcGxlTWV0YWRhdGEtPmNhcHR1
cmVUaW1lKQorICAgICAgICB2aWRlb0ZyYW1lTWV0YWRhdGEuY2FwdHVyZVRpbWUgPSB2aWRlb1Nh
bXBsZU1ldGFkYXRhLT5jYXB0dXJlVGltZS0+dmFsdWUoKTsKKworICAgIGlmICh2aWRlb1NhbXBs
ZU1ldGFkYXRhLT5yZWNlaXZlVGltZSkKKyAgICAgICAgdmlkZW9GcmFtZU1ldGFkYXRhLnJlY2Vp
dmVUaW1lID0gdmlkZW9TYW1wbGVNZXRhZGF0YS0+cmVjZWl2ZVRpbWUtPnZhbHVlKCk7CisKKyAg
ICB2aWRlb0ZyYW1lTWV0YWRhdGEucnRwVGltZXN0YW1wID0gdmlkZW9TYW1wbGVNZXRhZGF0YS0+
cnRwVGltZXN0YW1wOworICAgIHJldHVybiB2aWRlb0ZyYW1lTWV0YWRhdGE7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhZWMyZjUyOGQ3NWViYjdkYzZkZDcxYTkyZDhjNzM0YWUxMWRjZWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZU1ldGFkYXRhR1N0cmVhbWVyLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRhdGEuaCIKKyNpbmNs
dWRlICJWaWRlb1NhbXBsZU1ldGFkYXRhLmgiCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dz
dEJ1ZmZlciogd2Via2l0R3N0QnVmZmVyU2V0VmlkZW9TYW1wbGVNZXRhZGF0YShHc3RCdWZmZXIq
LCBjb25zdCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhJik7Cit2b2lkIHdlYmtpdEdzdFRy
YWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqKTsKK1dlYkNvcmU6OlZpZGVv
RnJhbWVNZXRhZGF0YSB3ZWJraXRHc3RCdWZmZXJHZXRWaWRlb0ZyYW1lTWV0YWRhdGEoR3N0QnVm
ZmVyKik7CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQ2FwdHVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmNwcAppbmRleCBmNmY1ZjhiZmZhYTNiNmIyMTA2
MDQzODg3Njk5ZmUyYmU2YTYzMDdjLi5jOWUwZDVlYjYwZTJiYzM4ZWYzYTlhNWQ1MzJjNDM4ODAx
MDk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKQEAgLTIzLDEx
ICsyMywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoR1NUUkVBTUVSKQorCiAjaW5jbHVkZSAiR1N0cmVh
bWVyQ2FwdHVyZXIuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuaCIK
IAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0
YXBwc3JjLmg+CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9jYXB0dXJlcl9kZWJ1Zyk7CiAjZGVmaW5l
IEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfY2FwdHVyZXJfZGVidWcKQEAgLTk5LDkgKzEwMiwyMCBA
QCBHc3RFbGVtZW50KiBHU3RyZWFtZXJDYXB0dXJlcjo6Y3JlYXRlU291cmNlKCkKICAgICAgICAg
aWYgKEdTVF9JU19BUFBfU1JDKG1fc3JjLmdldCgpKSkKICAgICAgICAgICAgIGdfb2JqZWN0X3Nl
dChtX3NyYy5nZXQoKSwgImlzLWxpdmUiLCB0cnVlLCAiZm9ybWF0IiwgR1NUX0ZPUk1BVF9USU1F
LCBudWxscHRyKTsKIAorICAgICAgICBhdXRvIHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChtX3NyYy5nZXQoKSwgInNyYyIpKTsKKyAgICAgICAgaWYgKG1fZGV2
aWNlVHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpIHsKKyAgICAgICAg
ICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNyY1BhZC5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0UGFkUHJv
YmVUeXBlPihHU1RfUEFEX1BST0JFX1RZUEVfUFVTSCB8IEdTVF9QQURfUFJPQkVfVFlQRV9CVUZG
RVIpLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyKSAtPiBHc3RQ
YWRQcm9iZVJldHVybiB7CisgICAgICAgICAgICAgICAgVmlkZW9TYW1wbGVNZXRhZGF0YSBtZXRh
ZGF0YTsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7CisgICAgICAgICAgICAgICAgYXV0byogYnVm
ZmVyID0gR1NUX1BBRF9QUk9CRV9JTkZPX0JVRkZFUihpbmZvKTsKKyAgICAgICAgICAgICAgICBh
dXRvKiBtb2RpZmllZEJ1ZmZlciA9IHdlYmtpdEdzdEJ1ZmZlclNldFZpZGVvU2FtcGxlTWV0YWRh
dGEoYnVmZmVyLCBtZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNl
KCZidWZmZXIsIG1vZGlmaWVkQnVmZmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BB
RF9QUk9CRV9PSzsKKyAgICAgICAgICAgIH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fZGV2aWNlVHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4pIHsKLSAgICAgICAgICAgIGF1dG8gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKG1fc3JjLmdldCgpLCAic3JjIikpOwotICAgICAgICAgICAgZ3N0X3Bh
ZF9hZGRfcHJvYmUocGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVB
TSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCB2b2lkKiB1c2VyRGF0YSkgLT4g
R3N0UGFkUHJvYmVSZXR1cm4geworICAgICAgICAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc3JjUGFk
LmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwgW10oR3N0UGFkKiwg
R3N0UGFkUHJvYmVJbmZvKiBpbmZvLCB2b2lkKiB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1
cm4gewogICAgICAgICAgICAgICAgIGF1dG8qIGV2ZW50ID0gZ3N0X3BhZF9wcm9iZV9pbmZvX2dl
dF9ldmVudChpbmZvKTsKICAgICAgICAgICAgICAgICBpZiAoR1NUX0VWRU5UX1RZUEUoZXZlbnQp
ICE9IEdTVF9FVkVOVF9DQVBTKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9Q
Uk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCmluZGV4IDYyMGE2YjE1YzgyMjIyNzlmMWI4ODEzN2FlODRlM2E5NTc5Nzg5YzEuLmYz
NzI5M2I5NTU2NWQ2YmVkYmJlOWYwNjlmNGY5YmJhZTNkODIxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0
cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0
cmVhbWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSAiVmlk
ZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oIgogCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KQEAgLTYxLDgg
KzYyLDEwIEBAIEdSZWZQdHI8R3N0VGFnTGlzdD4gbWVkaWFTdHJlYW1UcmFja1ByaXZhdGVHZXRU
YWdzKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlCiAgICAgICAgIGdzdF90YWdfbGlzdF9h
ZGQodGFnTGlzdC5nZXQoKSwgR1NUX1RBR19NRVJHRV9BUFBFTkQsIFdFQktJVF9NRURJQV9UUkFD
S19UQUdfS0lORCwgc3RhdGljX2Nhc3Q8aW50PihWaWRlb1RyYWNrUHJpdmF0ZTo6S2luZDo6TWFp
biksIG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdHJhY2stPnNldHRpbmdz
KCk7Ci0gICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFnTGlzdC5nZXQoKSwgR1NUX1RBR19NRVJH
RV9BUFBFTkQsIFdFQktJVF9NRURJQV9UUkFDS19UQUdfV0lEVEgsIHNldHRpbmdzLndpZHRoKCks
Ci0gICAgICAgICAgICBXRUJLSVRfTUVESUFfVFJBQ0tfVEFHX0hFSUdIVCwgc2V0dGluZ3MuaGVp
Z2h0KCksIG51bGxwdHIpOworICAgICAgICBpZiAoc2V0dGluZ3Mud2lkdGgoKSkKKyAgICAgICAg
ICAgIGdzdF90YWdfbGlzdF9hZGQodGFnTGlzdC5nZXQoKSwgR1NUX1RBR19NRVJHRV9BUFBFTkQs
IFdFQktJVF9NRURJQV9UUkFDS19UQUdfV0lEVEgsIHNldHRpbmdzLndpZHRoKCksIG51bGxwdHIp
OworICAgICAgICBpZiAoc2V0dGluZ3MuaGVpZ2h0KCkpCisgICAgICAgICAgICBnc3RfdGFnX2xp
c3RfYWRkKHRhZ0xpc3QuZ2V0KCksIEdTVF9UQUdfTUVSR0VfQVBQRU5ELCBXRUJLSVRfTUVESUFf
VFJBQ0tfVEFHX0hFSUdIVCwgc2V0dGluZ3MuaGVpZ2h0KCksIG51bGxwdHIpOwogICAgIH0KIAog
ICAgIEdTVF9ERUJVRygiVHJhY2sgdGFnczogJSIgR1NUX1BUUl9GT1JNQVQsIHRhZ0xpc3QuZ2V0
KCkpOwpAQCAtMjY3LDE5ICsyNzAsMTkgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fcGFyZW50
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8qIGdzdFNhbXBsZSA9IHN0YXRp
Y19jYXN0PE1lZGlhU2FtcGxlR1N0cmVhbWVyKj4oJnNhbXBsZSktPnBsYXRmb3JtU2FtcGxlKCku
c2FtcGxlLmdzdFNhbXBsZTsKLSAgICAgICAgYXV0byogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMoZ3N0U2FtcGxlKTsKLSAgICAgICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gICAgICAgIGdzdF92
aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2Fwcyk7Ci0KLSAgICAgICAgaW50IHdpZHRoID0g
R1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOwotICAgICAgICBpbnQgaGVpZ2h0ID0gR1NUX1ZJ
REVPX0lORk9fSEVJR0hUKCZpbmZvKTsKLSAgICAgICAgaWYgKG1fbGFzdEtub3duU2l6ZSAhPSBJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpKSB7Ci0gICAgICAgICAgICBtX2xhc3RLbm93blNpemUuc2V0
V2lkdGgod2lkdGgpOwotICAgICAgICAgICAgbV9sYXN0S25vd25TaXplLnNldEhlaWdodChoZWln
aHQpOwotICAgICAgICAgICAgdXBkYXRlQmxhY2tGcmFtZShjYXBzKTsKLSAgICAgICAgfQorICAg
ICAgICBhdXRvIHNhbXBsZVNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAg
ICBJbnRTaXplIGNhcHR1cmVTaXplKHNhbXBsZVNpemUud2lkdGgoKSwgc2FtcGxlU2l6ZS5oZWln
aHQoKSk7CisKKyAgICAgICAgYXV0byBzZXR0aW5ncyA9IG1fdHJhY2suc2V0dGluZ3MoKTsKKyAg
ICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRXaWR0aChzZXR0aW5ncy53aWR0aCgpKTsKKyAgICAg
ICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQoc2V0dGluZ3MuaGVpZ2h0KCkpOwogCisgICAg
ICAgIGlmICghbV9jb25maWd1cmVkU2l6ZS53aWR0aCgpKQorICAgICAgICAgICAgbV9jb25maWd1
cmVkU2l6ZS5zZXRXaWR0aChjYXB0dXJlU2l6ZS53aWR0aCgpKTsKKyAgICAgICAgaWYgKCFtX2Nv
bmZpZ3VyZWRTaXplLmhlaWdodCgpKQorICAgICAgICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRI
ZWlnaHQoY2FwdHVyZVNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIGF1dG8qIG1lZGlhU2FtcGxl
ID0gc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGVHU3RyZWFtZXIqPigmc2FtcGxlKTsKICAgICAgICAg
YXV0byB2aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24oKTsKICAgICAgICAgYm9v
bCB2aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKICAgICAgICAgaWYgKG1f
dmlkZW9Sb3RhdGlvbiAhPSB2aWRlb1JvdGF0aW9uIHx8IG1fdmlkZW9NaXJyb3JlZCAhPSB2aWRl
b01pcnJvcmVkKSB7CkBAIC0yOTIsNiArMjk1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdz
dF9wYWRfcHVzaF9ldmVudChwYWQuZ2V0KCksIGdzdF9ldmVudF9uZXdfdGFnKGdzdF90YWdfbGlz
dF9uZXcoR1NUX1RBR19JTUFHRV9PUklFTlRBVElPTiwgb3JpZW50YXRpb24udXRmOCgpLmRhdGEo
KSwgbnVsbHB0cikpKTsKICAgICAgICAgfQogCisgICAgICAgIGF1dG8qIGdzdFNhbXBsZSA9IG1l
ZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5nc3RTYW1wbGU7CisgICAgICAgIGlm
ICghbV9jb25maWd1cmVkU2l6ZS5pc0VtcHR5KCkgJiYgbV9sYXN0S25vd25TaXplICE9IG1fY29u
ZmlndXJlZFNpemUpIHsKKyAgICAgICAgICAgIG1fbGFzdEtub3duU2l6ZSA9IG1fY29uZmlndXJl
ZFNpemU7CisgICAgICAgICAgICB1cGRhdGVCbGFja0ZyYW1lKGdzdF9zYW1wbGVfZ2V0X2NhcHMo
Z3N0U2FtcGxlKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAobV90cmFjay5lbmFibGVkKCkp
IHsKICAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9zcmMuZ2V0KCksICJQdXNoaW5nIHZp
ZGVvIGZyYW1lIGZyb20gZW5hYmxlZCB0cmFjayIpOwogICAgICAgICAgICAgcHVzaFNhbXBsZShn
c3RTYW1wbGUpOwpAQCAtMzM2LDYgKzM0NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHVzaEJs
YWNrRnJhbWUoKQogICAgIHsKICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChtX3NyYy5nZXQoKSwg
IlB1c2hpbmcgYmxhY2sgdmlkZW8gZnJhbWUiKTsKKyAgICAgICAgVmlkZW9TYW1wbGVNZXRhZGF0
YSBtZXRhZGF0YTsKKyAgICAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgICAgICBhdXRvKiBidWZmZXIgPSB3ZWJr
aXRHc3RCdWZmZXJTZXRWaWRlb1NhbXBsZU1ldGFkYXRhKGdzdF9zYW1wbGVfZ2V0X2J1ZmZlciht
X2JsYWNrRnJhbWUuZ2V0KCkpLCBtZXRhZGF0YSk7CisgICAgICAgIC8vIFRPRE86IFVzZSBnc3Rf
c2FtcGxlX3NldF9idWZmZXIoKSBhZnRlciBidW1waW5nIEdTdHJlYW1lciBkZXBlbmRlbmN5IHRv
IDEuMTYuCisgICAgICAgIGF1dG8qIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fYmxhY2tG
cmFtZS5nZXQoKSk7CisgICAgICAgIG1fYmxhY2tGcmFtZSA9IGFkb3B0R1JlZihnc3Rfc2FtcGxl
X25ldyhidWZmZXIsIGNhcHMsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAgICAgcHVzaFNhbXBs
ZShtX2JsYWNrRnJhbWUuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ5LDYgKzM2NCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzT2JzZXJ2aW5nIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbT4gbV9hdWRpb1RyYWNrOwogICAgIFJlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBtX3ZpZGVvVHJhY2s7CisgICAgSW50U2l6ZSBtX2NvbmZp
Z3VyZWRTaXplOwogICAgIEludFNpemUgbV9sYXN0S25vd25TaXplOwogICAgIEdSZWZQdHI8R3N0
U2FtcGxlPiBtX2JsYWNrRnJhbWU7CiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92
aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCmluZGV4IDk2ZDBhZjFjNGIwMzU0MzNmZDg3ZTI3MDVkYjhjZDgzNDlhNjUzNjEuLmUxMjhi
NmFjNDYxMTNjNDY2OTY2Zjk0NGMyZTc5OTdkM2FlMGYyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTUy
LDcgKzE1Miw5IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OnVwZGF0
ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBzYW1wbGUgPSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1w
bGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBzaXplKCksIGZyYW1lUmF0ZSgpLCBzYW1wbGVSb3Rh
dGlvbigpKTsKKyAgICBWaWRlb1NhbXBsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgIG1ldGFkYXRh
LmNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsK
KyAgICBhdXRvIHNhbXBsZSA9IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBs
ZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIHNpemUoKSwgZnJhbWVSYXRlKCksIHNhbXBsZVJvdGF0
aW9uKCksIGZhbHNlLCBtZXRhZGF0YSk7CiAgICAgc2FtcGxlLT5vZmZzZXRUaW1lc3RhbXBzQnko
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNv
bmRzKCkpKTsKICAgICBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoc2FtcGxlLmdldCgp
LCB7IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJS
VEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dz
dHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmluZGV4IDNk
ZTAyMzU2MGJkNTA4YTQ2ZjY5Mjk5MzdjODIwMjJkYWMxODYwYWMuLmYyYmFhZGU0MDExMWZmOTg4
MWEzZmY4ZGE4YWRmYzcyYWVmOGVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQy5jcHAKQEAgLTU4LDkgKzU4LDEwIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlTGliV2ViUlRDOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhCiAgICAg
aWYgKCFpc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGZyYW1lXSB7CisgICAgYXV0
byBtZXRhZGF0YSA9IG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUoZnJhbWUpOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBmcmFtZSwgbWV0YWRhdGFd
IHsKICAgICAgICAgYXV0byBnc3RTYW1wbGUgPSBHU3RyZWFtZXJTYW1wbGVGcm9tTGliV2ViUlRD
VmlkZW9GcmFtZShmcmFtZSk7Ci0gICAgICAgIGF1dG8gc2FtcGxlID0gTWVkaWFTYW1wbGVHU3Ry
ZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSksIHsgfSwgeyB9KTsKKyAgICAgICAgYXV0
byBzYW1wbGUgPSBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoZ3N0U2FtcGxl
KSwgeyB9LCB7IH0sIHN0YXRpY19jYXN0PE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uPihmcmFt
ZS5yb3RhdGlvbigpKSwgZmFsc2UsIG1ldGFkYXRhKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCB7IH0pOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dz
dHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmgKaW5kZXggYzZiYmM1M2Q2NTY5MzliMmQ5OTM2
MDlmMGZkODA5NzljMmU3NmE1Yi4uNWJiODgxMDkwNzM0NjNhNzEwNzJjMzcxY2QyNDNkNTFiZjQy
NDZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVh
bWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCkBAIC00NSw4ICs0NSw2
IEBAIHByaXZhdGU6CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQogICAgIHZvaWQg
T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKSBmaW5hbDsKLSAgICB2b2lkIHNldENh
cHNGcm9tU2V0dGluZ3MoKTsKLSAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NzljZGI0NmQ3NzdjZWNmNTg0MzMyOGU3ZWM4
MjI2YjNjOWRhODgwLi5hNThhZjE1OTIyYzAzNmM4MGUxOTIzNWI3YTM4ZTdiNzJjMWIxZjNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2sgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6IFVwZGF0ZSBydmZjIHRl
c3QgZXhwZWN0YXRpb25zLiBXZWJSVEMtcmVsYXRlZCB0ZXN0cyBmYWlsCisgICAgICAgIG1vc3Rs
eSBiZWNhdXNlIFdlYlJUQyBlbmNvZGluZy9kZWNvZGluZyBpcyBjdXJyZW50bHkgdG90YWxseSBi
cm9rZW4gaW4gV1BFL0dUSy4gWFIgdGVzdHMKKyAgICAgICAgc2hhbGwgYmUgaGFuZGxlZCBpbiBh
IHNlcGFyYXRlIHBhdGNoLgorCiAyMDIxLTExLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ1NTIENvbG9yIDRdIEFkZCBzdXBwb3J0IGZvciBva2xhYigpIGFu
ZCBva2xjaCgpIGNvbG9ycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGI1N2MzOWY2MzBkOGZjNzZlM2QxYTYxZTNhMzRkMWE0ODcwNTMzYWYuLmM2MWRm
Njk3OTdlNTAyOWMzMGY5NTlmNzQ0ZGFkZDBhNjM2NjA5ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc3Miw4ICs3NzIsMTIgQEAgd2Via2l0Lm9y
Zy9iLzIzMTgxMSBtZWRpYS92aWRlby1zeXN0ZW0tc2xlZXAuaHRtbCBbIFRpbWVvdXQgXQogd2Vi
a2l0Lm9yZy9iLzIzMTgxMSB3ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQu
aHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIzMTgxMSB3ZWJhdWRpby9zdXNwZW5kLWNv
bnRleHQtd2hpbGUtaW50ZXJydXB0ZWQuaHRtbCBbIFRpbWVvdXQgXQogCi0jIEFsc28gVGltaW5n
IG91dCBvbiB0aGUgYm90cwotd2Via2l0Lm9yZy9iLzIzMjYyOSBodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLWJsb2NrZWQtYnktd2lsbHNlbmRyZXF1ZXN0Lmh0bWwgWyBDcmFzaCBUaW1lb3V0IF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYyBbIFBhc3MgXQorZmFzdC9t
ZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK3dlYnJ0
Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXdl
YnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lv
bi5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Zp
ZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5o
dHRwcy5odG1sIFsgU2tpcCBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAj
IEVuZCBvZiBHU3RyZWFtZXItcmVsYXRlZCBidWdzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445418</attachid>
            <date>2021-11-30 07:58:35 -0800</date>
            <delta_ts>2021-12-01 01:15:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233541-20211130075833.patch</filename>
            <type>text/plain</type>
            <size>42901</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0OGM0NDZkZTAwNmUwNDE5OGNiNmE3
YmQ0MzAwOWM0ZDQyYjgyNzguLmM1MzFlNGU1ZWU1ZmY0YmE4ZTE0ZmU1NjIzMjI5OTIxOWU2MjYw
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHJlcXVlc3RWaWRlb0Zy
YW1lQ2FsbGJhY2sgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWw6IEVuYWJsZSBydmZjIHN1cHBvcnQgaW4gR1N0cmVhbWVyIHBvcnRzLgorCiAyMDIx
LTExLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGlu
aXRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBXZWIgTG9jayBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZmVkNzEwOWExNDFjNjkwYmMzY2VmNjBhNTJjYzM5NDYzMjIwOTNkLi4wNmJjY2ZkMDM0NTE3ZGE5
MGMwNGNmMDhkOTUwZWExZGU1MjYzYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MjEtMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlkZW8gZnJhbWVzIG1l
dGFkYXRhIHJlcG9ydGVkIGJ5IHRoZSBwbGF5ZXIgaXMgc3RvcmVkIGluIEdzdEJ1ZmZlcnMgYXMg
YSBuZXcgR3N0TWV0YS4KKyAgICAgICAgUHJvY2Vzc2luZyB0aW1lcyBpcyB0cmFja2VkIGluIGNv
bnZlcnRlcnMgYW5kIGRlY29kZXJzIHVzaW5nIHBhZCBwcm9iZXMuIFRoZSBHU3RyZWFtZXIKKyAg
ICAgICAgbWVkaWFzdHJlYW0gdmlkZW8gY2FwdHVyZXIgaXMgbm93IGluc2VydGluZyBtZXRhZGF0
YSB0aGF0IGluY2x1ZGVzIHRoZSBjYXB0dXJlIHRpbWVzdGFtcCBpbgorICAgICAgICB0aGUgYnVm
ZmVycy4gVGhlIFdlYlJUQyBpbmNvbWluZyBhbmQgbW9jayBzb3VyY2VzIGFyZSB3cmFwcGluZyB0
aGUgbWV0YWRhdGEgaW4gdGhlCisgICAgICAgIE1lZGlhU2FtcGxlcyB0aGV5IGNyZWF0ZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9W
aWRlb0ZyYW1lTWV0YWRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpmcm9tR3N0Q2xvY2tUaW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZVZpZGVvRGVjb2Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Zmx1c2hD
dXJyZW50QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6dmlkZW9GcmFtZU1ldGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJl
YW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxl
R1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgICh2aWRlb0ZyYW1lTWV0
YWRhdGFBUElHZXRUeXBlKToKKyAgICAgICAgKHZpZGVvRnJhbWVNZXRhZGF0YUdldEluZm8pOgor
ICAgICAgICAod2Via2l0R3N0QnVmZmVyU2V0VmlkZW9TYW1wbGVNZXRhZGF0YSk6CisgICAgICAg
ICh3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVudCk6CisgICAgICAgICh3ZWJr
aXRHc3RCdWZmZXJHZXRWaWRlb0ZyYW1lTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVTb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChtZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUdldFRh
Z3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dXBkYXRlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6Ok9uRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
TGliV2ViUlRDLmg6CisKIDIwMjEtMTEtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBjbGFuZyBidWlsZCBmaXggYWZ0
ZXIgcjI4NjIyNgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBkOWQ1ODgwNWNiMDJl
Nzk2NGIxZjc2MWQyZTI3ZTNmOGVkZmYxOTMzLi4xMWU1NjFhNjVhNjMwZjI4NjlmZDQ3NTBhNTYz
MGJjODVmODlhOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtMTE3Miw4ICsx
MTcyLDEwIEBAIFJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tFbmFibGVkOgogICAgIFdlYktpdExl
Z2FjeToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgorICAgICAgIlVTRShHU1RS
RUFNRVIpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJDb3JlOgorICAgICAg
IlVTRShHU1RSRUFNRVIpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKIAogIyBGSVhNRTog
VGhpcyBpcyBvbiBieSBkZWZhdWx0IGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNvbnNp
ZGVyIHR1cm5pbmcgaXQgb24gZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDFjMjYzNDc1ZjgxNmQ1YzJhNGZkYjRkNzQ5
NDU1ZDc5NmFhNWRkMDMuLmFiOWM3MDkyZTY1ZjUxMTUyMDEzYzEyYmE0ODAyN2ZkNzBiODI0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTI0LDYgKzI0LDcg
QEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dENvbWJpbmVyUGFkR1N0cmVhbWVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFk
YXRhR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5oCmluZGV4IDk0ZGRmMGVmMGY2MTEzNWJkOWI2
ODkwOGI4MTE1NmZiYmJkZjIzZTIuLmViNTk0Y2E4OTM1YWJlOTA4N2U4ODBkNWQ5MmViZjZjMTUz
OGJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWVNZXRh
ZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWVNZXRhZGF0YS5o
CkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNsdWRlIDxvcHRp
b25hbD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVmlkZW9GcmFtZU1ldGFkYXRh
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNj
OTU2N2MwMzI1MGJkMjU3Li5iYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC04Nyw2ICs4NywxNCBAQCBpbmxpbmUgR3N0
Q2xvY2tUaW1lIHRvR3N0Q2xvY2tUaW1lKGNvbnN0IE1lZGlhVGltZSAmbWVkaWFUaW1lKQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHc3RDbG9ja1RpbWU+KHRvR3N0VW5zaWduZWQ2NFRpbWUobWVk
aWFUaW1lKSk7CiB9CiAKK2lubGluZSBNZWRpYVRpbWUgZnJvbUdzdENsb2NrVGltZShHc3RDbG9j
a1RpbWUgdGltZSkKK3sKKyAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEKHRpbWUpKQor
ICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgcmV0dXJuIE1l
ZGlhVGltZShHU1RfVElNRV9BU19VU0VDT05EUyh0aW1lKSwgR19VU0VDX1BFUl9TRUMpOworfQor
CiBjbGFzcyBHc3RNYXBwZWRCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdzdE1h
cHBlZEJ1ZmZlcik7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCmluZGV4IGZhNzA5ZmVhNTE2ZjM1ODVmYzIyMTcyYjVkYjBmZWJlOWFk
Yjc2ODEuLjc5Nzk0ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMyYzZhMTVjMzJjZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgIlRleHRDb21iaW5lckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRleHRTaW5rR1N0cmVh
bWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmgiCiAjaW5jbHVk
ZSAiVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCkBAIC0yNzUwLDMxICsyNzUxLDI2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsKQogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoR1NUX0JJTl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCAiZGVlcC1lbGVtZW50LWFkZGVkIiwg
R19DQUxMQkFDSygrW10oR3N0QmluKiwgR3N0QmluKiBzdWJCaW4sIEdzdEVsZW1lbnQqIGVsZW1l
bnQsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKSB7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYmluTmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVF9DQVNU
KHN1YkJpbikpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxl
bWVudF9nZXRfbmFtZShlbGVtZW50KSk7CisgICAgICAgIGF1dG8gZWxlbWVudENsYXNzID0gbWFr
ZVN0cmluZyhnc3RfZWxlbWVudF9nZXRfbWV0YWRhdGEoZWxlbWVudCwgR1NUX0VMRU1FTlRfTUVU
QURBVEFfS0xBU1MpKTsKKyAgICAgICAgYXV0byBjbGFzc2lmaWVycyA9IGVsZW1lbnRDbGFzcy5z
cGxpdCgnLycpOwogCi0gICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1lLmdl
dCgpLCAiZG93bmxvYWRidWZmZXIiKSkgewotICAgICAgICAgICAgcGxheWVyLT5jb25maWd1cmVE
b3dubG9hZEJ1ZmZlcihlbGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICAvLyBDb2xsZWN0IHByb2Nlc3NpbmcgdGltZSBtZXRyaWNzIGZvciB2aWRlbyBkZWNv
ZGVycyBhbmQgY29udmVydGVycy4KKyAgICAgICAgaWYgKChjbGFzc2lmaWVycy5jb250YWlucygi
Q29udmVydGVyIl9zKSB8fCBjbGFzc2lmaWVycy5jb250YWlucygiRGVjb2RlciJfcykpICYmIGNs
YXNzaWZpZXJzLmNvbnRhaW5zKCJWaWRlbyJfcykgJiYgIWNsYXNzaWZpZXJzLmNvbnRhaW5zKCJQ
YXJzZXIiKSkKKyAgICAgICAgICAgIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVt
ZW50KGVsZW1lbnQpOwogCi0gICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1l
LmdldCgpLCAidXJpZGVjb2RlYmluIikpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBzZXQg
dGhlIG11bHRpcXVldWUgc2l6ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAgIGdf
b2JqZWN0X3NldChlbGVtZW50LCAiYnVmZmVyLXNpemUiLCAyICogTUIsIG51bGxwdHIpOworICAg
ICAgICBpZiAoY2xhc3NpZmllcnMuY29udGFpbnMoIkRlY29kZXIiX3MpICYmIGNsYXNzaWZpZXJz
LmNvbnRhaW5zKCJWaWRlbyJfcykpIHsKKyAgICAgICAgICAgIHBsYXllci0+Y29uZmlndXJlVmlk
ZW9EZWNvZGVyKGVsZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFnX3N0cl9oYXNfcHJlZml4KGJpbk5hbWUuZ2V0KCksICJkZWNvZGViaW4iKSkK
KyAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJkb3dubG9h
ZGJ1ZmZlciIpKSB7CisgICAgICAgICAgICBwbGF5ZXItPmNvbmZpZ3VyZURvd25sb2FkQnVmZmVy
KGVsZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJ2NGwyIikpCi0gICAgICAgICAg
ICBwbGF5ZXItPm1fdmlkZW9EZWNvZGVyUGxhdGZvcm0gPSBHc3RWaWRlb0RlY29kZXJQbGF0Zm9y
bTo6VmlkZW80TGludXg7Ci0gICAgICAgIGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgoZWxlbWVu
dE5hbWUuZ2V0KCksICJpbXh2cHVkZWMiKSkKLSAgICAgICAgICAgIHBsYXllci0+bV92aWRlb0Rl
Y29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFU7Ci0gICAgICAg
IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJvbXgiKSkKLSAg
ICAgICAgICAgIHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2Rl
clBsYXRmb3JtOjpPcGVuTUFYOwotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgICAg
ICBwbGF5ZXItPnVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncygpOwotI2VuZGlmCisgICAgICAgIC8v
IFRoaXMgd2lsbCBzZXQgdGhlIG11bHRpcXVldWUgc2l6ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZS4K
KyAgICAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgoZWxlbWVudE5hbWUuZ2V0KCksICJ1cmlkZWNv
ZGViaW4iKSkKKyAgICAgICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAiYnVmZmVyLXNpemUi
LCAyICogTUIsIG51bGxwdHIpOwogICAgIH0pLCB0aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtX3BpcGVsaW5lLmdldCgpLCAic291cmNlLXNldHVwIiwgR19DQUxMQkFDSyhz
b3VyY2VTZXR1cENhbGxiYWNrKSwgdGhpcyk7CkBAIC0yODE5LDYgKzI4MTUsMjcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIH0pLCB0aGlzKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNvbmZpZ3VyZVZpZGVvRGVjb2RlcihHc3RFbGVtZW50KiBkZWNvZGVyKQoreworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShkZWNvZGVyKSk7Cisg
ICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFtZS5nZXQoKSwgInY0bDIiKSkKKyAgICAgICAgbV92
aWRlb0RlY29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpWaWRlbzRMaW51
eDsKKyAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUuZ2V0KCksICJpbXh2cHVkZWMi
KSkKKyAgICAgICAgbV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IEdzdFZpZGVvRGVjb2RlclBsYXRm
b3JtOjpJbXhWUFU7CisgICAgZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChuYW1lLmdldCgpLCAi
b214IikpCisgICAgICAgIG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0gPSBHc3RWaWRlb0RlY29kZXJQ
bGF0Zm9ybTo6T3Blbk1BWDsKKyAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUuZ2V0
KCksICJhdmRlYyIpKSB7CisgICAgICAgIC8vIFNldCB0aGUgZGVjb2RlciBtYXhpbXVtIG51bWJl
ciBvZiB0aHJlYWRzIHRvIGEgbG93LCBmaXhlZCB2YWx1ZSwgbm90IGRlcGVuZGluZyBvbiB0aGUK
KyAgICAgICAgLy8gcGxhdGZvcm0uIFRoaXMgYWxzbyBoZWxwcyB3aXRoIHByb2Nlc3NpbmcgbWV0
cmljcyBnYXRoZXJpbmcuIFdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgLy8g
dGhlIGRlY29kZXIgaW50cm9kdWNlcyBhcnRpZmljaWFsIHByb2Nlc3NpbmcgbGF0ZW5jeSByZWZs
ZWN0aW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzLgorICAgICAgICBnX29iamVjdF9z
ZXQoZGVjb2RlciwgIm1heC10aHJlYWRzIiwgMiwgbnVsbHB0cik7CisgICAgfQorCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncygpOworI2Vu
ZGlmCit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRQYXNzQ09SU0Fj
Y2Vzc0NoZWNrKCkgY29uc3QKIHsKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9TUkMobV9zb3VyY2Uu
Z2V0KCkpKQpAQCAtMjkzMCw2ICsyOTQ3LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKKyAgICArK21fc2FtcGxlQ291bnQ7
CisKICAgICBhdXRvIGludGVybmFsQ29tcG9zaXRpbmdPcGVyYXRpb24gPSBbdGhpc10oVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHksIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiYmIGZyYW1lSG9sZGVyKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgIGlm
IChmcmFtZUhvbGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgewpAQCAtMzIzMCw3ICszMjQ5LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcigp
CiB7CiAgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKIAotICAgIGlm
IChtX3NhbXBsZSkgeworICAgIGlmIChtX3NhbXBsZSAmJiBnc3Rfc2FtcGxlX2dldF9idWZmZXIo
bV9zYW1wbGUuZ2V0KCkpKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgbmV3IGNvcHkgb2YgdGhl
IHNhbXBsZSB3aGljaCBoYXMgdG8gYmUgcmVsZWFzZWQuIFRoZSBjb3B5IGlzIG5lY2Vzc2FyeSBz
byB0aGF0CiAgICAgICAgIC8vIHRoZSB2aWRlbyBkaW1lbnNpb25zIGNhbiBzdGlsbCBiZSBmZXRj
aGVkIGFuZCBhbHNvIGZvciBjYW52YXMgcmVuZGVyaW5nLiBUaGUgcmVsZWFzZSBpcwogICAgICAg
ICAvLyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgc2FtcGxlIG1pZ2h0IGhhdmUgYmVlbiBhbGxvY2F0
ZWQgYnkgYSBoYXJkd2FyZSBkZWNvZGVyIGFuZCBtZW1vcnkKQEAgLTM3ODYsNiArMzgwNSwzMSBA
QCBXVEZMb2dDaGFubmVsJiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvZ0NoYW5uZWwo
KSBjb25zdAogfQogI2VuZGlmCiAKK3N0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvRnJhbWVNZXRhZGF0YSgpCit7CisgICAg
aWYgKG1fc2FtcGxlQ291bnQgPT0gbV9sYXN0VmlkZW9GcmFtZU1ldGFkYXRhU2FtcGxlQ291bnQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBtX2xhc3RWaWRlb0ZyYW1lTWV0YWRhdGFTYW1w
bGVDb3VudCA9IG1fc2FtcGxlQ291bnQ7CisKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9z
YW1wbGVNdXRleCB9OworICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9i
dWZmZXIobV9zYW1wbGUuZ2V0KCkpOworICAgIGF1dG8gbWV0YWRhdGEgPSB3ZWJraXRHc3RCdWZm
ZXJHZXRWaWRlb0ZyYW1lTWV0YWRhdGEoYnVmZmVyKTsKKyAgICBhdXRvIHNpemUgPSBuYXR1cmFs
U2l6ZSgpOworICAgIG1ldGFkYXRhLndpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIG1ldGFkYXRh
LmhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CisgICAgbWV0YWRhdGEucHJlc2VudGVkRnJhbWVzID0g
bV9zYW1wbGVDb3VudDsKKworICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBl
Y3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ug
c2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCisgICAgbWV0YWRhdGEucHJl
c2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kcygpOworICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5w
cmVzZW50YXRpb25UaW1lOworCisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiB9CiAKICNlbmRp
ZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IDQwYmQ2ODBhY2ZlZTFjZDIwZjEwMWQ4NWJmNjFiNzA2NDk1NWYxYWIu
LjIxNDc3NmEzMGQ4N2IwYTY0NGE5NWU5M2IzYWRiN2Y4MjU5NWJhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ2OSw2ICs0NjksOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIqKTsKIAorICAgIHZvaWQgY29uZmlndXJlVmlkZW9EZWNvZGVy
KEdzdEVsZW1lbnQqKTsKKwogICAgIHZvaWQgc2V0UGxheWJpblVSTChjb25zdCBVUkwmIHVybFN0
cmluZyk7CiAKICAgICB2b2lkIHVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0cmVhbUNv
bGxlY3Rpb24+Jik7CkBAIC01NjQsNiArNTY2LDkgQEAgcHJpdmF0ZToKICAgICBEYXRhTXV0ZXg8
VGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyPiBtX1Rhc2tBdE1lZGlhVGltZVNjaGVkdWxlckRhdGFN
dXRleDsKIAogcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4g
dmlkZW9GcmFtZU1ldGFkYXRhKCkgZmluYWw7CisgICAgdWludDY0X3QgbV9zYW1wbGVDb3VudCB7
IDAgfTsKKyAgICB1aW50NjRfdCBtX2xhc3RWaWRlb0ZyYW1lTWV0YWRhdGFTYW1wbGVDb3VudCB7
IDAgfTsKICNpZiBVU0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQogICAgIEdVbmlx
dWVQdHI8c3RydWN0IHdwZV92aWRlb19wbGFuZV9kaXNwbGF5X2RtYWJ1Zl9zb3VyY2U+IG1fd3Bl
VmlkZW9QbGFuZURpc3BsYXlEbWFCdWY7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVH
U3RyZWFtZXIuY3BwCmluZGV4IDM4NzM2ZjJjNDA1MmIxZWY3YWIxNjA1MjhmOTViOGIyNzk0NDkw
ZmYuLjc0MzBlMDU4MmFhN2RmZjRmNDU2ODI2NmI1OTFjNDQ5ZWZhY2UwNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRl
ICJWaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0zMiw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTWVkaWFTYW1wbGVHU3RyZWFtZXI6Ok1lZGlhU2FtcGxlR1N0cmVhbWVy
KEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRp
b25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90
YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCkKK01lZGlhU2FtcGxlR1N0cmVhbWVyOjpNZWRpYVNh
bXBsZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6
ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgVmlkZW9Sb3Rh
dGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6b3B0aW9uYWw8Vmlk
ZW9TYW1wbGVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKICAgICA6IG1fcHRzKE1lZGlhVGltZTo6emVy
b1RpbWUoKSkKICAgICAsIG1fZHRzKE1lZGlhVGltZTo6emVyb1RpbWUoKSkKICAgICAsIG1fZHVy
YXRpb24oTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQpAQCAtNDYsMjkgKzQ3LDI3IEBAIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyOjpNZWRpYVNhbXBsZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiBz
YW1wbGUsIGNvbnN0IEZsCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9i
dWZmZXIoc2FtcGxlLmdldCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChidWZmZXIpOwogCi0gICAg
YXV0byBjcmVhdGVNZWRpYVRpbWUgPQotICAgICAgICBbXShHc3RDbG9ja1RpbWUgdGltZSkgLT4g
TWVkaWFUaW1lIHsKLSAgICAgICAgICAgIHJldHVybiBNZWRpYVRpbWUoR1NUX1RJTUVfQVNfVVNF
Q09ORFModGltZSksIEdfVVNFQ19QRVJfU0VDKTsKLSAgICAgICAgfTsKKyAgICBpZiAobWV0YWRh
dGEpCisgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1ZmZlclNldFZpZGVvU2FtcGxlTWV0YWRh
dGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7CiAKICAgICBpZiAoR1NUX0JVRkZFUl9QVFNf
SVNfVkFMSUQoYnVmZmVyKSkKLSAgICAgICAgbV9wdHMgPSBjcmVhdGVNZWRpYVRpbWUoR1NUX0JV
RkZFUl9QVFMoYnVmZmVyKSk7CisgICAgICAgIG1fcHRzID0gZnJvbUdzdENsb2NrVGltZShHU1Rf
QlVGRkVSX1BUUyhidWZmZXIpKTsKICAgICBpZiAoR1NUX0JVRkZFUl9EVFNfSVNfVkFMSUQoYnVm
ZmVyKSB8fCBHU1RfQlVGRkVSX1BUU19JU19WQUxJRChidWZmZXIpKQotICAgICAgICBtX2R0cyA9
IGNyZWF0ZU1lZGlhVGltZShHU1RfQlVGRkVSX0RUU19PUl9QVFMoYnVmZmVyKSk7CisgICAgICAg
IG1fZHRzID0gZnJvbUdzdENsb2NrVGltZShHU1RfQlVGRkVSX0RUU19PUl9QVFMoYnVmZmVyKSk7
CiAgICAgaWYgKEdTVF9CVUZGRVJfRFVSQVRJT05fSVNfVkFMSUQoYnVmZmVyKSkgewogICAgICAg
ICAvLyBTb21ldGltZXMgKGFsYmVpdCByYXJlbHksIHNvIGZhciBzZWVuIG9ubHkgYXQgdGhlIGVu
ZCBvZiBhIHRyYWNrKQogICAgICAgICAvLyBmcmFtZXMgaGF2ZSB2ZXJ5IHNtYWxsIGR1cmF0aW9u
cywgc28gc21hbGwgdGhhdCBtYXkgYmUgdW5kZXIgdGhlCiAgICAgICAgIC8vIHByZWNpc2lvbiB3
ZSBhcmUgd29ya2luZyB3aXRoIGFuZCBiZSB0cnVuY2F0ZWQgdG8gemVyby4KICAgICAgICAgLy8g
U291cmNlQnVmZmVyIGFsZ29yaXRobXMgYXJlIG5vdCBleHBlY3RpbmcgZnJhbWVzIHdpdGggemVy
by1kdXJhdGlvbiwKICAgICAgICAgLy8gc28gbGV0J3MgdXNlIHNvbWV0aGluZyB2ZXJ5IHNtYWxs
IGluc3RlYWQgaW4gdGhvc2UgZnJpbmdlIGNhc2VzLgotICAgICAgICBtX2R1cmF0aW9uID0gY3Jl
YXRlTWVkaWFUaW1lKHN0ZDo6bWF4KEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSwgbWluaW11
bUR1cmF0aW9uKSk7CisgICAgICAgIG1fZHVyYXRpb24gPSBmcm9tR3N0Q2xvY2tUaW1lKHN0ZDo6
bWF4KEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSwgbWluaW11bUR1cmF0aW9uKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgc29tZXRpbWVzIHNhbXBsZXMgZG9u
J3QgcHJvdmlkZSBhIGR1cmF0aW9uLiBUaGlzIGNhbiBuZXZlciBoYXBwZW4gaW4gTVA0IGJlY2F1
c2Ugb2YgdGhlIHdheQogICAgICAgICAvLyB0aGUgZm9ybWF0IGlzIGxhaWQgb3V0LCBidXQgaXQn
cyBwcmV0dHkgY29tbW9uIGluIFdlYk0uCiAgICAgICAgIC8vIFRoZSBnb29kIHBhcnQgaXMgdGhh
dCBkdXJhdGlvbnMgZG9uJ3QgbWF0dGVyIGZvciBwbGF5YmFjaywganVzdCBmb3IgYnVmZmVyZWQg
cmFuZ2VzIGFuZCBjb2RlZCBmcmFtZSBkZWxldGlvbi4KICAgICAgICAgLy8gV2Ugd2FudCB0byBw
aWNrIHNvbWV0aGluZyBzbWFsbCBlbm91Z2ggdG8gbm90IGNhdXNlIHVud2FudGVkIGZyYW1lIGRl
bGV0aW9uLCBidXQgYmlnIGVub3VnaCB0byBuZXZlciBiZQogICAgICAgICAvLyBtaXN0YWtlbiBm
b3IgYSByb3VuZGluZyBhcnRpZmFjdC4KLSAgICAgICAgbV9kdXJhdGlvbiA9IGNyZWF0ZU1lZGlh
VGltZSgxNjY2NjY2Nyk7IC8vIDEvNjAgc2Vjb25kcworICAgICAgICBtX2R1cmF0aW9uID0gZnJv
bUdzdENsb2NrVGltZSgxNjY2NjY2Nyk7IC8vIDEvNjAgc2Vjb25kcwogICAgIH0KIAogICAgIG1f
c2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKQEAgLTEwMSw3ICsxMDAsNyBAQCBS
ZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVGYWtl
U2FtcGxlKEdzdENhcHMqLCBNZWRpYQogICAgIHJldHVybiBhZG9wdFJlZigqZ3N0cmVhbWVyTWVk
aWFTYW1wbGUpOwogfQogCi1SZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlhU2FtcGxlR1N0
cmVhbWVyOjpjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25z
dCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFZpZGVvUm90YXRp
b24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2aWRlb01pcnJvcmVkKQorUmVmPE1lZGlhU2FtcGxlR1N0
cmVhbWVyPiBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2VTYW1wbGUoUGl4ZWxCdWZm
ZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgZGVzdGluYXRpb25TaXplLCBkb3VibGUg
ZnJhbWVSYXRlLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3Jl
ZCwgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAg
IGVuc3VyZUdTdHJlYW1lckluaXRpYWxpemVkKCk7CiAKQEAgLTEyMCw2ICsxMTksOSBAQCBSZWY8
TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZVNh
bXBsZShQaXhlbEJ1ZmZlciYmCiAgICAgYXV0byBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwogICAg
IGdzdF9idWZmZXJfYWRkX3ZpZGVvX21ldGEoYnVmZmVyLmdldCgpLCBHU1RfVklERU9fRlJBTUVf
RkxBR19OT05FLCBHU1RfVklERU9fRk9STUFUX0JHUkEsIHdpZHRoLCBoZWlnaHQpOwogCisgICAg
aWYgKG1ldGFkYXRhKQorICAgICAgICB3ZWJraXRHc3RCdWZmZXJTZXRWaWRlb1NhbXBsZU1ldGFk
YXRhKGJ1ZmZlci5nZXQoKSwgKm1ldGFkYXRhKTsKKwogICAgIGludCBmcmFtZVJhdGVOdW1lcmF0
b3IsIGZyYW1lUmF0ZURlbm9taW5hdG9yOwogICAgIGdzdF91dGlsX2RvdWJsZV90b19mcmFjdGlv
bihmcmFtZVJhdGUsICZmcmFtZVJhdGVOdW1lcmF0b3IsICZmcmFtZVJhdGVEZW5vbWluYXRvcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggNmFiZjIwY2U1ZjI3ZGM1
NjU0ODMyYzA3ODUzNGM5YjQxM2FmNzJjNC4uMzcyMzRhNWMwYTY2YjIxYTNkMDI3NThiY2QyZGY3
ODNjMDA0NDBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDb21t
b24uaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIlZpZGVvU2FtcGxlTWV0
YWRhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM0LDEzICszNSwxMyBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3Mg
TWVkaWFTYW1wbGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdFNhbXBs
ZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJZCwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3Rh
dGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0gZmFsc2UpCisgICAgc3RhdGljIFJlZjxN
ZWRpYVNhbXBsZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwg
Y29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lkLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFk
YXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVHU3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50
YXRpb25TaXplLCB0cmFja0lkLCB2aWRlb1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlR1N0cmVhbWVyKFdURk1vdmUoc2Ft
cGxlKSwgcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCwgdmlkZW9Sb3RhdGlvbiwgdmlkZW9NaXJy
b3JlZCwgV1RGTW92ZShtZXRhZGF0YSkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPE1lZGlh
U2FtcGxlR1N0cmVhbWVyPiBjcmVhdGVGYWtlU2FtcGxlKEdzdENhcHMqLCBNZWRpYVRpbWUgcHRz
LCBNZWRpYVRpbWUgZHRzLCBNZWRpYVRpbWUgZHVyYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgcHJl
c2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCk7Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2VTYW1wbGUoUGl4ZWxCdWZmZXImJiwg
Y29uc3QgSW50U2l6ZSYgZGVzdGluYXRpb25TaXplID0geyB9LCBkb3VibGUgZnJhbWVSYXRlID0g
MSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCB2aWRlb01pcnJvcmVkID0gZmFsc2UpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3Ry
ZWFtZXI+IGNyZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYsIGNvbnN0IEludFNpemUmIGRl
c3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1lUmF0ZSA9IDEsIFZpZGVvUm90YXRpb24g
dmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9
IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvU2FtcGxlTWV0YWRhdGE+JiYgbWV0YWRhdGEgPSBz
dGQ6Om51bGxvcHQpOwogCiAgICAgdm9pZCBleHRlbmRUb1RoZUJlZ2lubmluZygpOwogICAgIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wdHM7
IH0KQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlkZW9NaXJyb3JlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0
U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgVmlkZW9S
b3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNl
KTsKKyAgICBNZWRpYVNhbXBsZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3Qg
RmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBW
aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0g
ZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9TYW1wbGVNZXRhZGF0YT4mJiBtZXRhZGF0YSA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVHU3RyZWFtZXIoKSA9IGRlZmF1
bHQ7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3Ry
ZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMDhiMDYwMmY5YTZkOGRiY2Y4OWIxOGZiMmZiNjAyZGUy
MzM3Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDE4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIgorCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9u
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlw
ZS5oPgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF92aWRlb19mcmFtZV9tZXRh
X2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF92aWRlb19mcmFtZV9tZXRh
X2RlYnVnCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdHJ1Y3QgVmlkZW9GcmFtZU1l
dGFkYXRhUHJpdmF0ZSB7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiB2
aWRlb1NhbXBsZU1ldGFkYXRhOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8R3N0Q2xv
Y2tUaW1lLCBHc3RDbG9ja1RpbWU+PiBwcm9jZXNzaW5nVGltZXM7Cit9OworCitXRUJLSVRfREVG
SU5FX0FTWU5DX0RBVEFfU1RSVUNUKFZpZGVvRnJhbWVNZXRhZGF0YVByaXZhdGUpOworCit0eXBl
ZGVmIHN0cnVjdCBfVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyIHsKKyAgICBHc3RNZXRhIG1l
dGE7CisgICAgVmlkZW9GcmFtZU1ldGFkYXRhUHJpdmF0ZSogcHJpdjsKK30gVmlkZW9GcmFtZU1l
dGFkYXRhR1N0cmVhbWVyOworCitHVHlwZSB2aWRlb0ZyYW1lTWV0YWRhdGFBUElHZXRUeXBlKCkK
K3sKKyAgICBzdGF0aWMgR1R5cGUgdHlwZTsKKyAgICBzdGF0aWMgY29uc3QgZ2NoYXIqIHRhZ3Nb
XSA9IHsgbnVsbHB0ciB9OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgdHlwZSA9IGdzdF9tZXRh
X2FwaV90eXBlX3JlZ2lzdGVyKCJXZWJLaXRWaWRlb0ZyYW1lTWV0YWRhdGFBUEkiLCB0YWdzKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gdHlwZTsKK30KKworI2RlZmluZSBWSURFT19GUkFNRV9NRVRB
REFUQV9BUElfVFlQRSB2aWRlb0ZyYW1lTWV0YWRhdGFBUElHZXRUeXBlKCkKKyNkZWZpbmUgVklE
RU9fRlJBTUVfTUVUQURBVEFfQ0FTVChwKSByZWludGVycHJldF9jYXN0PFZpZGVvRnJhbWVNZXRh
ZGF0YUdTdHJlYW1lcio+KHApCisjZGVmaW5lIGdldEludGVybmFsVmlkZW9GcmFtZU1ldGFkYXRh
KGJ1ZmZlcikgVklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChnc3RfYnVmZmVyX2dldF9tZXRhKGJ1
ZmZlciwgVklERU9fRlJBTUVfTUVUQURBVEFfQVBJX1RZUEUpKQorCitjb25zdCBHc3RNZXRhSW5m
byogdmlkZW9GcmFtZU1ldGFkYXRhR2V0SW5mbygpOworCitzdGQ6OnBhaXI8R3N0QnVmZmVyKiwg
VmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyKj4gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdz
dEJ1ZmZlciogYnVmZmVyKQoreworICAgIGF1dG8qIG1ldGEgPSBnZXRJbnRlcm5hbFZpZGVvRnJh
bWVNZXRhZGF0YShidWZmZXIpOworICAgIGlmIChtZXRhKQorICAgICAgICByZXR1cm4geyBidWZm
ZXIsIG1ldGEgfTsKKworICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZShidWZm
ZXIpOworICAgIHJldHVybiB7IGJ1ZmZlciwgVklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChnc3Rf
YnVmZmVyX2FkZF9tZXRhKGJ1ZmZlciwgdmlkZW9GcmFtZU1ldGFkYXRhR2V0SW5mbygpLCBudWxs
cHRyKSkgfTsKK30KKworY29uc3QgR3N0TWV0YUluZm8qIHZpZGVvRnJhbWVNZXRhZGF0YUdldElu
Zm8oKQoreworICAgIHN0YXRpYyBjb25zdCBHc3RNZXRhSW5mbyogbWV0YUluZm8gPSBudWxscHRy
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWV0YUluZm8gPSBnc3RfbWV0YV9yZWdpc3RlcihW
SURFT19GUkFNRV9NRVRBREFUQV9BUElfVFlQRSwgIldlYktpdFZpZGVvRnJhbWVNZXRhZGF0YSIs
IHNpemVvZihWaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIpLAorICAgICAgICAgICAgW10oR3N0
TWV0YSogbWV0YSwgZ3BvaW50ZXIsIEdzdEJ1ZmZlciopIC0+IGdib29sZWFuIHsKKyAgICAgICAg
ICAgICAgICBhdXRvKiBmcmFtZU1ldGEgPSBWSURFT19GUkFNRV9NRVRBREFUQV9DQVNUKG1ldGEp
OworICAgICAgICAgICAgICAgIGZyYW1lTWV0YS0+cHJpdiA9IGNyZWF0ZVZpZGVvRnJhbWVNZXRh
ZGF0YVByaXZhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBbXShHc3RNZXRhKiBtZXRhLCBHc3RCdWZmZXIqKSB7CisgICAgICAg
ICAgICAgICAgYXV0byogZnJhbWVNZXRhID0gVklERU9fRlJBTUVfTUVUQURBVEFfQ0FTVChtZXRh
KTsKKyAgICAgICAgICAgICAgICBkZXN0cm95VmlkZW9GcmFtZU1ldGFkYXRhUHJpdmF0ZShmcmFt
ZU1ldGEtPnByaXYpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIFtdKEdzdEJ1ZmZlciog
YnVmZmVyLCBHc3RNZXRhKiBtZXRhLCBHc3RCdWZmZXIqLCBHUXVhcmsgdHlwZSwgZ3BvaW50ZXIp
IC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgICAgICBpZiAoIUdTVF9NRVRBX1RSQU5TRk9STV9J
U19DT1BZKHR5cGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAg
ICAgICAgICAgICBhdXRvKiBmcmFtZU1ldGEgPSBWSURFT19GUkFNRV9NRVRBREFUQV9DQVNUKG1l
dGEpOworICAgICAgICAgICAgICAgIGF1dG8gW2J1ZiwgY29weU1ldGFdID0gZW5zdXJlVmlkZW9G
cmFtZU1ldGFkYXRhKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgY29weU1ldGEtPnByaXYtPnZp
ZGVvU2FtcGxlTWV0YWRhdGEgPSBmcmFtZU1ldGEtPnByaXYtPnZpZGVvU2FtcGxlTWV0YWRhdGE7
CisgICAgICAgICAgICAgICAgY29weU1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcyA9IGZyYW1l
TWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzOworICAgICAgICAgICAgICAgIHJldHVybiBUUlVF
OworICAgICAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0dXJuIG1ldGFJbmZvOworfQorCitH
c3RCdWZmZXIqIHdlYmtpdEdzdEJ1ZmZlclNldFZpZGVvU2FtcGxlTWV0YWRhdGEoR3N0QnVmZmVy
KiBidWZmZXIsIHN0ZDo6b3B0aW9uYWw8VmlkZW9TYW1wbGVNZXRhZGF0YT4mJiBtZXRhZGF0YSkK
K3sKKyAgICBpZiAoIUdTVF9JU19CVUZGRVIoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvIFttb2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1l
TWV0YWRhdGEoYnVmZmVyKTsKKyAgICBtZXRhLT5wcml2LT52aWRlb1NhbXBsZU1ldGFkYXRhID0g
V1RGTW92ZShtZXRhZGF0YSk7CisgICAgcmV0dXJuIG1vZGlmaWVkQnVmZmVyOworfQorCit2b2lk
IHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3
ZWJraXRfdmlkZW9fZnJhbWVfbWV0YV9kZWJ1ZywgIndlYmtpdHZpZGVvZnJhbWVtZXRhIiwgMCwg
IlZpZGVvIGZyYW1lIHByb2Nlc3NpbmcgbWV0cmljcyIpOworICAgIH0pOworCisgICAgR1NUX0RF
QlVHKCJUcmFjaW5nIHByb2Nlc3NpbmcgdGltZSBmb3IgJSIgR1NUX1BUUl9GT1JNQVQsIGVsZW1l
bnQpOworICAgIGF1dG8gcHJvYmVUeXBlID0gc3RhdGljX2Nhc3Q8R3N0UGFkUHJvYmVUeXBlPihH
U1RfUEFEX1BST0JFX1RZUEVfUFVTSCB8IEdTVF9QQURfUFJPQkVfVFlQRV9CVUZGRVIpOworCisg
ICAgYXV0byogZWxlbWVudE5hbWVGb3JTaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X25hbWUoZWxl
bWVudCk7CisgICAgYXV0byBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0
aWNfcGFkKGVsZW1lbnQsICJzaW5rIikpOworICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQYWQu
Z2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9p
bnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4geworICAgICAgICBhdXRvIFttb2Rp
ZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9QUk9C
RV9JTkZPX0JVRkZFUihpbmZvKSk7CisgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRBKGlu
Zm8pID0gbW9kaWZpZWRCdWZmZXI7CisgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1l
cy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFpcihn
c3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAgICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgfSwgZWxlbWVudE5hbWVGb3JTaW5rUGFkLCBn
X2ZyZWUpOworCisgICAgYXV0byogZWxlbWVudE5hbWVGb3JTcmNQYWQgPSBnc3RfZWxlbWVudF9n
ZXRfbmFtZShlbGVtZW50KTsKKyAgICBhdXRvIHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZChlbGVtZW50LCAic3JjIikpOworICAgIGdzdF9wYWRfYWRkX3Byb2Jl
KHNyY1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGlu
Zm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgIGF1
dG8qIG1ldGEgPSBnZXRJbnRlcm5hbFZpZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lO
Rk9fQlVGRkVSKGluZm8pKTsKKyAgICAgICAgLy8gU29tZSBkZWNvZGVycyAoc3VjaCBhcyB0aGVv
cmFkZWMpIGRvIG5vdCBhbHdheXMgY29weSB0aGUgaW5wdXQgbWV0YSB0byB0aGUgb3V0cHV0IGZy
YW1lLAorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBtZXRhIGlzIHZhbGlkIGhl
cmUgYmVmb3JlIGFjY2Vzc2luZyBpdC4KKyAgICAgICAgaWYgKCFtZXRhKQorICAgICAgICAgICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisKKyAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBt
ZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1lKTsKKyAgICAgICAgbWV0
YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwgc3RkOjptYWtlX3BhaXIo
dmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOworICAgICAgICByZXR1cm4g
R1NUX1BBRF9QUk9CRV9PSzsKKyAgICB9LCBlbGVtZW50TmFtZUZvclNyY1BhZCwgZ19mcmVlKTsK
K30KKworVmlkZW9GcmFtZU1ldGFkYXRhIHdlYmtpdEdzdEJ1ZmZlckdldFZpZGVvRnJhbWVNZXRh
ZGF0YShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBpZiAoIUdTVF9JU19CVUZGRVIoYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZpZGVvRnJhbWVNZXRhZGF0YSB2aWRlb0Zy
YW1lTWV0YWRhdGE7CisgICAgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpCisg
ICAgICAgIHZpZGVvRnJhbWVNZXRhZGF0YS5tZWRpYVRpbWUgPSBmcm9tR3N0Q2xvY2tUaW1lKEdT
VF9CVUZGRVJfUFRTKGJ1ZmZlcikpLnRvRG91YmxlKCk7CisKKyAgICBhdXRvKiBtZXRhID0gZ2V0
SW50ZXJuYWxWaWRlb0ZyYW1lTWV0YWRhdGEoYnVmZmVyKTsKKyAgICBpZiAoIW1ldGEpCisgICAg
ICAgIHJldHVybiB2aWRlb0ZyYW1lTWV0YWRhdGE7CisKKyAgICBhdXRvIHByb2Nlc3NpbmdEdXJh
dGlvbiA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKKyAgICBmb3IgKGF1dG8mIFtzdGFydFRpbWUs
IHN0b3BUaW1lXSA6IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy52YWx1ZXMoKSkKKyAgICAg
ICAgcHJvY2Vzc2luZ0R1cmF0aW9uICs9IGZyb21Hc3RDbG9ja1RpbWUoR1NUX0NMT0NLX0RJRkYo
c3RhcnRUaW1lLCBzdG9wVGltZSkpOworCisgICAgaWYgKHByb2Nlc3NpbmdEdXJhdGlvbiAhPSBN
ZWRpYVRpbWU6Onplcm9UaW1lKCkpCisgICAgICAgIHZpZGVvRnJhbWVNZXRhZGF0YS5wcm9jZXNz
aW5nRHVyYXRpb24gPSBwcm9jZXNzaW5nRHVyYXRpb24udG9Eb3VibGUoKTsKKworICAgIGF1dG8g
dmlkZW9TYW1wbGVNZXRhZGF0YSA9IG1ldGEtPnByaXYtPnZpZGVvU2FtcGxlTWV0YWRhdGE7Cisg
ICAgaWYgKCF2aWRlb1NhbXBsZU1ldGFkYXRhKQorICAgICAgICByZXR1cm4gdmlkZW9GcmFtZU1l
dGFkYXRhOworCisgICAgaWYgKHZpZGVvU2FtcGxlTWV0YWRhdGEtPmNhcHR1cmVUaW1lKQorICAg
ICAgICB2aWRlb0ZyYW1lTWV0YWRhdGEuY2FwdHVyZVRpbWUgPSB2aWRlb1NhbXBsZU1ldGFkYXRh
LT5jYXB0dXJlVGltZS0+dmFsdWUoKTsKKworICAgIGlmICh2aWRlb1NhbXBsZU1ldGFkYXRhLT5y
ZWNlaXZlVGltZSkKKyAgICAgICAgdmlkZW9GcmFtZU1ldGFkYXRhLnJlY2VpdmVUaW1lID0gdmlk
ZW9TYW1wbGVNZXRhZGF0YS0+cmVjZWl2ZVRpbWUtPnZhbHVlKCk7CisKKyAgICB2aWRlb0ZyYW1l
TWV0YWRhdGEucnRwVGltZXN0YW1wID0gdmlkZW9TYW1wbGVNZXRhZGF0YS0+cnRwVGltZXN0YW1w
OworICAgIHJldHVybiB2aWRlb0ZyYW1lTWV0YWRhdGE7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVN
ZXRhZGF0YUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNWI2MzRm
ZmI1NzRiZmY0ODQ1YjRiYTM3ZDdmMGZkOGZmMjRjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRh
R1N0cmVhbWVyLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJWaWRlb1Nh
bXBsZU1ldGFkYXRhLmgiCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dzdEJ1ZmZlciogd2Vi
a2l0R3N0QnVmZmVyU2V0VmlkZW9TYW1wbGVNZXRhZGF0YShHc3RCdWZmZXIqLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGE+JiYpOwordm9pZCB3ZWJraXRHc3RUcmFj
ZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVudChHc3RFbGVtZW50Kik7CitXZWJDb3JlOjpWaWRlb0Zy
YW1lTWV0YWRhdGEgd2Via2l0R3N0QnVmZmVyR2V0VmlkZW9GcmFtZU1ldGFkYXRhKEdzdEJ1ZmZl
ciopOworCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckNhcHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5jcHAKaW5kZXggZjZmNWY4YmZmYWEzYjZiMjEwNjA0
Mzg4NzY5OWZlMmJlNmE2MzA3Yy4uYzllMGQ1ZWI2MGUyYmMzOGVmM2E5YTVkNTMyYzQzODgwMTA5
NmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuY3BwCkBAIC0yMywxMSAr
MjMsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShWSURFTykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKKwogI2luY2x1ZGUgIkdTdHJlYW1l
ckNhcHR1cmVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmgiCiAK
ICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFw
cHNyYy5oPgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+
CiAKIEdTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfY2FwdHVyZXJfZGVidWcpOwogI2RlZmluZSBH
U1RfQ0FUX0RFRkFVTFQgd2Via2l0X2NhcHR1cmVyX2RlYnVnCkBAIC05OSw5ICsxMDIsMjAgQEAg
R3N0RWxlbWVudCogR1N0cmVhbWVyQ2FwdHVyZXI6OmNyZWF0ZVNvdXJjZSgpCiAgICAgICAgIGlm
IChHU1RfSVNfQVBQX1NSQyhtX3NyYy5nZXQoKSkpCiAgICAgICAgICAgICBnX29iamVjdF9zZXQo
bV9zcmMuZ2V0KCksICJpcy1saXZlIiwgdHJ1ZSwgImZvcm1hdCIsIEdTVF9GT1JNQVRfVElNRSwg
bnVsbHB0cik7CiAKKyAgICAgICAgYXV0byBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQobV9zcmMuZ2V0KCksICJzcmMiKSk7CisgICAgICAgIGlmIChtX2Rldmlj
ZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhKSB7CisgICAgICAgICAg
ICBnc3RfcGFkX2FkZF9wcm9iZShzcmNQYWQuZ2V0KCksIHN0YXRpY19jYXN0PEdzdFBhZFByb2Jl
VHlwZT4oR1NUX1BBRF9QUk9CRV9UWVBFX1BVU0ggfCBHU1RfUEFEX1BST0JFX1RZUEVfQlVGRkVS
KSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlcikgLT4gR3N0UGFk
UHJvYmVSZXR1cm4geworICAgICAgICAgICAgICAgIFZpZGVvU2FtcGxlTWV0YWRhdGEgbWV0YWRh
dGE7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOworICAgICAgICAgICAgICAgIGF1dG8qIGJ1ZmZl
ciA9IEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIoaW5mbyk7CisgICAgICAgICAgICAgICAgYXV0
byogbW9kaWZpZWRCdWZmZXIgPSB3ZWJraXRHc3RCdWZmZXJTZXRWaWRlb1NhbXBsZU1ldGFkYXRh
KGJ1ZmZlciwgbWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSgm
YnVmZmVyLCBtb2RpZmllZEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURf
UFJPQkVfT0s7CisgICAgICAgICAgICB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChtX2RldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9n
ZXRfc3RhdGljX3BhZChtX3NyYy5nZXQoKSwgInNyYyIpKTsKLSAgICAgICAgICAgIGdzdF9wYWRf
YWRkX3Byb2JlKHBhZC5nZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0s
IFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCogdXNlckRhdGEpIC0+IEdz
dFBhZFByb2JlUmV0dXJuIHsKKyAgICAgICAgICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNyY1BhZC5n
ZXQoKSwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sIFtdKEdzdFBhZCosIEdz
dFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCogdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJu
IHsKICAgICAgICAgICAgICAgICBhdXRvKiBldmVudCA9IGdzdF9wYWRfcHJvYmVfaW5mb19nZXRf
ZXZlbnQoaW5mbyk7CiAgICAgICAgICAgICAgICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSAh
PSBHU1RfRVZFTlRfQ0FQUykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJP
QkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcAppbmRleCA2MjBhNmIxNWM4MjIyMjc5ZjFiODgxMzdhZTg0ZTNhOTU3OTc4OWMxLi5mMzcy
OTNiOTU1NjVkNmJlZGJiZTlmMDY5ZjRmOWJiYWUzZDgyMThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJl
YW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uaCIKIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CkBAIC02MSw4ICs2
MiwxMCBAQCBHUmVmUHRyPEdzdFRhZ0xpc3Q+IG1lZGlhU3RyZWFtVHJhY2tQcml2YXRlR2V0VGFn
cyhjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZQogICAgICAgICBnc3RfdGFnX2xpc3RfYWRk
KHRhZ0xpc3QuZ2V0KCksIEdTVF9UQUdfTUVSR0VfQVBQRU5ELCBXRUJLSVRfTUVESUFfVFJBQ0tf
VEFHX0tJTkQsIHN0YXRpY19jYXN0PGludD4oVmlkZW9UcmFja1ByaXZhdGU6OktpbmQ6Ok1haW4p
LCBudWxscHRyKTsKIAogICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHRyYWNrLT5zZXR0aW5ncygp
OwotICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ0xpc3QuZ2V0KCksIEdTVF9UQUdfTUVSR0Vf
QVBQRU5ELCBXRUJLSVRfTUVESUFfVFJBQ0tfVEFHX1dJRFRILCBzZXR0aW5ncy53aWR0aCgpLAot
ICAgICAgICAgICAgV0VCS0lUX01FRElBX1RSQUNLX1RBR19IRUlHSFQsIHNldHRpbmdzLmhlaWdo
dCgpLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHNldHRpbmdzLndpZHRoKCkpCisgICAgICAgICAg
ICBnc3RfdGFnX2xpc3RfYWRkKHRhZ0xpc3QuZ2V0KCksIEdTVF9UQUdfTUVSR0VfQVBQRU5ELCBX
RUJLSVRfTUVESUFfVFJBQ0tfVEFHX1dJRFRILCBzZXR0aW5ncy53aWR0aCgpLCBudWxscHRyKTsK
KyAgICAgICAgaWYgKHNldHRpbmdzLmhlaWdodCgpKQorICAgICAgICAgICAgZ3N0X3RhZ19saXN0
X2FkZCh0YWdMaXN0LmdldCgpLCBHU1RfVEFHX01FUkdFX0FQUEVORCwgV0VCS0lUX01FRElBX1RS
QUNLX1RBR19IRUlHSFQsIHNldHRpbmdzLmhlaWdodCgpLCBudWxscHRyKTsKICAgICB9CiAKICAg
ICBHU1RfREVCVUcoIlRyYWNrIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULCB0YWdMaXN0LmdldCgp
KTsKQEAgLTI2NywxOSArMjcwLDE5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX3BhcmVudCkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvKiBnc3RTYW1wbGUgPSBzdGF0aWNf
Y2FzdDxNZWRpYVNhbXBsZUdTdHJlYW1lcio+KCZzYW1wbGUpLT5wbGF0Zm9ybVNhbXBsZSgpLnNh
bXBsZS5nc3RTYW1wbGU7Ci0gICAgICAgIGF1dG8qIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBz
KGdzdFNhbXBsZSk7Ci0gICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotICAgICAgICBnc3Rfdmlk
ZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpOwotCi0gICAgICAgIGludCB3aWR0aCA9IEdT
VF9WSURFT19JTkZPX1dJRFRIKCZpbmZvKTsKLSAgICAgICAgaW50IGhlaWdodCA9IEdTVF9WSURF
T19JTkZPX0hFSUdIVCgmaW5mbyk7Ci0gICAgICAgIGlmIChtX2xhc3RLbm93blNpemUgIT0gSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSkgewotICAgICAgICAgICAgbV9sYXN0S25vd25TaXplLnNldFdp
ZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIG1fbGFzdEtub3duU2l6ZS5zZXRIZWlnaHQoaGVpZ2h0
KTsKLSAgICAgICAgICAgIHVwZGF0ZUJsYWNrRnJhbWUoY2Fwcyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgYXV0byBzYW1wbGVTaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAg
SW50U2l6ZSBjYXB0dXJlU2l6ZShzYW1wbGVTaXplLndpZHRoKCksIHNhbXBsZVNpemUuaGVpZ2h0
KCkpOworCisgICAgICAgIGF1dG8gc2V0dGluZ3MgPSBtX3RyYWNrLnNldHRpbmdzKCk7CisgICAg
ICAgIG1fY29uZmlndXJlZFNpemUuc2V0V2lkdGgoc2V0dGluZ3Mud2lkdGgoKSk7CisgICAgICAg
IG1fY29uZmlndXJlZFNpemUuc2V0SGVpZ2h0KHNldHRpbmdzLmhlaWdodCgpKTsKIAorICAgICAg
ICBpZiAoIW1fY29uZmlndXJlZFNpemUud2lkdGgoKSkKKyAgICAgICAgICAgIG1fY29uZmlndXJl
ZFNpemUuc2V0V2lkdGgoY2FwdHVyZVNpemUud2lkdGgoKSk7CisgICAgICAgIGlmICghbV9jb25m
aWd1cmVkU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIG1fY29uZmlndXJlZFNpemUuc2V0SGVp
Z2h0KGNhcHR1cmVTaXplLmhlaWdodCgpKTsKKworICAgICAgICBhdXRvKiBtZWRpYVNhbXBsZSA9
IHN0YXRpY19jYXN0PE1lZGlhU2FtcGxlR1N0cmVhbWVyKj4oJnNhbXBsZSk7CiAgICAgICAgIGF1
dG8gdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7CiAgICAgICAgIGJvb2wg
dmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7CiAgICAgICAgIGlmIChtX3Zp
ZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlvbiB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlkZW9N
aXJyb3JlZCkgewpAQCAtMjkyLDYgKzI5NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnc3Rf
cGFkX3B1c2hfZXZlbnQocGFkLmdldCgpLCBnc3RfZXZlbnRfbmV3X3RhZyhnc3RfdGFnX2xpc3Rf
bmV3KEdTVF9UQUdfSU1BR0VfT1JJRU5UQVRJT04sIG9yaWVudGF0aW9uLnV0ZjgoKS5kYXRhKCks
IG51bGxwdHIpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBhdXRvKiBnc3RTYW1wbGUgPSBtZWRp
YVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuZ3N0U2FtcGxlOworICAgICAgICBpZiAo
IW1fY29uZmlndXJlZFNpemUuaXNFbXB0eSgpICYmIG1fbGFzdEtub3duU2l6ZSAhPSBtX2NvbmZp
Z3VyZWRTaXplKSB7CisgICAgICAgICAgICBtX2xhc3RLbm93blNpemUgPSBtX2NvbmZpZ3VyZWRT
aXplOworICAgICAgICAgICAgdXBkYXRlQmxhY2tGcmFtZShnc3Rfc2FtcGxlX2dldF9jYXBzKGdz
dFNhbXBsZSkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fdHJhY2suZW5hYmxlZCgpKSB7
CiAgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKG1fc3JjLmdldCgpLCAiUHVzaGluZyB2aWRl
byBmcmFtZSBmcm9tIGVuYWJsZWQgdHJhY2siKTsKICAgICAgICAgICAgIHB1c2hTYW1wbGUoZ3N0
U2FtcGxlKTsKQEAgLTMzNiw2ICszNDUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1c2hCbGFj
a0ZyYW1lKCkKICAgICB7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1QobV9zcmMuZ2V0KCksICJQ
dXNoaW5nIGJsYWNrIHZpZGVvIGZyYW1lIik7CisgICAgICAgIFZpZGVvU2FtcGxlTWV0YWRhdGEg
bWV0YWRhdGE7CisgICAgICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gd2Via2l0
R3N0QnVmZmVyU2V0VmlkZW9TYW1wbGVNZXRhZGF0YShnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9i
bGFja0ZyYW1lLmdldCgpKSwgbWV0YWRhdGEpOworICAgICAgICAvLyBUT0RPOiBVc2UgZ3N0X3Nh
bXBsZV9zZXRfYnVmZmVyKCkgYWZ0ZXIgYnVtcGluZyBHU3RyZWFtZXIgZGVwZW5kZW5jeSB0byAx
LjE2LgorICAgICAgICBhdXRvKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX2JsYWNrRnJh
bWUuZ2V0KCkpOworICAgICAgICBtX2JsYWNrRnJhbWUgPSBhZG9wdEdSZWYoZ3N0X3NhbXBsZV9u
ZXcoYnVmZmVyLCBjYXBzLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgICAgIHB1c2hTYW1wbGUo
bV9ibGFja0ZyYW1lLmdldCgpKTsKICAgICB9CiAKQEAgLTM0OSw2ICszNjQsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc09ic2VydmluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0+IG1fYXVkaW9UcmFjazsKICAgICBSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbT4gbV92aWRlb1RyYWNrOworICAgIEludFNpemUgbV9jb25maWd1
cmVkU2l6ZTsKICAgICBJbnRTaXplIG1fbGFzdEtub3duU2l6ZTsKICAgICBHUmVmUHRyPEdzdFNh
bXBsZT4gbV9ibGFja0ZyYW1lOwogICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlk
ZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA5NmQwYWYxYzRiMDM1NDMzZmQ4N2UyNzA1ZGI4Y2Q4MzQ5YTY1MzYxLi5hYWE0NzFl
NTc2ODM4M2Q2YzI0ZDkzNzBiMjc3NTQyMzc4NjlkMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTE1Miw3
ICsxNTIsOSBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1cGRhdGVT
YW1wbGVCdWZmZXIoKQogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gc2FtcGxlID0gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZUltYWdlU2FtcGxl
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgc2l6ZSgpLCBmcmFtZVJhdGUoKSwgc2FtcGxlUm90YXRp
b24oKSk7CisgICAgc3RkOjpvcHRpb25hbDxWaWRlb1NhbXBsZU1ldGFkYXRhPiBtZXRhZGF0YTsK
KyAgICBtZXRhZGF0YS0+Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRz
U2luY2VFcG9jaCgpOworICAgIGF1dG8gc2FtcGxlID0gTWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNy
ZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgc2l6ZSgpLCBmcmFtZVJhdGUo
KSwgc2FtcGxlUm90YXRpb24oKSwgZmFsc2UsIFdURk1vdmUobWV0YWRhdGEpKTsKICAgICBzYW1w
bGUtPm9mZnNldFRpbWVzdGFtcHNCeShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBz
ZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSkpOwogICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVU
b09ic2VydmVycyhzYW1wbGUuZ2V0KCksIHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUxpYldlYlJUQy5jcHAKaW5kZXggM2RlMDIzNTYwYmQ1MDhhNDZmNjkyOTkzN2M4MjAyMmRhYzE4
NjBhYy4uNjNlOGMyNDIwMGYxMjhlNWI0ZDMzNzQ5YmMyZmE0NGE0ZWFiNzJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1l
ci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcApAQCAtNjAsNyArNjAsOCBAQCB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQzo6T25GcmFtZShjb25zdCB3ZWJydGM6
OlZpZGVvRnJhbWUmIGZyYQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGZyYW1lXSB7CiAgICAgICAgIGF1dG8gZ3N0U2FtcGxlID0gR1N0cmVh
bWVyU2FtcGxlRnJvbUxpYldlYlJUQ1ZpZGVvRnJhbWUoZnJhbWUpOwotICAgICAgICBhdXRvIHNh
bXBsZSA9IE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShnc3RTYW1wbGUpLCB7
IH0sIHsgfSk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBzdGQ6Om1ha2Vfb3B0aW9uYWwobWV0
YWRhdGFGcm9tVmlkZW9GcmFtZShmcmFtZSkpOworICAgICAgICBhdXRvIHNhbXBsZSA9IE1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShnc3RTYW1wbGUpLCB7fSwge30sIHN0YXRp
Y19jYXN0PE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSwgZmFs
c2UsIFdURk1vdmUobWV0YWRhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dmlkZW9TYW1w
bGVBdmFpbGFibGUoc2FtcGxlLmdldCgpLCB7IH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlTGliV2ViUlRDLmgKaW5kZXggYzZiYmM1M2Q2NTY5MzliMmQ5OTM2MDlmMGZkODA5
NzljMmU3NmE1Yi4uNWJiODgxMDkwNzM0NjNhNzEwNzJjMzcxY2QyNDNkNTFiZjQyNDZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dz
dHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCkBAIC00NSw4ICs0NSw2IEBAIHByaXZh
dGU6CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQogICAgIHZvaWQgT25GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKSBmaW5hbDsKLSAgICB2b2lkIHNldENhcHNGcm9tU2V0
dGluZ3MoKTsKLSAgICBHUmVmUHRyPEdzdENhcHM+IG1fY2FwczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4NTUwYWEwOTI2OGE3ODFlMDVlYWY1NTNkOGY2MGQwNDI0YjRl
ZGI2Li4zNDQ5MTcwMzg2ZjFiNzNkZjUzMjllZmU3YmI5NzI1ZTYzMTY0YWM5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjEtMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6IFVwZGF0ZSBydmZjIHRlc3QgZXhwZWN0
YXRpb25zLiBXZWJSVEMtcmVsYXRlZCB0ZXN0cyBmYWlsCisgICAgICAgIG1vc3RseSBiZWNhdXNl
IFdlYlJUQyBlbmNvZGluZy9kZWNvZGluZyBpcyBjdXJyZW50bHkgdG90YWxseSBicm9rZW4gaW4g
V1BFL0dUSy4gWFIgdGVzdHMKKyAgICAgICAgc2hhbGwgYmUgaGFuZGxlZCBpbiBhIHNlcGFyYXRl
IHBhdGNoLgorCiAyMDIxLTExLTMwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBUcmFuc2l0aW9uIGZyb20gcGVyc3BlY3RpdmUoNTAwcHgpIHRvICdu
b25lJyBpcyBwcm9iYWJseSB3cm9uZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGEzYzgzZjMyYTZhMjYxYjNkNDgwYWQzMTc1NjQ0MzIyMTAxMDRhOGEu
LjgxYzdiNmEyYjBkNGM0ZGEwNjJlM2EzYTFhZjMxYjYzNGFjOTZjOWEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgwNCw4ICs4MDQsMTIgQEAgd2Vi
a2l0Lm9yZy9iLzIzMTgxMSBtZWRpYS92aWRlby1zeXN0ZW0tc2xlZXAuaHRtbCBbIFRpbWVvdXQg
XQogd2Via2l0Lm9yZy9iLzIzMTgxMSB3ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJy
dXB0ZWQuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIzMTgxMSB3ZWJhdWRpby9zdXNw
ZW5kLWNvbnRleHQtd2hpbGUtaW50ZXJydXB0ZWQuaHRtbCBbIFRpbWVvdXQgXQogCi0jIEFsc28g
VGltaW5nIG91dCBvbiB0aGUgYm90cwotd2Via2l0Lm9yZy9iLzIzMjYyOSBodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLWJsb2NrZWQtYnktd2lsbHNlbmRyZXF1ZXN0Lmh0bWwgWyBDcmFzaCBUaW1lb3V0
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYyBbIFBhc3MgXQor
ZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
K3dlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxi
YWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHIt
c2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vz
c2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAjIEVuZCBvZiBHU3RyZWFtZXItcmVsYXRlZCBidWdzCg==
</data>
<flag name="review"
          id="470583"
          type_id="1"
          status="+"
          setter="calvaris"
    />
    <flag name="commit-queue"
          id="470598"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>