<?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>223118</bug_id>
          
          <creation_ts>2021-03-12 06:21:32 -0800</creation_ts>
          <short_desc>Show media session image artwork in Now Playing information pane.</short_desc>
          <delta_ts>2021-03-17 13:47:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223290</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738860</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-12 06:21:32 -0800</bug_when>
    <thetext>Show media session image artwork in Now Playing information pane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738869</commentid>
    <comment_count>1</comment_count>
      <attachid>423041</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-12 06:32:38 -0800</bug_when>
    <thetext>Created attachment 423041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738872</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-12 06:34:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/75360166&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738916</commentid>
    <comment_count>3</comment_count>
      <attachid>423041</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-12 08:58:54 -0800</bug_when>
    <thetext>Comment on attachment 423041
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:49
&gt; +    ArtworkImageLoader(Document&amp; document, String src, ArtworkImageLoaderCallback&amp;&amp; callback)

const String&amp; src

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:60
&gt; +            m_cachedImage = nullptr;

I don&apos;t think the is necessary

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:80
&gt; +    void notifyFinished(CachedResource&amp;, const NetworkLoadMetrics&amp;) override
&gt; +    {
&gt; +        ASSERT(m_cachedImage);

Maybe `ASSERT_UNUSED(resource, &amp;resource == m_cachedImage)` ?

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:82
&gt; +        bool loadSucceeded = !m_cachedImage-&gt;errorOccurred() &amp;&amp; m_cachedImage-&gt;response().httpStatusCode() &lt; 400;
&gt; +        m_callback(loadSucceeded ? m_cachedImage-&gt;image() : nullptr);

Why not just use something like `m_callback(m_cachedImage-&gt;loadFailedOrCanceled() ? m_cachedImage-&gt;image() : nullptr)`, does that not check response status?

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:112
&gt; +    // We can now start retrieving the artwork image if it hadn&apos;t been done before.

I&apos;m not sure this comment helps, the method name makes it clear what happens.

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:172
&gt; +    if (m_session &amp;&amp; m_session-&gt;document() &amp;&amp; mediaImages[0].src != m_artworkImageSrc) {

1. Won&apos;t `mediaImages[0].src` crash if m_metadata.artwork is empty?

2. You should add a `FIXME:` here about coming up with a heuristic to choose the &quot;best&quot; image.

3. If the images array is now empty and there is load in progress, you should cancel it

4. WebKit style is to return early instead of indenting the rest of the function

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:174
&gt; +        m_artworkLoader = WTF::makeUnique&lt;ArtworkImageLoader&gt;(*m_session-&gt;document(), m_artworkImageSrc, [weakThis = makeWeakPtr(*this), this, artworkId = ++m_artworkId](Image* image) {

I don&apos;t think the &quot;WTF::&quot; is necessary if you #include &lt;wtf/StdLibExtras.h&gt;

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:175
&gt; +            if (weakThis &amp;&amp; artworkId == m_artworkId) {

Wouldn&apos;t it be more efficient, and cleaner, to clear m_artworkLoader if it exists cancel the pending load before starting a new one instead of using this ID check?

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:178
&gt; +                    WTFLogAlways(&quot;Received artwork image:%s mimeType:%s artworkId:%u&quot;, m_artworkImageSrc.characters&lt;LChar&gt;(),
&gt; +                        image-&gt;mimeType().characters&lt;LChar&gt;(), artworkId);

I assume this is just temporary debugging code, but it would be useful to log at runtime so let play to have the MediaSession set a Logger in `MediaSession::setMetadata`

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:199
&gt; +Optional&lt;IntSize&gt; MediaMetadata::maybeSize(String sizes) const

This method is unused?

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:204
&gt; +    // the attribute must have a value that is an unordered set of unique space-separated tokens which are ASCII case-insensitive.
&gt; +    // Each value must be either an ASCII case-insensitive match for the string &quot;any&quot;, or a value that consists of two valid non-negative
&gt; +    // integers that do not have a leading U+0030 DIGIT ZERO (0) character and that are separated by a single U+0078 LATIN SMALL LETTER X
&gt; +    // or U+0058 LATIN CAPITAL LETTER X character.

If this is spec text, we typically include a link to the source

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:207
&gt; +    size_t length = tokens.size();
&gt; +    for (size_t i = 0; i &lt; length; ++i) {

This can be made more compact (without loss of clarity IMO):

    for (size_t i = 0, length = tokens.size(); i &lt; length; ++i) {

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:209
&gt; +        if (tokens[i] == &quot;any&quot;)
&gt; +            return { };

Can you check for &quot;any&quot; once, before the loop, instead of checking each token?

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:183
&gt; +    if (!m_navigator)
&gt; +        return nullptr;
&gt; +    return m_navigator-&gt;window()-&gt;document();

`m_navigator-&gt;window()` can be NULL

&gt; Source/WebCore/platform/audio/NowPlayingInfo.h:52
&gt; +            || (imageData &amp;&amp; other.imageData &amp;&amp; imageData.get() != imageData.get() &amp;&amp; *imageData == *imageData);

I don&apos;t understand `imageData.get() != imageData.get() &amp;&amp; *imageData == *imageData`

&gt; Source/WebCore/platform/audio/NowPlayingInfo.h:86
&gt; +    double duration {  0 };

Nit: an extra space snuck in here

&gt; Source/WebCore/platform/audio/NowPlayingInfo.h:109
&gt; +    bool operator!=(const NowPlayingInfo&amp; other) const

Oops!

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:378
&gt; +        // TODO: artwork isn&apos;t refreshed typically. There must be a better way to do this.

s/TODO/FIXME/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739076</commentid>
    <comment_count>4</comment_count>
      <attachid>423041</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-12 17:36:13 -0800</bug_when>
    <thetext>Comment on attachment 423041
Patch

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

&gt;&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:60
&gt;&gt; +            m_cachedImage = nullptr;
&gt; 
&gt; I don&apos;t think the is necessary

nulling the member is what a few classes implementing CachedResourceClient are doing. I thought this was a style thing.

&gt;&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:199
&gt;&gt; +Optional&lt;IntSize&gt; MediaMetadata::maybeSize(String sizes) const
&gt; 
&gt; This method is unused?

it&apos;s used by the code that determine the &quot;best&quot; image, which I didn&apos;t upload.

&gt;&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:204
&gt;&gt; +    // or U+0058 LATIN CAPITAL LETTER X character.
&gt; 
&gt; If this is spec text, we typically include a link to the source

there&apos;s no direct link to that verbiage unfortunately.

&gt;&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:209
&gt;&gt; +            return { };
&gt; 
&gt; Can you check for &quot;any&quot; once, before the loop, instead of checking each token?

doing so after the split allows to easily deal with any spaces .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739095</commentid>
    <comment_count>5</comment_count>
      <attachid>423093</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-12 18:51:22 -0800</bug_when>
    <thetext>Created attachment 423093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739162</commentid>
    <comment_count>6</comment_count>
      <attachid>423093</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-13 11:07:12 -0800</bug_when>
    <thetext>Comment on attachment 423093
Patch

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

This looks good, but I think it is important to add a test before landing.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Manually tested, no framework available to test this feature.

We can at least test image loader. 

You could, for example, add a method to Internals that returns a promise which resolves with the artwork image once it loads. See Internals::grabNextMediaStreamTrackFrame and the test LayoutTests/fast/mediastream/captureStream/canvas3d.html for one way this could be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739385</commentid>
    <comment_count>7</comment_count>
      <attachid>423161</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 05:47:02 -0700</bug_when>
    <thetext>Created attachment 423161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739418</commentid>
    <comment_count>8</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 06:24:41 -0700</bug_when>
    <thetext>Turns out, using a CompletionHandler isn&apos;t suitable as it must run at least once.

We don&apos;t want to run it in the ArtworkImageLoader destructor as we don&apos;t know where we&apos;re up to in the destructor of the artwork loader owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739419</commentid>
    <comment_count>9</comment_count>
      <attachid>423171</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 06:35:30 -0700</bug_when>
    <thetext>Created attachment 423171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739502</commentid>
    <comment_count>10</comment_count>
      <attachid>423171</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-15 10:16:35 -0700</bug_when>
    <thetext>Comment on attachment 423171
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:6109
&gt; +void Internals::loadArtworkImage(String&amp;&amp; url, ArtworkImagePromise&amp;&amp; promise)
&gt; +{
&gt; +    if (!contextDocument()) {
&gt; +        promise.reject(Exception { InvalidStateError, &quot;No document.&quot; });
&gt; +        return;
&gt; +    }
&gt; +    m_artworkImagePromise = WTF::makeUnique&lt;ArtworkImagePromise&gt;(WTFMove(promise));
&gt; +    m_artworkLoader = makeUnique&lt;ArtworkImageLoader&gt;(*contextDocument(), url, [this](Image* image) {
&gt; +        if (image) {
&gt; +            auto imageData = ImageData::create(unsigned(image-&gt;width()), unsigned(image-&gt;height()));
&gt; +            if (!imageData.hasException())
&gt; +                m_artworkImagePromise-&gt;resolve(imageData.releaseReturnValue());
&gt; +            else
&gt; +                m_nextTrackFramePromise-&gt;reject(imageData.exception().code());
&gt; +        } else
&gt; +            m_artworkImagePromise-&gt;reject(Exception { InvalidAccessError, &quot;No image retrieve.&quot;  });
&gt; +        m_artworkImagePromise = nullptr;
&gt; +    });
&gt; +    m_artworkLoader-&gt;requestImageResource();
&gt; +}

This is fine for now, but lets change this once https://bugs.webkit.org/show_bug.cgi?id=222158 lands to have Internals register as an artwork observer and have the test kick off an implicit load by setting MediaSession.metadata.

&gt; LayoutTests/fast/mediasession/metadata/artworkdownload-expected.txt:2
&gt; +FAIL ensure loading artwork image method operates properly assert_equals: expected 18 but got 16

it looks like the test and results don&apos;t match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739709</commentid>
    <comment_count>11</comment_count>
      <attachid>423256</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 15:47:44 -0700</bug_when>
    <thetext>Created attachment 423256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739710</commentid>
    <comment_count>12</comment_count>
      <attachid>423256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-15 15:56:11 -0700</bug_when>
    <thetext>Comment on attachment 423256
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.h:51
&gt; +    typedef WTF::Function&lt;void(Image*)&gt; ArtworkImageLoaderCallback;

We prefer &apos;using&apos; statements nowadays:
using ArtworkImageLoaderCallback = Function&lt;void(Image*)&gt;;

Also note that you don&apos;t need WTF::

&gt; Source/WebCore/testing/Internals.cpp:5260
&gt; +    m_nextTrackFramePromise = WTF::makeUnique&lt;TrackFramePromise&gt;(WTFMove(promise));

WTF:: is not needed.

&gt; Source/WebCore/testing/Internals.cpp:6096
&gt; +    m_artworkImagePromise = WTF::makeUnique&lt;ArtworkImagePromise&gt;(WTFMove(promise));

ditto.

&gt; Source/WebCore/testing/Internals.cpp:6097
&gt; +    m_artworkLoader = makeUnique&lt;ArtworkImageLoader&gt;(*contextDocument(), url, [this](Image* image) {

Shouldn&apos;t we handle the case where m_artworkLoader is non-null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739770</commentid>
    <comment_count>13</comment_count>
      <attachid>423274</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 17:48:02 -0700</bug_when>
    <thetext>Created attachment 423274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739781</commentid>
    <comment_count>14</comment_count>
      <attachid>423256</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 18:24:08 -0700</bug_when>
    <thetext>Comment on attachment 423256
Patch

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

&gt;&gt; Source/WebCore/testing/Internals.cpp:5260
&gt;&gt; +    m_nextTrackFramePromise = WTF::makeUnique&lt;TrackFramePromise&gt;(WTFMove(promise));
&gt; 
&gt; WTF:: is not needed.

This is existing code though, and there&apos;s plenty of places using WTF:: in this file

&gt;&gt; Source/WebCore/testing/Internals.cpp:6097
&gt;&gt; +    m_artworkLoader = makeUnique&lt;ArtworkImageLoader&gt;(*contextDocument(), url, [this](Image* image) {
&gt; 
&gt; Shouldn&apos;t we handle the case where m_artworkLoader is non-null?

makeUnique (and new) is infallible AFAIK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739784</commentid>
    <comment_count>15</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 18:33:37 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)

&gt; &gt; Source/WebCore/testing/Internals.cpp:6097
&gt; &gt; +    m_artworkLoader = makeUnique&lt;ArtworkImageLoader&gt;(*contextDocument(), url, [this](Image* image) {
&gt; 
&gt; Shouldn&apos;t we handle the case where m_artworkLoader is non-null?

I seem to have misread your comment.

I think you&apos;re right, we should handle the case where we have a pending download and reject the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739787</commentid>
    <comment_count>16</comment_count>
      <attachid>423278</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-15 18:40:20 -0700</bug_when>
    <thetext>Created attachment 423278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740306</commentid>
    <comment_count>17</comment_count>
      <attachid>423278</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-16 16:43:02 -0700</bug_when>
    <thetext>Comment on attachment 423278
Patch

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

&gt; Source/WebCore/Modules/mediasession/MediaMetadata.cpp:57
&gt; +    ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();

Although it isn&apos;t an issue with the current code, this method *could* be called while an existing load is in progress so if m_cachedImage is non-null you should probably remove the client and free it here. Maybe add a `clearCachedImage` method and use it here and from the destructor?

&gt; Source/WebCore/html/MediaElementSession.cpp:1116
&gt; +            artwork = NowPlayingInfoArtwork { sessionMetadata-&gt;artworkSrc(), sessionMetadata-&gt;artworkImage()-&gt;mimeType(), sessionMetadata-&gt;artworkImage()-&gt;data() };

Please add a FIXME here about the optimization of only sending image data when it changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740340</commentid>
    <comment_count>18</comment_count>
      <attachid>423421</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-16 18:37:06 -0700</bug_when>
    <thetext>Created attachment 423421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740888</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-17 13:46:56 -0700</bug_when>
    <thetext>Committed r274586: &lt;https://commits.webkit.org/r274586&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423421.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423041</attachid>
            <date>2021-03-12 06:32:38 -0800</date>
            <delta_ts>2021-03-12 18:51:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210313013237.patch</filename>
            <type>text/plain</type>
            <size>23023</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1YWZiMTUwNjJhZTY2
MWNkNjFmMjE5OGNhNTExZGIyZGNlNDk0ZS4uYjY1ZDZkMmEzODcwZWExMWNhMGExYmYyZGVkZTY5
NzM0ZDM0YWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTAzLTEyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hbnVhbGx5IHRlc3Rl
ZCwgYXMgSSBoYXZlIG5vIGNsdWUgb24gaG93IHdlIGNvdWxkIGF1dG9tYXRlIHN1Y2ggdGVzdC4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0TWVkaWFTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlc2V0TWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmspOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFNZXRhZGF0YTo6cmVmcmVzaEFydHdvcmtJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRh
ZGF0YTo6bWF5YmVTaXplIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3Jr
U3JjIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFn
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5n
SW5mbyBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mb0FydHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Tm93UGxheWluZ0luZm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm93UGxheWluZ0luZm86Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Tm93UGxheWluZ0luZm86Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93
UGxheWluZ0luZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5n
SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8pOgorCiAyMDIxLTAzLTA1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5zcGVjdG9yIHZpZXdp
bmcgb2YgY2FudmFzIHNhdmUvcmVzdG9yZSBzdGFjaywgYW5kIHRpZ2h0ZW4gYW5kIHNpbXBsaWZ5
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggZjZmZjMxZmIwOGRk
NDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNi4uMGRkMWU2OWQ3NzU0ZTg2MzNlY2MyY2FmOGQ5
Y2EyYWFmMjI3Y2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTI4LDEzICsyOCw2NyBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVk
aWFJbWFnZS5oIgogI2luY2x1ZGUgIk1lZGlhTWV0YWRhdGFJbml0LmgiCisjaW5jbHVkZSAiU3Bh
Y2VTcGxpdFN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBcnR3b3Jr
SW1hZ2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgor
ICAgIHR5cGVkZWYgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEltYWdlKik+IEFydHdvcmtJ
bWFnZUxvYWRlckNhbGxiYWNrOworICAgIEFydHdvcmtJbWFnZUxvYWRlcihEb2N1bWVudCYgZG9j
dW1lbnQsIFN0cmluZyBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2sp
CisgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAgICAgLCBtX3NyYyhzcmMpCisg
ICAgICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisg
ICAgfkFydHdvcmtJbWFnZUxvYWRlcigpCisgICAgeworICAgICAgICBpZiAobV9jYWNoZWRJbWFn
ZSkgeworICAgICAgICAgICAgbV9jYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisg
ICAgdm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpCisgICAgeworICAgICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCk7CisgICAgICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5
SW1wb3NpdGlvbiA9IG1fZG9jdW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisKKyAgICAgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KG1fZG9jdW1lbnQuY29tcGxldGVV
UkwobV9zcmMpKSwgb3B0aW9ucyk7CisgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9j
dW1lbnQuZG9jdW1lbnRVUkkoKSk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBtX2RvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdlKFdURk1vdmUocmVxdWVzdCkpLnZh
bHVlX29yKG51bGxwdHIpOworCisgICAgICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICAg
ICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICB9CisKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhY2hlZEltYWdl
KTsKKyAgICAgICAgYm9vbCBsb2FkU3VjY2VlZGVkID0gIW1fY2FjaGVkSW1hZ2UtPmVycm9yT2Nj
dXJyZWQoKSAmJiBtX2NhY2hlZEltYWdlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPCA0
MDA7CisgICAgICAgIG1fY2FsbGJhY2sobG9hZFN1Y2NlZWRlZCA/IG1fY2FjaGVkSW1hZ2UtPmlt
YWdlKCkgOiBudWxscHRyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQmIG1fZG9j
dW1lbnQ7CisgICAgU3RyaW5nIG1fc3JjOworICAgIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNr
IG1fY2FsbGJhY2s7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2Fj
aGVkSW1hZ2U7Cit9OworCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRhZGF0YT4+IE1lZGlhTWV0
YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxN
ZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0YWRhdGEgPSBhZG9wdFJl
ZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzEwOSwxNSBAQCBNZWRpYU1ldGFkYXRh
Ojp+TWVkaWFNZXRhZGF0YSgpID0gZGVmYXVsdDsKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0TWVk
aWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBtX3Nlc3Npb24gPSBtYWtl
V2Vha1B0cihzZXNzaW9uKTsKKyAgICAvLyBXZSBjYW4gbm93IHN0YXJ0IHJldHJpZXZpbmcgdGhl
IGFydHdvcmsgaW1hZ2UgaWYgaXQgaGFkbid0IGJlZW4gZG9uZSBiZWZvcmUuCisgICAgcmVmcmVz
aEFydHdvcmtJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlhTWV0YWRhdGE6OnJlc2V0TWVkaWFTZXNz
aW9uKCkKIHsKICAgICBtX3Nlc3Npb24uY2xlYXIoKTsKKyAgICBtX2FydHdvcmtMb2FkZXIgPSBu
dWxscHRyOworICAgIG1fYXJ0d29ya0ltYWdlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTAxLDE2ICsxNTksNzMg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWMKICAgICB9CiAKICAgICBtX21ldGFkYXRhLmFydHdv
cmsgPSBXVEZNb3ZlKHJlc29sdmVkQXJ0d29yayk7CisKKyAgICByZWZyZXNoQXJ0d29ya0ltYWdl
KCk7CisKICAgICBtZXRhZGF0YVVwZGF0ZWQoKTsKICAgICByZXR1cm4geyB9OwogfQogCit2b2lk
IE1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3JrSW1hZ2UoKQoreworICAgIGF1dG8gbWVkaWFJ
bWFnZXMgPSBtX21ldGFkYXRhLmFydHdvcms7CisgICAgaWYgKG1fc2Vzc2lvbiAmJiBtX3Nlc3Np
b24tPmRvY3VtZW50KCkgJiYgbWVkaWFJbWFnZXNbMF0uc3JjICE9IG1fYXJ0d29ya0ltYWdlU3Jj
KSB7CisgICAgICAgIG1fYXJ0d29ya0ltYWdlU3JjID0gbWVkaWFJbWFnZXNbMF0uc3JjOworICAg
ICAgICBtX2FydHdvcmtMb2FkZXIgPSBXVEY6Om1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlTG9hZGVy
PigqbV9zZXNzaW9uLT5kb2N1bWVudCgpLCBtX2FydHdvcmtJbWFnZVNyYywgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBhcnR3b3JrSWQgPSArK21fYXJ0d29ya0lkXShJbWFn
ZSogaW1hZ2UpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBhcnR3b3JrSWQgPT0gbV9h
cnR3b3JrSWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhcnR3b3JrIGltYWdlOiVzIG1pbWVUeXBlOiVz
IGFydHdvcmtJZDoldSIsIG1fYXJ0d29ya0ltYWdlU3JjLmNoYXJhY3RlcnM8TENoYXI+KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+bWltZVR5cGUoKS5jaGFyYWN0ZXJzPExDaGFy
PigpLCBhcnR3b3JrSWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXRB
cnR3b3JrSW1hZ2UoaW1hZ2UpOworICAgICAgICAgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1
ZXN0SW1hZ2VSZXNvdXJjZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQoreworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7
Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAo
bV9zZXNzaW9uKQogICAgICAgICBtX3Nlc3Npb24tPm1ldGFkYXRhVXBkYXRlZCgpOwogfQogCitP
cHRpb25hbDxJbnRTaXplPiBNZWRpYU1ldGFkYXRhOjptYXliZVNpemUoU3RyaW5nIHNpemVzKSBj
b25zdAoreworICAgIC8vIHRoZSBhdHRyaWJ1dGUgbXVzdCBoYXZlIGEgdmFsdWUgdGhhdCBpcyBh
biB1bm9yZGVyZWQgc2V0IG9mIHVuaXF1ZSBzcGFjZS1zZXBhcmF0ZWQgdG9rZW5zIHdoaWNoIGFy
ZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlLgorICAgIC8vIEVhY2ggdmFsdWUgbXVzdCBiZSBlaXRo
ZXIgYW4gQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAiYW55Iiwg
b3IgYSB2YWx1ZSB0aGF0IGNvbnNpc3RzIG9mIHR3byB2YWxpZCBub24tbmVnYXRpdmUKKyAgICAv
LyBpbnRlZ2VycyB0aGF0IGRvIG5vdCBoYXZlIGEgbGVhZGluZyBVKzAwMzAgRElHSVQgWkVSTyAo
MCkgY2hhcmFjdGVyIGFuZCB0aGF0IGFyZSBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgVSswMDc4IExB
VElOIFNNQUxMIExFVFRFUiBYCisgICAgLy8gb3IgVSswMDU4IExBVElOIENBUElUQUwgTEVUVEVS
IFggY2hhcmFjdGVyLgorICAgIGF1dG8gdG9rZW5zID0gU3BhY2VTcGxpdFN0cmluZyhzaXplcywg
dHJ1ZSAvKiBmb2xkIGNhc2UgKi8pOworICAgIHNpemVfdCBsZW5ndGggPSB0b2tlbnMuc2l6ZSgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYg
KHRva2Vuc1tpXSA9PSAiYW55IikKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNv
bnN0IFN0cmluZyB0b2tlbiA9IHRva2Vuc1tpXTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSB0b2tl
bi5zcGxpdCgieCIpOworICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAhPSAyKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmICh2YWx1ZXNbMF0uaXNFbXB0eSgpIHx8IHZhbHVlc1sx
XS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHZhbHVlc1sw
XS5zdGFydHNXaXRoKCIwIikgfHwgdmFsdWVzWzFdLnN0YXJ0c1dpdGgoIjAiKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIGludCB3aWR0
aCA9IHZhbHVlc1swXS50b0ludFN0cmljdCgmb2spOworICAgICAgICBpZiAoIW9rIHx8IHdpZHRo
IDwgMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgaGVpZ2h0ID0gdmFsdWVz
WzBdLnRvSW50U3RyaWN0KCZvayk7CisgICAgICAgIGlmICghb2sgfHwgaGVpZ2h0IDwgMCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKaW5kZXggMzBl
MDkzZDZkMjdkZGI3NDE1MjgxZWU4YjVkMTAwNGVmY2ZhYTVkYS4uMDJjNDczZjU3MTQyNDRmNzEw
MTBhMmNiMGE2NzFhNjI1MzQ2Yjc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
TWVkaWFNZXRhZGF0YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KQEAgLTM1LDExICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEFydHdvcmtJbWFnZUxvYWRlcjsKK2NsYXNzIEltYWdlOwogc3RydWN0IE1l
ZGlhSW1hZ2U7CiAKIHVzaW5nIE1lZGlhU2Vzc2lvbk1ldGFkYXRhID0gTWVkaWFNZXRhZGF0YUlu
aXQ7CiAKLWNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFk
YXRhPiB7CitjbGFzcyBNZWRpYU1ldGFkYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFNZXRh
ZGF0YT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CiAgICAgfk1l
ZGlhTWV0YWRhdGEoKTsKQEAgLTU5LDE0ICs2MiwyNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVj
dG9yPE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5hcnR3
b3JrOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAgY29uc3QgU3RyaW5nJiBhcnR3
b3JrU3JjKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrSW1hZ2VTcmM7IH0KKyAgICBSZWZQdHI8
SW1hZ2U+IGFydHdvcmtJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya0ltYWdlOyB9CisK
ICAgICBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVy
biBtX21ldGFkYXRhOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFNZXRhZGF0YSgpOworICAgIHZv
aWQgc2V0QXJ0d29ya0ltYWdlKEltYWdlKik7CiAgICAgdm9pZCBtZXRhZGF0YVVwZGF0ZWQoKTsK
KyAgICB2b2lkIHJlZnJlc2hBcnR3b3JrSW1hZ2UoKTsKKyAgICBPcHRpb25hbDxJbnRTaXplPiBt
YXliZVNpemUoU3RyaW5nIHNpemVzKSBjb25zdDsKIAogICAgIFdlYWtQdHI8TWVkaWFTZXNzaW9u
PiBtX3Nlc3Npb247CiAgICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXJ0d29ya0ltYWdlTG9hZGVyPiBtX2FydHdvcmtMb2FkZXI7CisgICAg
U3RyaW5nIG1fYXJ0d29ya0ltYWdlU3JjOworICAgIFJlZlB0cjxJbWFnZT4gbV9hcnR3b3JrSW1h
Z2U7CisgICAgdWludDMyX3QgbV9hcnR3b3JrSWQgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXgg
OTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYzMWYyZWFiNDdhOWQzNjQ4ZC4uMjk2N2U3ODkyZjBiMzJl
YzA5NzdhN2FmYWRlMzJhODk5NzhkMzYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yLmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldEFj
dGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2kK
ICAgICAgICAgfQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vz
c2lvbkFjdGlvbihhY3Rpb24pKTsKICAgICB9Ci0gICAgCisKICAgICBhY3Rpb25IYW5kbGVyc1Vw
ZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYgKzE3NiwxMyBAQCBPcHRpb25hbDxkb3VibGU+IE1lZGlh
U2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjptYXgoMC4s
IHN0ZDo6bWluKCptX2xhc3RSZXBvcnRlZFBvc2l0aW9uICsgZWxhcHNlZFRpbWUudmFsdWUoKSwg
bV9wb3NpdGlvblN0YXRlLT5kdXJhdGlvbikpOwogfQogCitEb2N1bWVudCogTWVkaWFTZXNzaW9u
Ojpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hdmlnYXRvcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fbmF2aWdhdG9yLT53aW5kb3coKS0+ZG9jdW1lbnQo
KTsKK30KKwogdm9pZCBNZWRpYVNlc3Npb246Om1ldGFkYXRhVXBkYXRlZCgpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmlu
ZGV4IDRmNGJlNDc3MjY0NDA4NmI3N2Q2MWQ5ZjViMDgyM2ExNWQwNTA1NjkuLjc2NzJlMzJmYzcw
NmUzNzgxMTZkNWVmNzM1NDJiMWRjZjNmYWI3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYU1ldGFk
YXRhOwogY2xhc3MgTmF2aWdhdG9yOwogCkBAIC02MCw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25T
dGF0ZT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50UG9z
aXRpb24oKSBjb25zdDsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgIAog
ICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CiAKICAgICB2b2lkIGFjdGlvbkhhbmRsZXJzVXBk
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5k
ZXggMDczZTQ2MmFhODJmMTczNGExMTBiMGQ1OTFiMDBjMmIzYjAzN2UwOC4uZjdiZjE0Y2EyYjk2
ZjJlYjM4ZWU3ZGUyZDMxYWEzMWJlNzE5ZDU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiAKICAgICBi
b29sIGRpc2FibGVkID0gcGxheWVyLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpOwog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgZGlzYWJsZWQsICIgYmVj
YXVzZSBtZWRpYSBlbmdpbmUgc2F5cyBzbyIpOwotICAgIAorCiAgICAgcmV0dXJuIGRpc2FibGVk
OwogfQogCkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRp
YUVuZ2luZVVwZGF0ZWQoKQogICAgIGlmIChtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KQog
ICAgICAgICBjbGllbnQoKS5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKTsKICNl
bmRpZgotICAgIAorCiB9CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFj
a1Nlc3Npb25TdGF0ZSgpCkBAIC0xMDg4LDcgKzEwODgsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChhdXRvIGhhbmRsZXIgPSBzZXNzaW9uLT5oYW5kbGVyRm9yQWN0
aW9uKGFjdGlvbkRldGFpbHMuYWN0aW9uKSkKICAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQo
YWN0aW9uRGV0YWlscyk7CiAgICAgZWxzZQpAQCAtMTExMCwxMSArMTExMCwxNSBAQCBPcHRpb25h
bDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBj
b25zdAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIGF1dG8qIHdpbmRvdyA9IG1fZWxl
bWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9
IHdpbmRvdyA/IE5hdmlnYXRvck1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2
aWdhdG9yKCkpLm1ldGFkYXRhKCkgOiBudWxscHRyOwotICAgIGlmIChzZXNzaW9uTWV0YWRhdGEp
Ci0gICAgICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+dGl0bGUo
KSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpLCBt
X2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50
VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRp
ZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsK
KyAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhKSB7CisgICAgICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvQXJ0d29yaz4gYXJ0d29yazsKKyAgICAgICAgaWYgKHNlc3Npb25NZXRhZGF0YS0+YXJ0d29y
a0ltYWdlKCkpCisgICAgICAgICAgICBhcnR3b3JrID0gTm93UGxheWluZ0luZm9BcnR3b3JrIHsg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrU3JjKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0lt
YWdlKCktPm1pbWVUeXBlKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0ltYWdlKCktPmRhdGEo
KSB9OworICAgICAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBzZXNzaW9uTWV0YWRhdGEtPnRp
dGxlKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0aXN0KCksIHNlc3Npb25NZXRhZGF0YS0+YWxidW0o
KSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3Vy
cmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlk
ZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5
LCBXVEZNb3ZlKGFydHdvcmspIH07CisgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gTm93UGxh
eWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBk
dXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vz
c2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5IH07CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1l
ZGlhU2Vzc2lvblRpdGxlKCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIG1fZWxlbWVu
dC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBz
dXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCks
IGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSwgeyB9fTsKIH0K
IAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkK
QEAgLTExOTQsNyArMTE5OCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhj
b25zdCBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uIGVudW1lcmF0aW9uVmFsCiAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RI
KHZhbHVlcykpOwogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJh
dGlvblZhbHVlKV07CiB9Ci0gICAgCisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggNTNiZWU1YTI2ZmEy
YjRmMjYxNWNjMzk2ZGVmNWU5NTIzZTM3NmJmZS4uYzczMTliMTk3NDZjZDQ3MzZjZDk3ODYwNjAz
MTc5MTQzOWM3ZGMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIlN1Y2Nlc3NPci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aAppbmRleCBiYzcxNWVlODQ1ZWNhYjAyZmQ5MTNiZjRjMWE3YWE5OWExODBjZGNiLi5mOGEzNGRm
ZDIwZThhNzg2NTk2ODEwZGIxOTM0NDQxOWM5ZDEzZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTI2LDIxICsyNiw3MCBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZWRpYVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgTm93UGxheWluZ0lu
Zm9BcnR3b3JrIHsKKyAgICBTdHJpbmcgc3JjOworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAqdGhpcyAhPSBvdGhlcjsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Tm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBzcmMgIT0gb3RoZXIuc3JjCisgICAgICAgICAgICB8fCBtaW1lVHlwZSAhPSBvdGhlci5taW1l
VHlwZQorICAgICAgICAgICAgfHwgIWltYWdlRGF0YSAhPSAhb3RoZXIuaW1hZ2VEYXRhCisgICAg
ICAgICAgICB8fCAoaW1hZ2VEYXRhICYmIG90aGVyLmltYWdlRGF0YSAmJiBpbWFnZURhdGEuZ2V0
KCkgIT0gaW1hZ2VEYXRhLmdldCgpICYmICppbWFnZURhdGEgPT0gKmltYWdlRGF0YSk7CisgICAg
fQorICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93
UGxheWluZ0luZm9BcnR3b3JrPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0luZm9BcnR3b3JrOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHNyYyA8PCBtaW1lVHlwZSA8
PCBpbWFnZURhdGE7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25h
bDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHNyYzsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNyYykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgbWltZVR5cGU7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbWFnZURhdGEpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE5vd1Bs
YXlpbmdJbmZvQXJ0d29yayB7IFdURk1vdmUoc3JjKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1v
dmUoaW1hZ2VEYXRhKSB9OworfQorCiBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIFN0cmlu
ZyB0aXRsZTsKICAgICBTdHJpbmcgYXJ0aXN0OwogICAgIFN0cmluZyBhbGJ1bTsKICAgICBTdHJp
bmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOwotICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAg
fTsKKyAgICBkb3VibGUgZHVyYXRpb24geyAgMCB9OwogICAgIGRvdWJsZSBjdXJyZW50VGltZSB7
IDAgfTsKICAgICBib29sIHN1cHBvcnRzU2Vla2luZyB7IGZhbHNlIH07CiAgICAgTWVkaWFTZXNz
aW9uSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOwogICAgIGJvb2wgaXNQbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBmYWxz
ZSB9OworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAgICAg
ewpAQCAtNTMsMTAgKzEwMiwxMSBAQCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgICAgICAg
ICAgJiYgc3VwcG9ydHNTZWVraW5nID09IG90aGVyLnN1cHBvcnRzU2Vla2luZwogICAgICAgICAg
ICAgJiYgdW5pcXVlSWRlbnRpZmllciA9PSBvdGhlci51bmlxdWVJZGVudGlmaWVyCiAgICAgICAg
ICAgICAmJiBpc1BsYXlpbmcgPT0gb3RoZXIuaXNQbGF5aW5nCi0gICAgICAgICAgICAmJiBhbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5ID09IG90aGVyLmFsbG93c05vd1BsYXlpbmdD
b250cm9sc1Zpc2liaWxpdHk7CisgICAgICAgICAgICAmJiBhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5ID09IG90aGVyLmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkK
KyAgICAgICAgICAgICYmIGFydHdvcmsgPT0gb3RoZXIuYXJ0d29yazsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8gb3RoZXIpIGNvbnN0CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CkBAIC02Nyw3ICsxMTcsNyBA
QCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxp
bmUgdm9pZCBOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwgYWxidW0gPDwgc291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vl
a2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHNWaXNpYmlsaXR5OworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0IDw8IGFs
YnVtIDw8IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciA8PCBkdXJhdGlvbiA8PCBjdXJyZW50
VGltZSA8PCBzdXBwb3J0c1NlZWtpbmcgPDwgdW5pcXVlSWRlbnRpZmllciA8PCBpc1BsYXlpbmcg
PDwgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA8PCBhcnR3b3JrOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5v
d1BsYXlpbmdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTExMiw3ICsxNjIsMTEg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZv
PiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKEQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93
c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0
KSwgV1RGTW92ZShhbGJ1bSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwg
ZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIs
IGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIE9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGFydHdvcmspKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE5vd1Bs
YXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1
bSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJl
bnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSwgV1RGTW92ZShhcnR3b3JrKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5k
ZXggYzc2NTI1OWVjMzFmNDRkYzFkMGJhZGFmMmNkZGViNDE3ZWM3OTljNy4uYjRjZDFlOWQ5ZDkx
YmU4MGE3ZDA2OWM5MmUxYTIwNTkzNDVhNDc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiTm93UGxheWluZ0luZm8uaCIKICNpbXBv
cnQgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiVlA5VXRpbGl0aWVzQ29jb2Eu
aCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvRnVu
Y3Rpb24uaD4KQEAgLTMwNyw2ICszMDgsMTEgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAg
ICAgICAgYXV0byBjZkN1cnJlbnRUaW1lID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbm93UGxheWluZ0luZm8uY3VycmVu
dFRpbWUpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsK
ICAgICB9CisgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmspIHsKKyAgICAgICAgYXV0byBu
c0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CisgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIH0KIAogICAgIGlmIChjYW5Mb2FkX01lZGlhUmVt
b3RlX01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbigpICYmICFub3dQbGF5aW5nSW5m
by5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICBNUk1lZGlh
UmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCks
IG5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKQEAgLTM2OSw5ICszNzUsMTUgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkKICAgICBtX2hhdmVFdmVyUmVnaXN0ZXJlZEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uID0gdHJ1ZTsKIAogICAgIGlmIChtX25vd1BsYXlpbmdJbmZv
ICE9IG5vd1BsYXlpbmdJbmZvKSB7CisgICAgICAgIC8vIFRPRE86IGFydHdvcmsgaXNuJ3QgcmVm
cmVzaGVkIHR5cGljYWxseS4gVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcy4K
KyAgICAgICAgYm9vbCBmb3JjZVJlZnJlc2ggPSBub3dQbGF5aW5nSW5mbyAmJiBub3dQbGF5aW5n
SW5mby0+YXJ0d29yayAmJiAoIW1fbm93UGxheWluZ0luZm8gfHwgIW1fbm93UGxheWluZ0luZm8t
PmFydHdvcmsgfHwgIG5vd1BsYXlpbmdJbmZvLT5hcnR3b3JrLT5zcmMgIT0gbV9ub3dQbGF5aW5n
SW5mby0+YXJ0d29yay0+c3JjKTsKKyAgICAgICAgaWYgKGZvcmNlUmVmcmVzaCkgeworICAgICAg
ICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jbGVhck5vd1BsYXlp
bmdJbmZvKCk7CisgICAgICAgICAgICBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biA9IGZhbHNlOworICAgICAgICB9CiAgICAgICAgIG1fbm93UGxheWluZ0luZm8gPSBub3dQbGF5
aW5nSW5mbzsKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5z
ZXROb3dQbGF5aW5nSW5mbyghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sICpu
b3dQbGF5aW5nSW5mbyk7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxl
ID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxh
eWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVy
YXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAi
LCBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3Rl
cmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pOworICAgICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8tPnRp
dGxlLCAiXCIsIGlzUGxheWluZyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIsIGR1
cmF0aW9uID0gIiwgbm93UGxheWluZ0luZm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQbGF5
aW5nSW5mby0+Y3VycmVudFRpbWUsICIsIGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1ZUlk
ZW50aWZpZXIudG9VSW50NjQoKSwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJlZEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uLCAiLCBzcmMgPSBcIiIsIG5vd1BsYXlpbmdJbmZvLT5hcnR3b3Jr
ID8gbm93UGxheWluZ0luZm8tPmFydHdvcmstPnNyYyA6IFN0cmluZygpLCAiXCIiKTsKICAgICB9
CiAKICAgICBpZiAoIW1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423093</attachid>
            <date>2021-03-12 18:51:22 -0800</date>
            <delta_ts>2021-03-15 05:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210313135121.patch</filename>
            <type>text/plain</type>
            <size>20036</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNiMmEzOTFlNjVhZmY4
Zjg4MGM0NjdkM2MyNDZlOTlkZmZiNTIwNi4uN2Y1YjQyYTZiZDViMjE2MmMwYTk0NGMyYjg5ZTFi
NjU3M2E5MzdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTAzLTEyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFudWFsbHkgdGVzdGVkLCBubyBmcmFtZXdvcmsgYXZhaWxh
YmxlIHRvIHRlc3QgdGhpcyBmZWF0dXJlLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpz
ZXRNZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6cmVzZXRN
ZWRpYVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29y
ayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpyZWZyZXNoQXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmtJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjptYXliZVNpemUgY29uc3QpOgorICAgICAg
ICBBZGQgQXJ0d29ya0ltYWdlTG9hZGVyIGNsYXNzIHdoaWNoIHdpbGwgZG93bmxvYWQgYSBnaXZl
biBpbWFnZSByZWxhdGl2ZSB0byBjdXJyZW50IGRvY3VtZW50LgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0
YWRhdGE6OmFydHdvcmtTcmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0
YTo6YXJ0d29ya0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRBY3Rp
b25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6ZG9jdW1lbnQgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oOgorICAg
ICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Np
b246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm9BcnR3b3JrOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0FydHdvcms6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vd1BsYXlpbmdJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6CisgICAg
ICAgIEFkZCBhcnR3b3JrJ3MgaW1hZ2UgYW5kIG1pbWVUeXBlIHRvIE5vdyBQbGF5aW5nIGRpY3Rp
b25hcnkuCisKIDIwMjEtMDMtMTIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQmxlbmRpbmcgbGVuZ3RocyBvZiBkaWZmZXJlbnQgdHlwZXMgc2hvdWxkIGJl
IGFsbG93ZWQgb3V0c2lkZSBvZiB0aGUgWzAtMV0gcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNi4uYTYyNGI0N2MzNmRlZjYyYTVlZTQ2
ZGIzMjgwZjIwZTZmNDdjZjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTI4LDEzICsyOCw2NCBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAjaW5j
bHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFydHdvcmtJbWFnZUxvYWRlciBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRJbWFnZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgdHlwZWRlZiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEltYWdlKik+
IEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrOworICAgIEFydHdvcmtJbWFnZUxvYWRlcihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc3JjLCBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQorICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgICAg
ICwgbV9zcmMoc3JjKQorICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisg
ICAgeworICAgIH0KKworICAgIH5BcnR3b3JrSW1hZ2VMb2FkZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKG1fY2FjaGVkSW1hZ2UpCisgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZW1vdmVDbGll
bnQoKnRoaXMpOworICAgIH0KKworICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKQorICAg
IHsKKyAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOworICAgICAgICBvcHRpb25z
LmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBtX2RvY3VtZW50LmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9s
aWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
OworCisgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlvbnMpOworICAgICAgICByZXF1
ZXN0LnNldEluaXRpYXRvcihtX2RvY3VtZW50LmRvY3VtZW50VVJJKCkpOworICAgICAgICBtX2Nh
Y2hlZEltYWdlID0gbV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RJbWFn
ZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKKworICAgICAgICBpZiAobV9j
YWNoZWRJbWFnZSkKKyAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgqdGhpcyk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJ
bWFnZSk7CisgICAgICAgIG1fY2FsbGJhY2sobV9jYWNoZWRJbWFnZS0+bG9hZEZhaWxlZE9yQ2Fu
Y2VsZWQoKSA/IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkgOiBudWxscHRyKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgY29uc3QgU3RyaW5nIG1fc3Jj
OworICAgIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Cit9OworCiBFeGNlcHRp
b25PcjxSZWY8TWVkaWFNZXRhZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0
KQogewogICAgIGF1dG8gbWV0YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpA
QCAtNTUsMTEgKzEwNiwxNCBAQCBNZWRpYU1ldGFkYXRhOjp+TWVkaWFNZXRhZGF0YSgpID0gZGVm
YXVsdDsKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKICAgICBtX3Nlc3Npb24gPSBtYWtlV2Vha1B0cihzZXNzaW9uKTsKKyAgICBy
ZWZyZXNoQXJ0d29ya0ltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRp
YVNlc3Npb24oKQogewogICAgIG1fc2Vzc2lvbi5jbGVhcigpOworICAgIG1fYXJ0d29ya0xvYWRl
ciA9IG51bGxwdHI7CisgICAgbV9hcnR3b3JrSW1hZ2UgPSBudWxscHRyOwogfQogCiB2b2lkIE1l
ZGlhTWV0YWRhdGE6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xMDEsMTAgKzE1
NSwzNiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlYwogICAgIH0KIAogICAgIG1fbWV0YWRhdGEu
YXJ0d29yayA9IFdURk1vdmUocmVzb2x2ZWRBcnR3b3JrKTsKKworICAgIHJlZnJlc2hBcnR3b3Jr
SW1hZ2UoKTsKKwogICAgIG1ldGFkYXRhVXBkYXRlZCgpOwogICAgIHJldHVybiB7IH07CiB9CiAK
K3ZvaWQgTWVkaWFNZXRhZGF0YTo6cmVmcmVzaEFydHdvcmtJbWFnZSgpCit7CisgICAgY29uc3Qg
YXV0byYgbWVkaWFJbWFnZXMgPSBtX21ldGFkYXRhLmFydHdvcms7CisgICAgaWYgKG1lZGlhSW1h
Z2VzLmlzRW1wdHkoKSkgeworICAgICAgICBtX2FydHdvcmtMb2FkZXIgPSBudWxscHRyOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV9zZXNzaW9uIHx8ICFtX3Nlc3Npb24tPmRv
Y3VtZW50KCkgfHwgbWVkaWFJbWFnZXNbMF0uc3JjID09IG1fYXJ0d29ya0ltYWdlU3JjKQorICAg
ICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBhIGhldXJpc3RpYyB0byByZXRy
aWV2ZSB0aGUgImJlc3QiIGltYWdlLgorICAgIG1fYXJ0d29ya0ltYWdlU3JjID0gbWVkaWFJbWFn
ZXNbMF0uc3JjOworICAgIG1fYXJ0d29ya0xvYWRlciA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdl
TG9hZGVyPigqbV9zZXNzaW9uLT5kb2N1bWVudCgpLCBtX2FydHdvcmtJbWFnZVNyYywgW3RoaXNd
KEltYWdlKiBpbWFnZSkgeworICAgICAgICBzZXRBcnR3b3JrSW1hZ2UoaW1hZ2UpOworICAgICAg
ICBtZXRhZGF0YVVwZGF0ZWQoKTsKKyAgICB9KTsKKyAgICBtX2FydHdvcmtMb2FkZXItPnJlcXVl
c3RJbWFnZVJlc291cmNlKCk7Cit9CisKK3ZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0lt
YWdlKEltYWdlKiBpbWFnZSkKK3sKKyAgICBtX2FydHdvcmtJbWFnZSA9IGltYWdlOworfQorCiB2
b2lkIE1lZGlhTWV0YWRhdGE6Om1ldGFkYXRhVXBkYXRlZCgpCiB7CiAgICAgaWYgKG1fc2Vzc2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
TWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuaAppbmRleCAzMGUwOTNkNmQyN2RkYjc0MTUyODFlZThiNWQxMDA0ZWZjZmFhNWRhLi4z
NWM2NzY4YjU2ZWUwMjQwYmNlYTQ5MTJhM2RiYzcwYjY3MDg5ZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCkBAIC0zNSw2
ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9h
ZGVyOworY2xhc3MgSW1hZ2U7CiBzdHJ1Y3QgTWVkaWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNz
aW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5pdDsKQEAgLTU5LDE0ICs2MSwyMiBAQCBwdWJs
aWM6CiAgICAgY29uc3QgVmVjdG9yPE1lZGlhSW1hZ2U+JiBhcnR3b3JrKCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhZGF0YS5hcnR3b3JrOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXJ0d29y
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPE1lZGlhSW1hZ2U+JiYpOwogCisgICAg
Y29uc3QgU3RyaW5nJiBhcnR3b3JrU3JjKCkgY29uc3QgeyByZXR1cm4gbV9hcnR3b3JrSW1hZ2VT
cmM7IH0KKyAgICBSZWZQdHI8SW1hZ2U+IGFydHdvcmtJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJ0d29ya0ltYWdlOyB9CisKICAgICBjb25zdCBNZWRpYVNlc3Npb25NZXRhZGF0YSYgbWV0YWRh
dGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFN
ZXRhZGF0YSgpOworICAgIHZvaWQgc2V0QXJ0d29ya0ltYWdlKEltYWdlKik7CiAgICAgdm9pZCBt
ZXRhZGF0YVVwZGF0ZWQoKTsKKyAgICB2b2lkIHJlZnJlc2hBcnR3b3JrSW1hZ2UoKTsKIAogICAg
IFdlYWtQdHI8TWVkaWFTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgTWVkaWFTZXNzaW9uTWV0YWRh
dGEgbV9tZXRhZGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJ0d29ya0ltYWdlTG9hZGVyPiBt
X2FydHdvcmtMb2FkZXI7CisgICAgU3RyaW5nIG1fYXJ0d29ya0ltYWdlU3JjOworICAgIFJlZlB0
cjxJbWFnZT4gbV9hcnR3b3JrSW1hZ2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRleCA5MDFkZGIwYTdi
NGZlOWU5MzYzZTVmZjMxZjJlYWI0N2E5ZDM2NDhkLi4zMmIwOGUxYTcxZGU5NDMwZDEyMjBlMGJl
NmEyMWNkOGUyYjU3MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lZGlhTWV0YWRhdGEuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3Iu
aCIKQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxl
cihNZWRpYVNlc3Npb25BY3Rpb24gYWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaQogICAgICAgICB9
CiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJl
bW92ZVN1cHBvcnRlZENvbW1hbmQocGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9u
KGFjdGlvbikpOwogICAgIH0KLSAgICAKKwogICAgIGFjdGlvbkhhbmRsZXJzVXBkYXRlZCgpOwog
fQogCkBAIC0xNzUsNiArMTc2LDEzIEBAIE9wdGlvbmFsPGRvdWJsZT4gTWVkaWFTZXNzaW9uOjpj
dXJyZW50UG9zaXRpb24oKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om1heCgwLiwgc3RkOjptaW4o
Km1fbGFzdFJlcG9ydGVkUG9zaXRpb24gKyBlbGFwc2VkVGltZS52YWx1ZSgpLCBtX3Bvc2l0aW9u
U3RhdGUtPmR1cmF0aW9uKSk7CiB9CiAKK0RvY3VtZW50KiBNZWRpYVNlc3Npb246OmRvY3VtZW50
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbmF2aWdhdG9yIHx8ICFtX25hdmlnYXRvci0+d2luZG93
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX25hdmlnYXRvci0+d2lu
ZG93KCktPmRvY3VtZW50KCk7Cit9CisKIHZvaWQgTWVkaWFTZXNzaW9uOjptZXRhZGF0YVVwZGF0
ZWQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYVNlc3Npb24uaAppbmRleCA0ZjRiZTQ3NzI2NDQwODZiNzdkNjFkOWY1YjA4MjNhMTVkMDUw
NTY5Li43NjcyZTMyZmM3MDZlMzc4MTE2ZDVlZjczNTQyYjFkY2YzZmFiNzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAt
NDIsNiArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50Owog
Y2xhc3MgTWVkaWFNZXRhZGF0YTsKIGNsYXNzIE5hdmlnYXRvcjsKIApAQCAtNjAsNiArNjEsOCBA
QCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UG9zaXRpb25TdGF0ZShPcHRpb25h
bDxNZWRpYVBvc2l0aW9uU3RhdGU+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGRv
dWJsZT4gY3VycmVudFBvc2l0aW9uKCkgY29uc3Q7CiAKKyAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKKyAgICAKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOwogCiAgICAgdm9pZCBh
Y3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwCmluZGV4IDA3M2U0NjJhYTgyZjE3MzRhMTEwYjBkNTkxYjAwYzJiM2IwMzdl
MDguLmY3YmYxNGNhMmI5NmYyZWIzOGVlN2RlMmQzMWFhMzFiZTcxOWQ1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNjUzLDcgKzY1Myw3IEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
KSBjb25zdAogCiAgICAgYm9vbCBkaXNhYmxlZCA9IHBsYXllci0+d2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQoKTsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIs
IGRpc2FibGVkLCAiIGJlY2F1c2UgbWVkaWEgZW5naW5lIHNheXMgc28iKTsKLSAgICAKKwogICAg
IHJldHVybiBkaXNhYmxlZDsKIH0KIApAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKCkKICAgICBpZiAobV9zaG91bGRQbGF5VG9Q
bGF5YmFja1RhcmdldCkKICAgICAgICAgY2xpZW50KCkuc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQodHJ1ZSk7CiAjZW5kaWYKLSAgICAKKwogfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246OnJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKQpAQCAtMTA4OCw3ICsxMDg4LDcgQEAgdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUmVt
b3RlQ29udHJvbENvbW1hbmRUeXAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoYXV0byBoYW5kbGVyID0gc2Vzc2lv
bi0+aGFuZGxlckZvckFjdGlvbihhY3Rpb25EZXRhaWxzLmFjdGlvbikpCiAgICAgICAgIGhhbmRs
ZXItPmhhbmRsZUV2ZW50KGFjdGlvbkRldGFpbHMpOwogICAgIGVsc2UKQEAgLTExMTAsMTEgKzEx
MTAsMTUgQEAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5v
d1BsYXlpbmdJbmZvKCkgY29uc3QKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBhdXRv
KiB3aW5kb3cgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKICAgICBhdXRvKiBz
ZXNzaW9uTWV0YWRhdGEgPSB3aW5kb3cgPyBOYXZpZ2F0b3JNZWRpYVNlc3Npb246Om1lZGlhU2Vz
c2lvbih3aW5kb3ctPm5hdmlnYXRvcigpKS5tZXRhZGF0YSgpIDogbnVsbHB0cjsKLSAgICBpZiAo
c2Vzc2lvbk1ldGFkYXRhKQotICAgICAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBzZXNzaW9u
TWV0YWRhdGEtPnRpdGxlKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0aXN0KCksIHNlc3Npb25NZXRh
ZGF0YS0+YWxidW0oKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBk
dXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vz
c2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5IH07CisgICAgaWYgKHNlc3Npb25NZXRhZGF0YSkgeworICAgICAgICBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CisgICAgICAgIGlmIChzZXNzaW9u
TWV0YWRhdGEtPmFydHdvcmtJbWFnZSgpKQorICAgICAgICAgICAgYXJ0d29yayA9IE5vd1BsYXlp
bmdJbmZvQXJ0d29yayB7IHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya1NyYygpLCBzZXNzaW9uTWV0
YWRhdGEtPmFydHdvcmtJbWFnZSgpLT5taW1lVHlwZSgpLCBzZXNzaW9uTWV0YWRhdGEtPmFydHdv
cmtJbWFnZSgpLT5kYXRhKCkgfTsKKyAgICAgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgc2Vz
c2lvbk1ldGFkYXRhLT50aXRsZSgpLCBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpLCBzZXNzaW9u
TWV0YWRhdGEtPmFsYnVtKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIo
KSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRp
YVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSwgV1RGTW92ZShhcnR3b3JrKSB9OworICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCks
IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1f
ZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIHJldHVybiBOb3dQbGF5aW5nSW5m
byB7IG1fZWxlbWVudC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9u
LCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5p
cXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHksIHsgfX07CiB9CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6dXBkYXRlTWVkaWFV
c2FnZUlmQ2hhbmdlZCgpCkBAIC0xMTk0LDcgKzExOTgsNyBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoY29uc3QgTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbiBlbnVtZXJhdGlv
blZhbAogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwg
V1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwogfQotICAgIAorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmlu
ZGV4IDUzYmVlNWEyNmZhMmI0ZjI2MTVjYzM5NmRlZjVlOTUyM2UzNzZiZmUuLmM3MzE5YjE5NzQ2
Y2Q0NzM2Y2Q5Nzg2MDYwMzE3OTE0MzljN2RjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTdWNjZXNzT3IuaCIKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmgKaW5kZXggYmM3MTVlZTg0NWVjYWIwMmZkOTEzYmY0YzFhN2FhOTlh
MTgwY2RjYi4uMjA5ODNiNWMyMTQ0NjI4ZWU2M2Q1ODdkZTE3MWY1ODE5NzFhMGUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0yNiwx
MCArMjYsNTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Ry
dWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CisgICAgU3RyaW5nIHNyYzsKKyAgICBTdHJpbmcg
bWltZVR5cGU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gKnRoaXMgIT0gb3RoZXI7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gc3JjICE9IG90aGVyLnNyYyB8fCBtaW1lVHlwZSAhPSBvdGhlci5t
aW1lVHlwZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvQXJ0d29yazo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzcmMgPDwg
bWltZVR5cGUgPDwgaW1hZ2VEYXRhOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxp
bmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQbGF5aW5nSW5mb0FydHdvcms6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyBzcmM7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzcmMpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIG1p
bWVUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW1hZ2VEYXRhKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBXVEZNb3ZlKHNyYyksIFdURk1vdmUobWltZVR5
cGUpLCBXVEZNb3ZlKGltYWdlRGF0YSkgfTsKK30KKwogc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsK
ICAgICBTdHJpbmcgdGl0bGU7CiAgICAgU3RyaW5nIGFydGlzdDsKQEAgLTQxLDYgKzg2LDcgQEAg
c3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKICAgICBNZWRpYVNlc3Npb25JZGVudGlmaWVyIHVuaXF1
ZUlkZW50aWZpZXI7CiAgICAgYm9vbCBpc1BsYXlpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8
Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3JrOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vd1BsYXlpbmdJbmZvJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC01MywxMCArOTksMTEg
QEAgc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKICAgICAgICAgICAgICYmIHN1cHBvcnRzU2Vla2lu
ZyA9PSBvdGhlci5zdXBwb3J0c1NlZWtpbmcKICAgICAgICAgICAgICYmIHVuaXF1ZUlkZW50aWZp
ZXIgPT0gb3RoZXIudW5pcXVlSWRlbnRpZmllcgogICAgICAgICAgICAgJiYgaXNQbGF5aW5nID09
IG90aGVyLmlzUGxheWluZwotICAgICAgICAgICAgJiYgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
VmlzaWJpbGl0eSA9PSBvdGhlci5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5Owor
ICAgICAgICAgICAgJiYgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA9PSBvdGhl
ci5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5CisgICAgICAgICAgICAmJiBhcnR3
b3JrID09IG90aGVyLmFydHdvcms7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE5vd1BsYXlpbmdJbmZvIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBO
b3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CiAgICAgfQpAQCAtNjcsNyArMTE0LDcgQEAgc3RydWN0IE5vd1BsYXlpbmdJ
bmZvIHsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0lu
Zm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgdGl0
bGUgPDwgYXJ0aXN0IDw8IGFsYnVtIDw8IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciA8PCBk
dXJhdGlvbiA8PCBjdXJyZW50VGltZSA8PCBzdXBwb3J0c1NlZWtpbmcgPDwgdW5pcXVlSWRlbnRp
ZmllciA8PCBpc1BsYXlpbmcgPDwgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsK
KyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNTZWVr
aW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlpbmdD
b250cm9sc1Zpc2liaWxpdHkgPDwgYXJ0d29yazsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCkBAIC0xMTIsNyArMTU5LDExIEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRl
Y29kZShECiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNW
aXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBOb3dQbGF5aW5n
SW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBX
VEZNb3ZlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGlt
ZSwgc3VwcG9ydHNTZWVraW5nLCB1bmlxdWVJZGVudGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05v
d1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5m
b0FydHdvcms+IGFydHdvcms7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnR3b3JrKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdURk1vdmUo
dGl0bGUpLCBXVEZNb3ZlKGFydGlzdCksIFdURk1vdmUoYWxidW0pLCBXVEZNb3ZlKHNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVr
aW5nLCB1bmlxdWVJZGVudGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9s
c1Zpc2liaWxpdHksIFdURk1vdmUoYXJ0d29yaykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGM3NjUyNTllYzMxZjQ0ZGMx
ZDBiYWRhZjJjZGRlYjQxN2VjNzk5YzcuLjExNmE5MWU2ZTczYWMxMjk2YmIwNDBkYTA5NThjOWEy
YjcyZDhlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcg
QEAKICNpbXBvcnQgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW1wb3J0ICJTaGFyZWRC
dWZmZXIuaCIKICNpbXBvcnQgIlZQOVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CkBAIC0zMDcsNiAr
MzA4LDExIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIGF1dG8gY2ZDdXJyZW50
VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1lKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQorICAgIGlmIChub3dQ
bGF5aW5nSW5mby5hcnR3b3JrKSB7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Fy
dHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBl
LCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICB9CiAKICAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0
UGFyZW50QXBwbGljYXRpb24oKSAmJiAhbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxp
Y2F0aW9uKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBub3dQbGF5aW5nSW5mby5zb3Vy
Y2VBcHBsaWNhdGlvbklkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0zNzEs
NyArMzc3LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlp
bmdJbmZvKCkKICAgICBpZiAobV9ub3dQbGF5aW5nSW5mbyAhPSBub3dQbGF5aW5nSW5mbykgewog
ICAgICAgICBtX25vd1BsYXlpbmdJbmZvID0gbm93UGxheWluZ0luZm87CiAgICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuc2V0Tm93UGxheWluZ0luZm8oIW1fcmVn
aXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCAqbm93UGxheWluZ0luZm8pOwotICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8t
PnRpdGxlLCAiXCIsIGlzUGxheWluZyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIs
IGR1cmF0aW9uID0gIiwgbm93UGxheWluZ0luZm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQ
bGF5aW5nSW5mby0+Y3VycmVudFRpbWUsICIsIGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1
ZUlkZW50aWZpZXIudG9VSW50NjQoKSwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJlZEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAidGl0bGUgPSBcIiIsIG5vd1BsYXlpbmdJbmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAi
LCBub3dQbGF5aW5nSW5mby0+aXNQbGF5aW5nLCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJ
bmZvLT5kdXJhdGlvbiwgIiwgbm93ID0gIiwgbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAi
LCBpZCA9ICIsIG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyLnRvVUludDY0KCksICIs
IHJlZ2lzdGVyZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgIiwg
c3JjID0gXCIiLCBub3dQbGF5aW5nSW5mby0+YXJ0d29yayA/IG5vd1BsYXlpbmdJbmZvLT5hcnR3
b3JrLT5zcmMgOiBTdHJpbmcoKSwgIlwiIik7CiAgICAgfQogCiAgICAgaWYgKCFtX3JlZ2lzdGVy
ZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423161</attachid>
            <date>2021-03-15 05:47:02 -0700</date>
            <delta_ts>2021-03-15 06:35:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210315234700.patch</filename>
            <type>text/plain</type>
            <size>27922</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYxMmMwNTBmYmYzMjY0
MGM5N2YyODIzZGZlZTQ1NThiNzgyNDg4Ny4uODQyNTA3YjNkMWFkMmQ2YWE0ZDVhZDM3ODk1Y2Y1
NzZmODMwZTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
On5BcnR3b3JrSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRh
dGE6OnNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3Jr
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3JrU3JjIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFnZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29y
azo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKTogQWRkIG1pc3NpbmcgbW92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3Bw
CmluZGV4IGY2ZmYzMWZiMDhkZDQ5ODFhM2JjZTkwMzkyYmRiZDJjZGE1ZmNkYjYuLjc2OTdmMTUx
MDY2MDM4MGFkM2RjMDVkNWIyOWU3MWUzZGNjM2NkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC0yOCwxMyAr
MjgsNDkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FydHdv
cmtJbWFnZUxvYWRlcjo6QXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zcmMoc3JjKQorICAgICwgbV9jYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworQXJ0d29ya0ltYWdlTG9hZGVyOjp+QXJ0
d29ya0ltYWdlTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VM
b2FkZXI6OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
bV9kb2N1bWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlv
bnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9jdW1lbnQuZG9jdW1lbnRVUkkoKSk7
CisgICAgbV9jYWNoZWRJbWFnZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CisKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJbWFnZSk7CisgICAgbV9j
YWxsYmFjayhtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpID8gbnVsbHB0ciA6
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworfQorCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRh
ZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0
YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzkxLDE0IEBA
IE1lZGlhTWV0YWRhdGE6On5NZWRpYU1ldGFkYXRhKCkgPSBkZWZhdWx0Owogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIG1f
c2Vzc2lvbiA9IG1ha2VXZWFrUHRyKHNlc3Npb24pOworICAgIHJlZnJlc2hBcnR3b3JrSW1hZ2Uo
KTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiB7CiAgICAg
bV9zZXNzaW9uLmNsZWFyKCk7CisgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICBt
X2FydHdvcmtJbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTEwMSwxMCArMTQwLDM2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjCiAgICAgfQogCiAgICAgbV9tZXRhZGF0YS5hcnR3b3JrID0gV1RGTW92ZShy
ZXNvbHZlZEFydHdvcmspOworCisgICAgcmVmcmVzaEFydHdvcmtJbWFnZSgpOworCiAgICAgbWV0
YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBNZWRpYU1ldGFkYXRh
OjpyZWZyZXNoQXJ0d29ya0ltYWdlKCkKK3sKKyAgICBjb25zdCBhdXRvJiBtZWRpYUltYWdlcyA9
IG1fbWV0YWRhdGEuYXJ0d29yazsKKyAgICBpZiAobWVkaWFJbWFnZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fYXJ0d29ya0xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Nlc3Npb24gfHwgIW1fc2Vzc2lvbi0+ZG9jdW1lbnQoKSB8fCBtZWRpYUlt
YWdlc1swXS5zcmMgPT0gbV9hcnR3b3JrSW1hZ2VTcmMpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGEgaGV1cmlzdGljIHRvIHJldHJpZXZlIHRoZSAiYmVzdCIgaW1h
Z2UuCisgICAgbV9hcnR3b3JrSW1hZ2VTcmMgPSBtZWRpYUltYWdlc1swXS5zcmM7CisgICAgbV9h
cnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCptX3Nlc3Npb24t
PmRvY3VtZW50KCksIG1fYXJ0d29ya0ltYWdlU3JjLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7Cisg
ICAgICAgIHNldEFydHdvcmtJbWFnZShpbWFnZSk7CisgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgp
OworICAgIH0pOworICAgIG1fYXJ0d29ya0xvYWRlci0+cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
K30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQor
eworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6
bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDMwZTA5
M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEuLjkyYzFhNmFlN2M3YmQxYjM4YmFm
MTJjOTliNTYyYWFkY2NiZDE0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTI3LDE4ICsyNyw0MyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0
YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSW1hZ2U7CiBz
dHJ1Y3QgTWVkaWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1l
dGFkYXRhSW5pdDsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyIGZpbmFsIDogcHVibGljIENh
Y2hlZEltYWdlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSW1hZ2UqKT4gQXJ0d29ya0ltYWdl
TG9hZGVyQ2FsbGJhY2s7CisgICAgV0VCQ09SRV9FWFBPUlQgQXJ0d29ya0ltYWdlTG9hZGVyKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIH5BcnR3b3JrSW1hZ2VMb2FkZXIoKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
KyAgICBjb25zdCBTdHJpbmcgbV9zcmM7CisgICAgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2sg
bV9jYWxsYmFjazsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNo
ZWRJbWFnZTsKK307CisKIGNsYXNzIE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRp
YU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRp
YU1ldGFkYXRhSW5pdD4mJik7CkBAIC01OSwxNCArODQsMjIgQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxNZWRpYUltYWdlPiYgYXJ0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEu
YXJ0d29yazsgfQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFydHdvcmsoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFZlY3RvcjxNZWRpYUltYWdlPiYmKTsKIAorICAgIGNvbnN0IFN0cmluZyYg
YXJ0d29ya1NyYygpIGNvbnN0IHsgcmV0dXJuIG1fYXJ0d29ya0ltYWdlU3JjOyB9CisgICAgUmVm
UHRyPEltYWdlPiBhcnR3b3JrSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtJbWFnZTsg
fQorCiAgICAgY29uc3QgTWVkaWFTZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhZGF0YTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKKyAg
ICB2b2lkIHNldEFydHdvcmtJbWFnZShJbWFnZSopOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVk
KCk7CisgICAgdm9pZCByZWZyZXNoQXJ0d29ya0ltYWdlKCk7CiAKICAgICBXZWFrUHRyPE1lZGlh
U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVy
OworICAgIFN0cmluZyBtX2FydHdvcmtJbWFnZVNyYzsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fYXJ0
d29ya0ltYWdlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggOTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYz
MWYyZWFiNDdhOWQzNjQ4ZC4uMzJiMDhlMWE3MWRlOTQzMGQxMjIwZTBiZTZhMjFjZDhlMmI1NzBh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lP
TikKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNZWRpYU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0xMjcsNyAr
MTI4LDcgQEAgdm9pZCBNZWRpYVNlc3Npb246OnNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9u
QWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2kKICAgICAgICAgfQogICAgICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRD
b21tYW5kKHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKICAg
ICB9Ci0gICAgCisKICAgICBhY3Rpb25IYW5kbGVyc1VwZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYg
KzE3NiwxMyBAQCBPcHRpb25hbDxkb3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9u
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjptYXgoMC4sIHN0ZDo6bWluKCptX2xhc3RSZXBvcnRl
ZFBvc2l0aW9uICsgZWxhcHNlZFRpbWUudmFsdWUoKSwgbV9wb3NpdGlvblN0YXRlLT5kdXJhdGlv
bikpOwogfQogCitEb2N1bWVudCogTWVkaWFTZXNzaW9uOjpkb2N1bWVudCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX25hdmlnYXRvciB8fCAhbV9uYXZpZ2F0b3ItPndpbmRvdygpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9uYXZpZ2F0b3ItPndpbmRvdygpLT5kb2N1bWVu
dCgpOworfQorCiB2b2lkIE1lZGlhU2Vzc2lvbjo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgK
aW5kZXggNGY0YmU0NzcyNjQ0MDg2Yjc3ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OS4uNzY3MmUzMmZj
NzA2ZTM3ODExNmQ1ZWY3MzU0MmIxZGNmM2ZhYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhTWV0
YWRhdGE7CiBjbGFzcyBOYXZpZ2F0b3I7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlv
blN0YXRlPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQ
b3NpdGlvbigpIGNvbnN0OwogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAg
CiAgICAgdm9pZCBtZXRhZGF0YVVwZGF0ZWQoKTsKIAogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNV
cGRhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApp
bmRleCAwNzNlNDYyYWE4MmYxNzM0YTExMGIwZDU5MWIwMGMyYjNiMDM3ZTA4Li5mN2JmMTRjYTJi
OTZmMmViMzhlZTdkZTJkMzFhYTMxYmU3MTlkNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIAogICAg
IGJvb2wgZGlzYWJsZWQgPSBwbGF5ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7
CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCBkaXNhYmxlZCwgIiBi
ZWNhdXNlIG1lZGlhIGVuZ2luZSBzYXlzIHNvIik7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJs
ZWQ7CiB9CiAKQEAgLTgxMiw3ICs4MTIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1l
ZGlhRW5naW5lVXBkYXRlZCgpCiAgICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQp
CiAgICAgICAgIGNsaWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwog
I2VuZGlmCi0gICAgCisKIH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXNldFBsYXli
YWNrU2Vzc2lvblN0YXRlKCkKQEAgLTEwODgsNyArMTA4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JB
Y3Rpb24oYWN0aW9uRGV0YWlscy5hY3Rpb24pKQogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVu
dChhY3Rpb25EZXRhaWxzKTsKICAgICBlbHNlCkBAIC0xMTEwLDExICsxMTEwLDE1IEBAIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygp
IGNvbnN0CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYXV0byogd2luZG93ID0gbV9l
bGVtZW50LmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRh
ID0gd2luZG93ID8gTmF2aWdhdG9yTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5u
YXZpZ2F0b3IoKSkubWV0YWRhdGEoKSA6IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Npb25NZXRhZGF0
YSkKLSAgICAgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRs
ZSgpLCBzZXNzaW9uTWV0YWRhdGEtPmFydGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCks
IG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJl
bnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVu
dGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9
OworICAgIGlmIChzZXNzaW9uTWV0YWRhdGEpIHsKKyAgICAgICAgT3B0aW9uYWw8Tm93UGxheWlu
Z0luZm9BcnR3b3JrPiBhcnR3b3JrOworICAgICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3
b3JrSW1hZ2UoKSkKKyAgICAgICAgICAgIGFydHdvcmsgPSBOb3dQbGF5aW5nSW5mb0FydHdvcmsg
eyBzZXNzaW9uTWV0YWRhdGEtPmFydHdvcmtTcmMoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3Jr
SW1hZ2UoKS0+bWltZVR5cGUoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0
YSgpIH07CisgICAgICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+
dGl0bGUoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1
bSgpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBj
dXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVl
SWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxp
dHksIFdURk1vdmUoYXJ0d29yaykgfTsKKyAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBOb3dQ
bGF5aW5nSW5mbyB7IG1fZWxlbWVudC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCks
IGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFT
ZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkgfTsKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQu
bWVkaWFTZXNzaW9uVGl0bGUoKSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVt
ZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUs
IHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIo
KSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCB7IH19Owog
fQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnVwZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQo
KQpAQCAtMTE5NCw3ICsxMTk4LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGNvbnN0IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24gZW51bWVyYXRpb25WYWwKICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5H
VEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1l
cmF0aW9uVmFsdWUpXTsKIH0KLSAgICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1M2JlZTVhMjZm
YTJiNGYyNjE1Y2MzOTZkZWY1ZTk1MjNlMzc2YmZlLi5jNzMxOWIxOTc0NmNkNDczNmNkOTc4NjA2
MDMxNzkxNDM5YzdkYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Np
b24uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiU3VjY2Vzc09yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1Bs
YXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oCmluZGV4IGJjNzE1ZWU4NDVlY2FiMDJmZDkxM2JmNGMxYTdhYTk5YTE4MGNkY2IuLjIwOTgz
YjVjMjE0NDYyOGVlNjNkNTg3ZGUxNzFmNTgxOTcxYTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMjYsMTAgKzI2LDU1IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBOb3dQbGF5aW5n
SW5mb0FydHdvcmsgeworICAgIFN0cmluZyBzcmM7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICp0aGlzICE9IG90aGVyOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNyYyAhPSBvdGhlci5zcmMgfHwgbWltZVR5cGUgIT0gb3RoZXIubWltZVR5cGU7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb3dQbGF5
aW5nSW5mb0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGlt
YWdlRGF0YTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5v
d1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgc3JjOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3JjKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGltYWdlRGF0YSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93UGxheWlu
Z0luZm9BcnR3b3JrIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZShp
bWFnZURhdGEpIH07Cit9CisKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRp
dGxlOwogICAgIFN0cmluZyBhcnRpc3Q7CkBAIC00MSw2ICs4Niw3IEBAIHN0cnVjdCBOb3dQbGF5
aW5nSW5mbyB7CiAgICAgTWVkaWFTZXNzaW9uSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOwog
ICAgIGJvb2wgaXNQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdD
b250cm9sc1Zpc2liaWxpdHkgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZv
QXJ0d29yaz4gYXJ0d29yazsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5n
SW5mbyYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNTMsMTAgKzk5LDExIEBAIHN0cnVjdCBOb3dQ
bGF5aW5nSW5mbyB7CiAgICAgICAgICAgICAmJiBzdXBwb3J0c1NlZWtpbmcgPT0gb3RoZXIuc3Vw
cG9ydHNTZWVraW5nCiAgICAgICAgICAgICAmJiB1bmlxdWVJZGVudGlmaWVyID09IG90aGVyLnVu
aXF1ZUlkZW50aWZpZXIKICAgICAgICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1BsYXlp
bmcKLSAgICAgICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0g
b3RoZXIuYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICAgICAgICAgICYm
IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxh
eWluZ0NvbnRyb2xzVmlzaWJpbGl0eQorICAgICAgICAgICAgJiYgYXJ0d29yayA9PSBvdGhlci5h
cnR3b3JrOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5m
byBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8m
IG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwog
ICAgIH0KQEAgLTY3LDcgKzExNCw3IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8
PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3Vy
cmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5
aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAgZW5jb2RlciA8
PCB0aXRsZSA8PCBhcnRpc3QgPDwgYWxidW0gPDwgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
IDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJ
ZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5IDw8IGFydHdvcms7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQpAQCAtMTEyLDcgKzE1OSwxMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3Zl
KHRpdGxlKSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vl
a2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5IH07CisgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3
b3JrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0d29yaykpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92
ZShhcnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRl
bnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCBX
VEZNb3ZlKGFydHdvcmspIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBjNzY1MjU5ZWMzMWY0NGRjMWQwYmFkYWYyY2RkZWI0
MTdlYzc5OWM3Li4xMTZhOTFlNmU3M2FjMTI5NmJiMDQwZGEwOTU4YzlhMmI3MmQ4ZWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJO
b3dQbGF5aW5nSW5mby5oIgogI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbXBv
cnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1w
b3J0ICJWUDlVdGlsaXRpZXNDb2NvYS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzA3LDYgKzMwOCwxMSBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUs
ICZub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KKyAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0
d29yaykgeworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNB
cnR3b3JrLmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgfQogCiAg
ICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0
aW9uKCkgJiYgIW5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0Vt
cHR5KCkpCiAgICAgICAgIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlh
UmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMzcxLDcgKzM3Nyw3IEBAIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAg
aWYgKG1fbm93UGxheWluZ0luZm8gIT0gbm93UGxheWluZ0luZm8pIHsKICAgICAgICAgbV9ub3dQ
bGF5aW5nSW5mbyA9IG5vd1BsYXlpbmdJbmZvOwogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bWVkaWFTdHJhdGVneSgpLnNldE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgKm5vd1BsYXlpbmdJbmZvKTsKLSAgICAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAidGl0bGUgPSBcIiIsIG5vd1BsYXlpbmdJbmZvLT50aXRsZSwgIlwiLCBp
c1BsYXlpbmcgPSAiLCBub3dQbGF5aW5nSW5mby0+aXNQbGF5aW5nLCAiLCBkdXJhdGlvbiA9ICIs
IG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlvbiwgIiwgbm93ID0gIiwgbm93UGxheWluZ0luZm8tPmN1
cnJlbnRUaW1lLCAiLCBpZCA9ICIsIG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyLnRv
VUludDY0KCksICIsIHJlZ2lzdGVyZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbik7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIi
LCBub3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0lu
Zm8tPmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24s
ICIsIG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQ
bGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0g
IiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sICIsIHNyYyA9IFwiIiwgbm93
UGxheWluZ0luZm8tPmFydHdvcmsgPyBub3dQbGF5aW5nSW5mby0+YXJ0d29yay0+c3JjIDogU3Ry
aW5nKCksICJcIiIpOwogICAgIH0KIAogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5n
QXBwbGljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NTBj
NWY2NWI3MzI0MTVlZDQ5MjZhZjc3NjMzMDM2ODhhMzdmMmJhLi43NjU1ZjBiYzQyNDY1MWJjNmM4
YmFmN2Y0ZDg0OGZiYzNhN2U4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xMjgsNiArMTI4LDcgQEAKICNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFL
ZXlzLmgiCisjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQ
cm92aWRlci5oIgpAQCAtNDg2LDYgKzQ4NywxMCBAQCBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RvcE9ic2VydmluZ1JlYWx0aW1lTWVkaWFT
b3VyY2UoKTsKICNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQorICAgIGlmIChtX2Fy
dHdvcmtJbWFnZVByb21pc2UpCisgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgSW50
ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC01MjUyLDcgKzUy
NTcsNyBAQCB2b2lkIEludGVybmFsczo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2spCiAKIHZvaWQgSW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJh
Y2tGcmFtZShUcmFja0ZyYW1lUHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgbV9uZXh0VHJhY2tG
cmFtZVByb21pc2UgPSBXVEY6Om1ha2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KHByb21pc2Up
OworICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPFRyYWNrRnJh
bWVQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCkBAIC02MDgxLDYgKzYwODYsMjgg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1l
ZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICB9CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0lt
YWdlKFN0cmluZyYmIHVybCwgQXJ0d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAg
aWYgKCFjb250ZXh0RG9jdW1lbnQoKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIGRvY3VtZW50LiIgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPEFy
dHdvcmtJbWFnZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fYXJ0d29ya0xvYWRl
ciA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVy
bCwgW3RoaXNdKEltYWdlKiBpbWFnZSkgeworICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAg
ICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndp
ZHRoKCkpLCB1bnNpZ25lZChpbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGlmICghaW1h
Z2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJv
bWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3Qo
aW1hZ2VEYXRhLmV4Y2VwdGlvbigpLmNvZGUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vz
c0Vycm9yLCAiTm8gaW1hZ2UgcmV0cmlldmUuIiAgfSk7CisgICAgICAgIG1fYXJ0d29ya0ltYWdl
UHJvbWlzZSA9IG51bGxwdHI7CisgICAgfSk7CisgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1ZXN0
SW1hZ2VSZXNvdXJjZSgpOworfQorCiAjZW5kaWYKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBz
dHJpbmcoUGFydGlhbE9yZGVyaW5nIG9yZGVyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggYzI4MmMzNDE1Yzc4OTg2NzJiMmFjYmVjNzdhMzdmNDcxYTU0ODExOC4uNjBlY2M0
ODhiNDMyMDc3ZWIyZTM2MTJjMDZmYjRlOThkYTZhZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWJzdHJhY3RSYW5nZTsKIGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lOworY2xhc3MgQXJ0d29ya0lt
YWdlTG9hZGVyOwogY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNz
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb247CkBAIC0xMDkyLDYgKzEwOTMsOCBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBjdXJyZW50
TWVkaWFTZXNzaW9uUG9zaXRpb24oY29uc3QgTWVkaWFTZXNzaW9uJik7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24mLCBjb25zdCBNZWRp
YVNlc3Npb25BY3Rpb25EZXRhaWxzJik7CisgICAgdXNpbmcgQXJ0d29ya0ltYWdlUHJvbWlzZSA9
IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdm9pZCBs
b2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmLCBBcnR3b3JrSW1hZ2VQcm9taXNlJiYpOwogI2VuZGlm
CiAKICAgICBlbnVtIFRyZWVUeXBlIDogdWludDhfdCB7IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1Ry
ZWUsIENvbXBvc2VkVHJlZSB9OwpAQCAtMTEyNSw3ICsxMTI4LDEwIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IG1fdHJhY2tTb3VyY2U7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRyYWNrRnJhbWVQcm9taXNlPiBtX25leHRUcmFja0ZyYW1lUHJvbWlzZTsKICNlbmRp
ZgotCisjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPEFydHdv
cmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnR3
b3JrSW1hZ2VQcm9taXNlPiBtX2FydHdvcmtJbWFnZVByb21pc2U7CisjZW5kaWYKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwog
ICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rp
b247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA4OWNlMTJkMGMzNWEy
YWUzMzNhYTQxYmQ5YjJlNzVkZDY4MTFjYmJhLi5mNjk3MjUyOWI5ZDI2MDY2MDY5ODUxYzI1MDQ5
ZmNmMGZhMDA0MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05ODks
NyArOTg5LDggQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VT
U0lPTiwgTWF5VGhyb3dFeGNlcHRpb25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRp
b24oTWVkaWFTZXNzaW9uIHNlc3Npb24pOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9O
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVk
aWFTZXNzaW9uIHNlc3Npb24sIE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWls
cyk7Ci0KKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTl0gUHJvbWlzZTxJbWFnZURhdGE+
IGxvYWRBcnR3b3JrSW1hZ2UoRE9NU3RyaW5nIHVybCk7CisgICAgCiAgICAgRE9NU3RyaW5nIHRy
ZWVPcmRlcihOb2RlIGEsIE5vZGUgYiwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7
CiAgICAgRE9NU3RyaW5nIHRyZWVPcmRlckJvdW5kYXJ5UG9pbnRzKE5vZGUgY29udGFpbmVyQSwg
dW5zaWduZWQgbG9uZyBvZmZzZXRBLCBOb2RlIGNvbnRhaW5lckIsIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0Qiwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgYm9vbGVhbiByYW5n
ZUNvbnRhaW5zTm9kZShBYnN0cmFjdFJhbmdlIHJhbmdlLCBOb2RlIG5vZGUsIG9wdGlvbmFsIFRy
ZWVUeXBlIHRyZWUgPSAiVHJlZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmOGE5ZTBmNmQ2YWM2YzhlOGMwMDU1MWRi
ZDYzYmJjMDU5MDdjMDIuLjYxMjVmNTMzNDA1ZjhiNWMxODk2NGZmZTk2OTQ3YzUyYWQwYTlmYTYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIFNob3cgbWVkaWEgc2Vzc2lvbiBpbWFnZSBhcnR3b3Jr
IGluIE5vdyBQbGF5aW5nIGluZm9ybWF0aW9uIHBhbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc1MzYwMTY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29y
a2Rvd25sb2FkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2
aWNlIHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0
YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzg0M2JkNzBkYzBkZDdhNTEwZDljZjQyOWQ0OGUzYjA3YmYzNGEwNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3du
bG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgZW5zdXJlIGxvYWRpbmcg
YXJ0d29yayBpbWFnZSBtZXRob2Qgb3BlcmF0ZXMgcHJvcGVybHkgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgMTggYnV0IGdvdCAxNgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNi
YzllN2JiNTQ4ZDhhNmVkNTU5ZGQ5NDI3ODViZTJjNDE4NmNiNzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQu
aHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorCitjb25zdCBJTUFHRV9TUkMgPSAnLi4vLi4vaW1hZ2VzL3Jl
c291cmNlcy90ZXN0LWxvYWQuanBnJzsKKworcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAg
aWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVz
b2x2ZSgpOworICAgIGVsc2UgeworICAgICAgICB2YXIgcHJvbWlzZSA9IGludGVybmFscy5sb2Fk
QXJ0d29ya0ltYWdlKElNQUdFX1NSQykudGhlbigoZGF0YSkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkYXRhLndpZHRoLCAxNik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRh
dGEuaGVpZ2h0LCAxNik7CisgICAgICAgIH0pOzsKKyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7
Cit9LCAiZW5zdXJlIGxvYWRpbmcgYXJ0d29yayBpbWFnZSBtZXRob2Qgb3BlcmF0ZXMgcHJvcGVy
bHkiKTsKKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423171</attachid>
            <date>2021-03-15 06:35:30 -0700</date>
            <delta_ts>2021-03-15 15:47:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210316003528.patch</filename>
            <type>text/plain</type>
            <size>28129</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYxMmMwNTBmYmYzMjY0
MGM5N2YyODIzZGZlZTQ1NThiNzgyNDg4Ny4uODQyNTA3YjNkMWFkMmQ2YWE0ZDVhZDM3ODk1Y2Y1
NzZmODMwZTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
On5BcnR3b3JrSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRh
dGE6OnNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3Jr
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3JrU3JjIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFnZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29y
azo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKTogQWRkIG1pc3NpbmcgbW92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3Bw
CmluZGV4IGY2ZmYzMWZiMDhkZDQ5ODFhM2JjZTkwMzkyYmRiZDJjZGE1ZmNkYjYuLjc2OTdmMTUx
MDY2MDM4MGFkM2RjMDVkNWIyOWU3MWUzZGNjM2NkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC0yOCwxMyAr
MjgsNDkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FydHdv
cmtJbWFnZUxvYWRlcjo6QXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zcmMoc3JjKQorICAgICwgbV9jYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworQXJ0d29ya0ltYWdlTG9hZGVyOjp+QXJ0
d29ya0ltYWdlTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VM
b2FkZXI6OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
bV9kb2N1bWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlv
bnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9jdW1lbnQuZG9jdW1lbnRVUkkoKSk7
CisgICAgbV9jYWNoZWRJbWFnZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CisKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJbWFnZSk7CisgICAgbV9j
YWxsYmFjayhtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpID8gbnVsbHB0ciA6
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworfQorCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRh
ZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0
YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzkxLDE0IEBA
IE1lZGlhTWV0YWRhdGE6On5NZWRpYU1ldGFkYXRhKCkgPSBkZWZhdWx0Owogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIG1f
c2Vzc2lvbiA9IG1ha2VXZWFrUHRyKHNlc3Npb24pOworICAgIHJlZnJlc2hBcnR3b3JrSW1hZ2Uo
KTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiB7CiAgICAg
bV9zZXNzaW9uLmNsZWFyKCk7CisgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICBt
X2FydHdvcmtJbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTEwMSwxMCArMTQwLDM2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjCiAgICAgfQogCiAgICAgbV9tZXRhZGF0YS5hcnR3b3JrID0gV1RGTW92ZShy
ZXNvbHZlZEFydHdvcmspOworCisgICAgcmVmcmVzaEFydHdvcmtJbWFnZSgpOworCiAgICAgbWV0
YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBNZWRpYU1ldGFkYXRh
OjpyZWZyZXNoQXJ0d29ya0ltYWdlKCkKK3sKKyAgICBjb25zdCBhdXRvJiBtZWRpYUltYWdlcyA9
IG1fbWV0YWRhdGEuYXJ0d29yazsKKyAgICBpZiAobWVkaWFJbWFnZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fYXJ0d29ya0xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Nlc3Npb24gfHwgIW1fc2Vzc2lvbi0+ZG9jdW1lbnQoKSB8fCBtZWRpYUlt
YWdlc1swXS5zcmMgPT0gbV9hcnR3b3JrSW1hZ2VTcmMpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGEgaGV1cmlzdGljIHRvIHJldHJpZXZlIHRoZSAiYmVzdCIgaW1h
Z2UuCisgICAgbV9hcnR3b3JrSW1hZ2VTcmMgPSBtZWRpYUltYWdlc1swXS5zcmM7CisgICAgbV9h
cnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCptX3Nlc3Npb24t
PmRvY3VtZW50KCksIG1fYXJ0d29ya0ltYWdlU3JjLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7Cisg
ICAgICAgIHNldEFydHdvcmtJbWFnZShpbWFnZSk7CisgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgp
OworICAgIH0pOworICAgIG1fYXJ0d29ya0xvYWRlci0+cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
K30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQor
eworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6
bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDMwZTA5
M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEuLmI1ZmJiYjQyOTMyNmQwMWJiMzU0
YTZhNmEyOWYyOWZkMDY1ZWJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTI3LDE4ICsyNyw0NSBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0
YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZWRJbWFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSW1hZ2U7CiBzdHJ1Y3QgTWVk
aWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5p
dDsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyIGZpbmFsIDogcHVibGljIENhY2hlZEltYWdl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFdURjo6RnVuY3Rpb248dm9pZChJbWFnZSopPiBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxsYmFj
azsKKyAgICAvLyBUaGUgY2FsbGJhY2sgd2lsbCBvbmx5IGJlIGNhbGxlZCB1cG9uIHN1Y2Nlc3Mg
b3IgZXhwbGljaXQgZmFpbHVyZSB0byByZXRyaWV2ZSB0aGUgaW1hZ2UuIElmIHRoZSBvcGVyYXRp
b24gaXMgaW50ZXJydXB0ZWQgZm9sbG93aW5nIHRoZQorICAgIC8vIGRlc3RydWN0aW9uIG9mIHRo
ZSBBcnR3b3JrSW1hZ2VMb2FkZXIsIHRoZSBjYWxsYmFjayB3b24ndCBiZSBjYWxsZWQuCisgICAg
V0VCQ09SRV9FWFBPUlQgQXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5BcnR3b3JrSW1hZ2VMb2FkZXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVz
dEltYWdlUmVzb3VyY2UoKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBTdHJpbmcgbV9z
cmM7CisgICAgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKK307CisKIGNsYXNz
IE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CkBA
IC01OSwxNCArODYsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUltYWdlPiYg
YXJ0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29yazsgfQogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxN
ZWRpYUltYWdlPiYmKTsKIAorICAgIGNvbnN0IFN0cmluZyYgYXJ0d29ya1NyYygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJ0d29ya0ltYWdlU3JjOyB9CisgICAgUmVmUHRyPEltYWdlPiBhcnR3b3JrSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtJbWFnZTsgfQorCiAgICAgY29uc3QgTWVkaWFT
ZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
CiBwcml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKKyAgICB2b2lkIHNldEFydHdvcmtJbWFn
ZShJbWFnZSopOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CisgICAgdm9pZCByZWZyZXNo
QXJ0d29ya0ltYWdlKCk7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwog
ICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVyOworICAgIFN0cmluZyBtX2FydHdv
cmtJbWFnZVNyYzsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fYXJ0d29ya0ltYWdlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggOTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYzMWYyZWFiNDdhOWQzNjQ4ZC4uMzJi
MDhlMWE3MWRlOTQzMGQxMjIwZTBiZTZhMjFjZDhlMmI1NzBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBNZWRpYVNl
c3Npb246OnNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRy
PE1lZGlhU2Vzc2kKICAgICAgICAgfQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFu
ZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKICAgICB9Ci0gICAgCisKICAgICBhY3Rp
b25IYW5kbGVyc1VwZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYgKzE3NiwxMyBAQCBPcHRpb25hbDxk
b3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjptYXgoMC4sIHN0ZDo6bWluKCptX2xhc3RSZXBvcnRlZFBvc2l0aW9uICsgZWxhcHNlZFRp
bWUudmFsdWUoKSwgbV9wb3NpdGlvblN0YXRlLT5kdXJhdGlvbikpOwogfQogCitEb2N1bWVudCog
TWVkaWFTZXNzaW9uOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hdmlnYXRvciB8
fCAhbV9uYXZpZ2F0b3ItPndpbmRvdygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9uYXZpZ2F0b3ItPndpbmRvdygpLT5kb2N1bWVudCgpOworfQorCiB2b2lkIE1lZGlh
U2Vzc2lvbjo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNGY0YmU0NzcyNjQ0MDg2
Yjc3ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OS4uNzY3MmUzMmZjNzA2ZTM3ODExNmQ1ZWY3MzU0MmIx
ZGNmM2ZhYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0
b3I7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgCiAgICAgdm9pZCBtZXRhZGF0YVVw
ZGF0ZWQoKTsKIAogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNVcGRhdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwNzNlNDYyYWE4MmYxNzM0
YTExMGIwZDU5MWIwMGMyYjNiMDM3ZTA4Li5mN2JmMTRjYTJiOTZmMmViMzhlZTdkZTJkMzFhYTMx
YmU3MTlkNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIAogICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5
ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJldHVybmluZyAiLCBkaXNhYmxlZCwgIiBiZWNhdXNlIG1lZGlhIGVuZ2luZSBz
YXlzIHNvIik7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJsZWQ7CiB9CiAKQEAgLTgxMiw3ICs4
MTIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCgpCiAg
ICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwogI2VuZGlmCi0gICAgCisKIH0KIAog
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKQEAg
LTEwODgsNyArMTA4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYg
KGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5h
Y3Rpb24pKQogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKICAg
ICBlbHNlCkBAIC0xMTEwLDExICsxMTEwLDE1IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCiAgICAgYXV0byogd2luZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9t
V2luZG93KCk7CiAgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRhID0gd2luZG93ID8gTmF2aWdhdG9y
TWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZpZ2F0b3IoKSkubWV0YWRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Npb25NZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIE5v
d1BsYXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpLCBzZXNzaW9uTWV0YWRhdGEt
PmFydGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCksIG1fZWxlbWVudC5zb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtp
bmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIGlmIChzZXNzaW9uTWV0
YWRhdGEpIHsKKyAgICAgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3Jr
OworICAgICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKSkKKyAgICAgICAg
ICAgIGFydHdvcmsgPSBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9uTWV0YWRhdGEtPmFy
dHdvcmtTcmMoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+bWltZVR5cGUoKSwg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CisgICAgICAgIHJldHVy
biBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+dGl0bGUoKSwgc2Vzc2lvbk1ldGFk
YXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpLCBtX2VsZW1lbnQuc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNT
ZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlp
bmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHksIFdURk1vdmUoYXJ0d29yaykg
fTsKKyAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVu
dC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBtX2Vs
ZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGlt
ZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmll
cigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAg
ICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9l
bGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCB7IH19OwogfQogCiB2b2lkIE1lZGlhRWxlbWVu
dFNlc3Npb246OnVwZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQoKQpAQCAtMTE5NCw3ICsxMTk4LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbnN0IE1lZGlhUGxheWJhY2tE
ZW5pYWxSZWFzb24gZW51bWVyYXRpb25WYWwKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0
dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KLSAg
ICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1M2JlZTVhMjZmYTJiNGYyNjE1Y2MzOTZkZWY1ZTk1
MjNlMzc2YmZlLi5jNzMxOWIxOTc0NmNkNDczNmNkOTc4NjA2MDMxNzkxNDM5YzdkYzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09y
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IGJjNzE1ZWU4NDVl
Y2FiMDJmZDkxM2JmNGMxYTdhYTk5YTE4MGNkY2IuLjIwOTgzYjVjMjE0NDYyOGVlNjNkNTg3ZGUx
NzFmNTgxOTcxYTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaApAQCAtMjYsMTAgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeworICAgIFN0
cmluZyBzcmM7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0Fy
dHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICE9IG90aGVy
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdv
cmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNyYyAhPSBvdGhlci5zcmMg
fHwgbWltZVR5cGUgIT0gb3RoZXIubWltZVR5cGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBO
b3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGltYWdlRGF0YTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBT
dHJpbmcgc3JjOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3JjKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm9BcnR3b3JrIHsgV1RGTW92
ZShzcmMpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZShpbWFnZURhdGEpIH07Cit9CisKIHN0
cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyBhcnRp
c3Q7CkBAIC00MSw2ICs4Niw3IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgTWVkaWFT
ZXNzaW9uSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOwogICAgIGJvb2wgaXNQbGF5aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtNTMsMTAgKzk5LDExIEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgICAg
ICAgICAmJiBzdXBwb3J0c1NlZWtpbmcgPT0gb3RoZXIuc3VwcG9ydHNTZWVraW5nCiAgICAgICAg
ICAgICAmJiB1bmlxdWVJZGVudGlmaWVyID09IG90aGVyLnVuaXF1ZUlkZW50aWZpZXIKICAgICAg
ICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1BsYXlpbmcKLSAgICAgICAgICAgICYmIGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICAgICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eQorICAgICAgICAgICAgJiYgYXJ0d29yayA9PSBvdGhlci5hcnR3b3JrOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mbyBvdGhlcikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KQEAgLTY3LDcgKzExNCw3
IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlu
bGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNT
ZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwg
YWxidW0gPDwgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJl
bnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWlu
ZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IDw8IGFydHdvcms7CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
Tm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTEyLDcgKzE1OSwx
MSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRp
c3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIp
LCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmll
ciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3JrOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXJ0d29yaykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93
UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFs
YnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3Vy
cmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCBXVEZNb3ZlKGFydHdvcmspIH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpp
bmRleCBjNzY1MjU5ZWMzMWY0NGRjMWQwYmFkYWYyY2RkZWI0MTdlYzc5OWM3Li4xMTZhOTFlNmU3
M2FjMTI5NmJiMDQwZGEwOTU4YzlhMmI3MmQ4ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOb3dQbGF5aW5nSW5mby5oIgogI2lt
cG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJWUDlVdGlsaXRpZXNDb2Nv
YS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgpAQCAtMzA3LDYgKzMwOCwxMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgog
ICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJy
ZW50VGltZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkp
OwogICAgIH0KKyAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yaykgeworICAgICAgICBhdXRv
IG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKKyAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgfQogCiAgICAgaWYgKGNhbkxvYWRfTWVkaWFS
ZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJ
bmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIE1STWVk
aWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4o
KSwgbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpAQCAtMzcxLDcgKzM3Nyw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgaWYgKG1fbm93UGxheWluZ0luZm8g
IT0gbm93UGxheWluZ0luZm8pIHsKICAgICAgICAgbV9ub3dQbGF5aW5nSW5mbyA9IG5vd1BsYXlp
bmdJbmZvOwogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNl
dE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5v
d1BsYXlpbmdJbmZvKTsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUg
PSBcIiIsIG5vd1BsYXlpbmdJbmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAiLCBub3dQbGF5
aW5nSW5mby0+aXNQbGF5aW5nLCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJbmZvLT5kdXJh
dGlvbiwgIiwgbm93ID0gIiwgbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAiLCBpZCA9ICIs
IG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyLnRvVUludDY0KCksICIsIHJlZ2lzdGVy
ZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbik7CisgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0
bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVy
YXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlp
bmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sICIsIHNyYyA9IFwiIiwgbm93UGxheWluZ0luZm8tPmFydHdvcmsg
PyBub3dQbGF5aW5nSW5mby0+YXJ0d29yay0+c3JjIDogU3RyaW5nKCksICJcIiIpOwogICAgIH0K
IAogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NTBjNWY2NWI3MzI0MTVlZDQ5MjZhZjc3
NjMzMDM2ODhhMzdmMmJhLi43NjU1ZjBiYzQyNDY1MWJjNmM4YmFmN2Y0ZDg0OGZiYzNhN2U4ZTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAK
ICNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAi
TWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5jbHVkZSAiTWVk
aWFNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
cm9kdWNlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpAQCAtNDg2LDYg
KzQ4NywxMCBAQCBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgc3RvcE9ic2VydmluZ1JlYWx0aW1lTWVkaWFTb3VyY2UoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQorICAgIGlmIChtX2FydHdvcmtJbWFnZVByb21pc2UpCisg
ICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC01MjUyLDcgKzUyNTcsNyBAQCB2b2lkIEludGVybmFs
czo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiAKIHZv
aWQgSW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJv
bWlzZSYmIHByb21pc2UpCiB7Ci0gICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UgPSBXVEY6Om1h
a2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KHByb21pc2UpOworICAgIG1fbmV4dFRyYWNrRnJh
bWVQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPFRyYWNrRnJhbWVQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCkBAIC02MDgxLDYgKzYwODYsMjggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QKICAgICB9CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0
d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQo
KSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk5vIGRvY3VtZW50LiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9hcnR3
b3JrSW1hZ2VQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPEFydHdvcmtJbWFnZVByb21pc2U+KFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fYXJ0d29ya0xvYWRlciA9IG1ha2VVbmlxdWU8QXJ0d29y
a0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVybCwgW3RoaXNdKEltYWdlKiBpbWFn
ZSkgeworICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
SW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndpZHRoKCkpLCB1bnNpZ25lZChpbWFn
ZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURh
dGEucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlvbigp
LmNvZGUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2UgcmV0
cmlldmUuIiAgfSk7CisgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG51bGxwdHI7Cisg
ICAgfSk7CisgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOworfQor
CiAjZW5kaWYKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlhbE9yZGVyaW5n
IG9yZGVyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzI4MmMzNDE1Yzc4
OTg2NzJiMmFjYmVjNzdhMzdmNDcxYTU0ODExOC4uNjBlY2M0ODhiNDMyMDc3ZWIyZTM2MTJjMDZm
YjRlOThkYTZhZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RSYW5nZTsKIGNsYXNz
IEFuaW1hdGlvblRpbWVsaW5lOworY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyOwogY2xhc3MgQXVk
aW9Db250ZXh0OwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b247CkBAIC0xMDkyLDYgKzEwOTMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24o
Y29uc3QgTWVkaWFTZXNzaW9uJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZE1lZGlhU2Vz
c2lvbkFjdGlvbihNZWRpYVNlc3Npb24mLCBjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxz
Jik7CisgICAgdXNpbmcgQXJ0d29ya0ltYWdlUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdm9pZCBsb2FkQXJ0d29ya0ltYWdlKFN0cmlu
ZyYmLCBBcnR3b3JrSW1hZ2VQcm9taXNlJiYpOwogI2VuZGlmCiAKICAgICBlbnVtIFRyZWVUeXBl
IDogdWludDhfdCB7IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1RyZWUsIENvbXBvc2VkVHJlZSB9OwpA
QCAtMTEyNSw3ICsxMTI4LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IG1fdHJhY2tTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRyYWNrRnJhbWVQcm9t
aXNlPiBtX25leHRUcmFja0ZyYW1lUHJvbWlzZTsKICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3
b3JrTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnR3b3JrSW1hZ2VQcm9taXNlPiBtX2Fy
dHdvcmtJbWFnZVByb21pc2U7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
U3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwogICAgIFJlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA4OWNlMTJkMGMzNWEyYWUzMzNhYTQxYmQ5YjJlNzVkZDY4
MTFjYmJhLi5mNjk3MjUyOWI5ZDI2MDY2MDY5ODUxYzI1MDQ5ZmNmMGZhMDA0MjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05ODksNyArOTg5LDggQEAgZW51bSBUcmVl
VHlwZSB7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwgTWF5VGhyb3dFeGNlcHRp
b25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24oTWVkaWFTZXNzaW9uIHNlc3Np
b24pOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uIHNlc3Npb24sIE1l
ZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWlscyk7Ci0KKyAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl0gUHJvbWlzZTxJbWFnZURhdGE+IGxvYWRBcnR3b3JrSW1hZ2UoRE9N
U3RyaW5nIHVybCk7CisgICAgCiAgICAgRE9NU3RyaW5nIHRyZWVPcmRlcihOb2RlIGEsIE5vZGUg
Yiwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgRE9NU3RyaW5nIHRyZWVP
cmRlckJvdW5kYXJ5UG9pbnRzKE5vZGUgY29udGFpbmVyQSwgdW5zaWduZWQgbG9uZyBvZmZzZXRB
LCBOb2RlIGNvbnRhaW5lckIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Qiwgb3B0aW9uYWwgVHJlZVR5
cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgYm9vbGVhbiByYW5nZUNvbnRhaW5zTm9kZShBYnN0cmFj
dFJhbmdlIHJhbmdlLCBOb2RlIG5vZGUsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDdmOGE5ZTBmNmQ2YWM2YzhlOGMwMDU1MWRiZDYzYmJjMDU5MDdjMDIuLjYxMjVm
NTMzNDA1ZjhiNWMxODk2NGZmZTk2OTQ3YzUyYWQwYTlmYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wMy0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgbWVkaWEgc2Vzc2lvbiBpbWFnZSBhcnR3b3JrIGluIE5vdyBQbGF5aW5nIGluZm9y
bWF0aW9uIHBhbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMxMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzYwMTY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXNlc3Np
b24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUHJldmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2Fk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2Fy
dHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg0M2JkNzBkYzBkZDdhNTEw
ZDljZjQyOWQ0OGUzYjA3YmYzNGEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACisKK0ZBSUwgZW5zdXJlIGxvYWRpbmcgYXJ0d29yayBpbWFnZSBtZXRob2Qg
b3BlcmF0ZXMgcHJvcGVybHkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTggYnV0IGdvdCAxNgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3
b3JrZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRh
L2FydHdvcmtkb3dubG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYzllN2JiNTQ4ZDhhNmVkNTU5ZGQ5
NDI3ODViZTJjNDE4NmNiNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDI0IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
Citjb25zdCBJTUFHRV9TUkMgPSAnLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy90ZXN0LWxvYWQuanBn
JzsKKworcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIGVsc2Ugewor
ICAgICAgICB2YXIgcHJvbWlzZSA9IGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKElNQUdFX1NS
QykudGhlbigoZGF0YSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkYXRhLndpZHRo
LCAxNik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRhdGEuaGVpZ2h0LCAxNik7CisgICAg
ICAgIH0pOzsKKyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7Cit9LCAiZW5zdXJlIGxvYWRpbmcg
YXJ0d29yayBpbWFnZSBtZXRob2Qgb3BlcmF0ZXMgcHJvcGVybHkiKTsKKworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423256</attachid>
            <date>2021-03-15 15:47:44 -0700</date>
            <delta_ts>2021-03-15 17:51:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210316094743.patch</filename>
            <type>text/plain</type>
            <size>28129</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYxMmMwNTBmYmYzMjY0
MGM5N2YyODIzZGZlZTQ1NThiNzgyNDg4Ny4uODQyNTA3YjNkMWFkMmQ2YWE0ZDVhZDM3ODk1Y2Y1
NzZmODMwZTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
On5BcnR3b3JrSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRh
dGE6OnNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3Jr
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3JrU3JjIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFnZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29y
azo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKTogQWRkIG1pc3NpbmcgbW92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3Bw
CmluZGV4IGY2ZmYzMWZiMDhkZDQ5ODFhM2JjZTkwMzkyYmRiZDJjZGE1ZmNkYjYuLjc2OTdmMTUx
MDY2MDM4MGFkM2RjMDVkNWIyOWU3MWUzZGNjM2NkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC0yOCwxMyAr
MjgsNDkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FydHdv
cmtJbWFnZUxvYWRlcjo6QXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zcmMoc3JjKQorICAgICwgbV9jYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworQXJ0d29ya0ltYWdlTG9hZGVyOjp+QXJ0
d29ya0ltYWdlTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VM
b2FkZXI6OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
bV9kb2N1bWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlv
bnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9jdW1lbnQuZG9jdW1lbnRVUkkoKSk7
CisgICAgbV9jYWNoZWRJbWFnZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CisKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJbWFnZSk7CisgICAgbV9j
YWxsYmFjayhtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpID8gbnVsbHB0ciA6
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworfQorCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRh
ZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0
YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzkxLDE0IEBA
IE1lZGlhTWV0YWRhdGE6On5NZWRpYU1ldGFkYXRhKCkgPSBkZWZhdWx0Owogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIG1f
c2Vzc2lvbiA9IG1ha2VXZWFrUHRyKHNlc3Npb24pOworICAgIHJlZnJlc2hBcnR3b3JrSW1hZ2Uo
KTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiB7CiAgICAg
bV9zZXNzaW9uLmNsZWFyKCk7CisgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICBt
X2FydHdvcmtJbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTEwMSwxMCArMTQwLDM2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjCiAgICAgfQogCiAgICAgbV9tZXRhZGF0YS5hcnR3b3JrID0gV1RGTW92ZShy
ZXNvbHZlZEFydHdvcmspOworCisgICAgcmVmcmVzaEFydHdvcmtJbWFnZSgpOworCiAgICAgbWV0
YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBNZWRpYU1ldGFkYXRh
OjpyZWZyZXNoQXJ0d29ya0ltYWdlKCkKK3sKKyAgICBjb25zdCBhdXRvJiBtZWRpYUltYWdlcyA9
IG1fbWV0YWRhdGEuYXJ0d29yazsKKyAgICBpZiAobWVkaWFJbWFnZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fYXJ0d29ya0xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Nlc3Npb24gfHwgIW1fc2Vzc2lvbi0+ZG9jdW1lbnQoKSB8fCBtZWRpYUlt
YWdlc1swXS5zcmMgPT0gbV9hcnR3b3JrSW1hZ2VTcmMpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGEgaGV1cmlzdGljIHRvIHJldHJpZXZlIHRoZSAiYmVzdCIgaW1h
Z2UuCisgICAgbV9hcnR3b3JrSW1hZ2VTcmMgPSBtZWRpYUltYWdlc1swXS5zcmM7CisgICAgbV9h
cnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCptX3Nlc3Npb24t
PmRvY3VtZW50KCksIG1fYXJ0d29ya0ltYWdlU3JjLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7Cisg
ICAgICAgIHNldEFydHdvcmtJbWFnZShpbWFnZSk7CisgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgp
OworICAgIH0pOworICAgIG1fYXJ0d29ya0xvYWRlci0+cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
K30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQor
eworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6
bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDMwZTA5
M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEuLmI1ZmJiYjQyOTMyNmQwMWJiMzU0
YTZhNmEyOWYyOWZkMDY1ZWJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTI3LDE4ICsyNyw0NSBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0
YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZWRJbWFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSW1hZ2U7CiBzdHJ1Y3QgTWVk
aWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5p
dDsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyIGZpbmFsIDogcHVibGljIENhY2hlZEltYWdl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFdURjo6RnVuY3Rpb248dm9pZChJbWFnZSopPiBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxsYmFj
azsKKyAgICAvLyBUaGUgY2FsbGJhY2sgd2lsbCBvbmx5IGJlIGNhbGxlZCB1cG9uIHN1Y2Nlc3Mg
b3IgZXhwbGljaXQgZmFpbHVyZSB0byByZXRyaWV2ZSB0aGUgaW1hZ2UuIElmIHRoZSBvcGVyYXRp
b24gaXMgaW50ZXJydXB0ZWQgZm9sbG93aW5nIHRoZQorICAgIC8vIGRlc3RydWN0aW9uIG9mIHRo
ZSBBcnR3b3JrSW1hZ2VMb2FkZXIsIHRoZSBjYWxsYmFjayB3b24ndCBiZSBjYWxsZWQuCisgICAg
V0VCQ09SRV9FWFBPUlQgQXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5BcnR3b3JrSW1hZ2VMb2FkZXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVz
dEltYWdlUmVzb3VyY2UoKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBTdHJpbmcgbV9z
cmM7CisgICAgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKK307CisKIGNsYXNz
IE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CkBA
IC01OSwxNCArODYsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUltYWdlPiYg
YXJ0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29yazsgfQogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxN
ZWRpYUltYWdlPiYmKTsKIAorICAgIGNvbnN0IFN0cmluZyYgYXJ0d29ya1NyYygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJ0d29ya0ltYWdlU3JjOyB9CisgICAgUmVmUHRyPEltYWdlPiBhcnR3b3JrSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtJbWFnZTsgfQorCiAgICAgY29uc3QgTWVkaWFT
ZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
CiBwcml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKKyAgICB2b2lkIHNldEFydHdvcmtJbWFn
ZShJbWFnZSopOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CisgICAgdm9pZCByZWZyZXNo
QXJ0d29ya0ltYWdlKCk7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwog
ICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVyOworICAgIFN0cmluZyBtX2FydHdv
cmtJbWFnZVNyYzsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fYXJ0d29ya0ltYWdlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggOTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYzMWYyZWFiNDdhOWQzNjQ4ZC4uMzJi
MDhlMWE3MWRlOTQzMGQxMjIwZTBiZTZhMjFjZDhlMmI1NzBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBNZWRpYVNl
c3Npb246OnNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRy
PE1lZGlhU2Vzc2kKICAgICAgICAgfQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFu
ZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKICAgICB9Ci0gICAgCisKICAgICBhY3Rp
b25IYW5kbGVyc1VwZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYgKzE3NiwxMyBAQCBPcHRpb25hbDxk
b3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjptYXgoMC4sIHN0ZDo6bWluKCptX2xhc3RSZXBvcnRlZFBvc2l0aW9uICsgZWxhcHNlZFRp
bWUudmFsdWUoKSwgbV9wb3NpdGlvblN0YXRlLT5kdXJhdGlvbikpOwogfQogCitEb2N1bWVudCog
TWVkaWFTZXNzaW9uOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hdmlnYXRvciB8
fCAhbV9uYXZpZ2F0b3ItPndpbmRvdygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9uYXZpZ2F0b3ItPndpbmRvdygpLT5kb2N1bWVudCgpOworfQorCiB2b2lkIE1lZGlh
U2Vzc2lvbjo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNGY0YmU0NzcyNjQ0MDg2
Yjc3ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OS4uNzY3MmUzMmZjNzA2ZTM3ODExNmQ1ZWY3MzU0MmIx
ZGNmM2ZhYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0
b3I7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgCiAgICAgdm9pZCBtZXRhZGF0YVVw
ZGF0ZWQoKTsKIAogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNVcGRhdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwNzNlNDYyYWE4MmYxNzM0
YTExMGIwZDU5MWIwMGMyYjNiMDM3ZTA4Li5mN2JmMTRjYTJiOTZmMmViMzhlZTdkZTJkMzFhYTMx
YmU3MTlkNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIAogICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5
ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJldHVybmluZyAiLCBkaXNhYmxlZCwgIiBiZWNhdXNlIG1lZGlhIGVuZ2luZSBz
YXlzIHNvIik7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJsZWQ7CiB9CiAKQEAgLTgxMiw3ICs4
MTIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCgpCiAg
ICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwogI2VuZGlmCi0gICAgCisKIH0KIAog
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKQEAg
LTEwODgsNyArMTA4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYg
KGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5h
Y3Rpb24pKQogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKICAg
ICBlbHNlCkBAIC0xMTEwLDExICsxMTEwLDE1IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCiAgICAgYXV0byogd2luZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9t
V2luZG93KCk7CiAgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRhID0gd2luZG93ID8gTmF2aWdhdG9y
TWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZpZ2F0b3IoKSkubWV0YWRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Npb25NZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIE5v
d1BsYXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpLCBzZXNzaW9uTWV0YWRhdGEt
PmFydGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCksIG1fZWxlbWVudC5zb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtp
bmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIGlmIChzZXNzaW9uTWV0
YWRhdGEpIHsKKyAgICAgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3Jr
OworICAgICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKSkKKyAgICAgICAg
ICAgIGFydHdvcmsgPSBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9uTWV0YWRhdGEtPmFy
dHdvcmtTcmMoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+bWltZVR5cGUoKSwg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CisgICAgICAgIHJldHVy
biBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+dGl0bGUoKSwgc2Vzc2lvbk1ldGFk
YXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpLCBtX2VsZW1lbnQuc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNT
ZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlp
bmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHksIFdURk1vdmUoYXJ0d29yaykg
fTsKKyAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVu
dC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBtX2Vs
ZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGlt
ZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmll
cigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAg
ICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9l
bGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCB7IH19OwogfQogCiB2b2lkIE1lZGlhRWxlbWVu
dFNlc3Npb246OnVwZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQoKQpAQCAtMTE5NCw3ICsxMTk4LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbnN0IE1lZGlhUGxheWJhY2tE
ZW5pYWxSZWFzb24gZW51bWVyYXRpb25WYWwKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0
dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KLSAg
ICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1M2JlZTVhMjZmYTJiNGYyNjE1Y2MzOTZkZWY1ZTk1
MjNlMzc2YmZlLi5jNzMxOWIxOTc0NmNkNDczNmNkOTc4NjA2MDMxNzkxNDM5YzdkYzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09y
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IGJjNzE1ZWU4NDVl
Y2FiMDJmZDkxM2JmNGMxYTdhYTk5YTE4MGNkY2IuLjIwOTgzYjVjMjE0NDYyOGVlNjNkNTg3ZGUx
NzFmNTgxOTcxYTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaApAQCAtMjYsMTAgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeworICAgIFN0
cmluZyBzcmM7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0Fy
dHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICE9IG90aGVy
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdv
cmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNyYyAhPSBvdGhlci5zcmMg
fHwgbWltZVR5cGUgIT0gb3RoZXIubWltZVR5cGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBO
b3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGltYWdlRGF0YTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBT
dHJpbmcgc3JjOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3JjKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm9BcnR3b3JrIHsgV1RGTW92
ZShzcmMpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZShpbWFnZURhdGEpIH07Cit9CisKIHN0
cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyBhcnRp
c3Q7CkBAIC00MSw2ICs4Niw3IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgTWVkaWFT
ZXNzaW9uSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOwogICAgIGJvb2wgaXNQbGF5aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtNTMsMTAgKzk5LDExIEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgICAg
ICAgICAmJiBzdXBwb3J0c1NlZWtpbmcgPT0gb3RoZXIuc3VwcG9ydHNTZWVraW5nCiAgICAgICAg
ICAgICAmJiB1bmlxdWVJZGVudGlmaWVyID09IG90aGVyLnVuaXF1ZUlkZW50aWZpZXIKICAgICAg
ICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1BsYXlpbmcKLSAgICAgICAgICAgICYmIGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICAgICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eQorICAgICAgICAgICAgJiYgYXJ0d29yayA9PSBvdGhlci5hcnR3b3JrOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mbyBvdGhlcikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KQEAgLTY3LDcgKzExNCw3
IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlu
bGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNT
ZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwg
YWxidW0gPDwgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJl
bnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWlu
ZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IDw8IGFydHdvcms7CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
Tm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTEyLDcgKzE1OSwx
MSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRp
c3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIp
LCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmll
ciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3JrOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXJ0d29yaykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93
UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFs
YnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3Vy
cmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCBXVEZNb3ZlKGFydHdvcmspIH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpp
bmRleCBjNzY1MjU5ZWMzMWY0NGRjMWQwYmFkYWYyY2RkZWI0MTdlYzc5OWM3Li4xMTZhOTFlNmU3
M2FjMTI5NmJiMDQwZGEwOTU4YzlhMmI3MmQ4ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOb3dQbGF5aW5nSW5mby5oIgogI2lt
cG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJWUDlVdGlsaXRpZXNDb2Nv
YS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgpAQCAtMzA3LDYgKzMwOCwxMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgog
ICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJy
ZW50VGltZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkp
OwogICAgIH0KKyAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yaykgeworICAgICAgICBhdXRv
IG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKKyAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgfQogCiAgICAgaWYgKGNhbkxvYWRfTWVkaWFS
ZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJ
bmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIE1STWVk
aWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4o
KSwgbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpAQCAtMzcxLDcgKzM3Nyw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgaWYgKG1fbm93UGxheWluZ0luZm8g
IT0gbm93UGxheWluZ0luZm8pIHsKICAgICAgICAgbV9ub3dQbGF5aW5nSW5mbyA9IG5vd1BsYXlp
bmdJbmZvOwogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNl
dE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5v
d1BsYXlpbmdJbmZvKTsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUg
PSBcIiIsIG5vd1BsYXlpbmdJbmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAiLCBub3dQbGF5
aW5nSW5mby0+aXNQbGF5aW5nLCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJbmZvLT5kdXJh
dGlvbiwgIiwgbm93ID0gIiwgbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAiLCBpZCA9ICIs
IG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyLnRvVUludDY0KCksICIsIHJlZ2lzdGVy
ZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbik7CisgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0
bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVy
YXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlp
bmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sICIsIHNyYyA9IFwiIiwgbm93UGxheWluZ0luZm8tPmFydHdvcmsg
PyBub3dQbGF5aW5nSW5mby0+YXJ0d29yay0+c3JjIDogU3RyaW5nKCksICJcIiIpOwogICAgIH0K
IAogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NTBjNWY2NWI3MzI0MTVlZDQ5MjZhZjc3
NjMzMDM2ODhhMzdmMmJhLi43NjU1ZjBiYzQyNDY1MWJjNmM4YmFmN2Y0ZDg0OGZiYzNhN2U4ZTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAK
ICNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAi
TWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5jbHVkZSAiTWVk
aWFNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
cm9kdWNlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpAQCAtNDg2LDYg
KzQ4NywxMCBAQCBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgc3RvcE9ic2VydmluZ1JlYWx0aW1lTWVkaWFTb3VyY2UoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQorICAgIGlmIChtX2FydHdvcmtJbWFnZVByb21pc2UpCisg
ICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC01MjUyLDcgKzUyNTcsNyBAQCB2b2lkIEludGVybmFs
czo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiAKIHZv
aWQgSW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJv
bWlzZSYmIHByb21pc2UpCiB7Ci0gICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UgPSBXVEY6Om1h
a2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KHByb21pc2UpOworICAgIG1fbmV4dFRyYWNrRnJh
bWVQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPFRyYWNrRnJhbWVQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCkBAIC02MDgxLDYgKzYwODYsMjggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QKICAgICB9CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0
d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQo
KSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk5vIGRvY3VtZW50LiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9hcnR3
b3JrSW1hZ2VQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPEFydHdvcmtJbWFnZVByb21pc2U+KFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fYXJ0d29ya0xvYWRlciA9IG1ha2VVbmlxdWU8QXJ0d29y
a0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVybCwgW3RoaXNdKEltYWdlKiBpbWFn
ZSkgeworICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
SW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndpZHRoKCkpLCB1bnNpZ25lZChpbWFn
ZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURh
dGEucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlvbigp
LmNvZGUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2UgcmV0
cmlldmUuIiAgfSk7CisgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG51bGxwdHI7Cisg
ICAgfSk7CisgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOworfQor
CiAjZW5kaWYKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlhbE9yZGVyaW5n
IG9yZGVyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzI4MmMzNDE1Yzc4
OTg2NzJiMmFjYmVjNzdhMzdmNDcxYTU0ODExOC4uNjBlY2M0ODhiNDMyMDc3ZWIyZTM2MTJjMDZm
YjRlOThkYTZhZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RSYW5nZTsKIGNsYXNz
IEFuaW1hdGlvblRpbWVsaW5lOworY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyOwogY2xhc3MgQXVk
aW9Db250ZXh0OwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b247CkBAIC0xMDkyLDYgKzEwOTMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24o
Y29uc3QgTWVkaWFTZXNzaW9uJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZE1lZGlhU2Vz
c2lvbkFjdGlvbihNZWRpYVNlc3Npb24mLCBjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxz
Jik7CisgICAgdXNpbmcgQXJ0d29ya0ltYWdlUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdm9pZCBsb2FkQXJ0d29ya0ltYWdlKFN0cmlu
ZyYmLCBBcnR3b3JrSW1hZ2VQcm9taXNlJiYpOwogI2VuZGlmCiAKICAgICBlbnVtIFRyZWVUeXBl
IDogdWludDhfdCB7IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1RyZWUsIENvbXBvc2VkVHJlZSB9OwpA
QCAtMTEyNSw3ICsxMTI4LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IG1fdHJhY2tTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRyYWNrRnJhbWVQcm9t
aXNlPiBtX25leHRUcmFja0ZyYW1lUHJvbWlzZTsKICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3
b3JrTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnR3b3JrSW1hZ2VQcm9taXNlPiBtX2Fy
dHdvcmtJbWFnZVByb21pc2U7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
U3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwogICAgIFJlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA4OWNlMTJkMGMzNWEyYWUzMzNhYTQxYmQ5YjJlNzVkZDY4
MTFjYmJhLi5mNjk3MjUyOWI5ZDI2MDY2MDY5ODUxYzI1MDQ5ZmNmMGZhMDA0MjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05ODksNyArOTg5LDggQEAgZW51bSBUcmVl
VHlwZSB7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwgTWF5VGhyb3dFeGNlcHRp
b25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24oTWVkaWFTZXNzaW9uIHNlc3Np
b24pOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uIHNlc3Npb24sIE1l
ZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWlscyk7Ci0KKyAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl0gUHJvbWlzZTxJbWFnZURhdGE+IGxvYWRBcnR3b3JrSW1hZ2UoRE9N
U3RyaW5nIHVybCk7CisgICAgCiAgICAgRE9NU3RyaW5nIHRyZWVPcmRlcihOb2RlIGEsIE5vZGUg
Yiwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgRE9NU3RyaW5nIHRyZWVP
cmRlckJvdW5kYXJ5UG9pbnRzKE5vZGUgY29udGFpbmVyQSwgdW5zaWduZWQgbG9uZyBvZmZzZXRB
LCBOb2RlIGNvbnRhaW5lckIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Qiwgb3B0aW9uYWwgVHJlZVR5
cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgYm9vbGVhbiByYW5nZUNvbnRhaW5zTm9kZShBYnN0cmFj
dFJhbmdlIHJhbmdlLCBOb2RlIG5vZGUsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDdmOGE5ZTBmNmQ2YWM2YzhlOGMwMDU1MWRiZDYzYmJjMDU5MDdjMDIuLjYxMjVm
NTMzNDA1ZjhiNWMxODk2NGZmZTk2OTQ3YzUyYWQwYTlmYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wMy0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgbWVkaWEgc2Vzc2lvbiBpbWFnZSBhcnR3b3JrIGluIE5vdyBQbGF5aW5nIGluZm9y
bWF0aW9uIHBhbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMxMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzYwMTY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXNlc3Np
b24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUHJldmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2Fk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2Fy
dHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg0M2JkNzBkYzBkZDdhNTEw
ZDljZjQyOWQ0OGUzYjA3YmYzNGEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACisKK0ZBSUwgZW5zdXJlIGxvYWRpbmcgYXJ0d29yayBpbWFnZSBtZXRob2Qg
b3BlcmF0ZXMgcHJvcGVybHkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTggYnV0IGdvdCAxNgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3
b3JrZG93bmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRh
L2FydHdvcmtkb3dubG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYzllN2JiNTQ4ZDhhNmVkNTU5ZGQ5
NDI3ODViZTJjNDE4NmNiNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDI0IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
Citjb25zdCBJTUFHRV9TUkMgPSAnLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy90ZXN0LWxvYWQuanBn
JzsKKworcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIGVsc2Ugewor
ICAgICAgICB2YXIgcHJvbWlzZSA9IGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKElNQUdFX1NS
QykudGhlbigoZGF0YSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkYXRhLndpZHRo
LCAxNik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRhdGEuaGVpZ2h0LCAxNik7CisgICAg
ICAgIH0pOzsKKyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7Cit9LCAiZW5zdXJlIGxvYWRpbmcg
YXJ0d29yayBpbWFnZSBtZXRob2Qgb3BlcmF0ZXMgcHJvcGVybHkiKTsKKworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="442607"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423274</attachid>
            <date>2021-03-15 17:48:02 -0700</date>
            <delta_ts>2021-03-15 18:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210316114800.patch</filename>
            <type>text/plain</type>
            <size>28091</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYxMmMwNTBmYmYzMjY0
MGM5N2YyODIzZGZlZTQ1NThiNzgyNDg4Ny4uODQyNTA3YjNkMWFkMmQ2YWE0ZDVhZDM3ODk1Y2Y1
NzZmODMwZTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
On5BcnR3b3JrSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRh
dGE6OnNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3Jr
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3JrU3JjIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFnZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29y
azo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKTogQWRkIG1pc3NpbmcgbW92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3Bw
CmluZGV4IGY2ZmYzMWZiMDhkZDQ5ODFhM2JjZTkwMzkyYmRiZDJjZGE1ZmNkYjYuLjc2OTdmMTUx
MDY2MDM4MGFkM2RjMDVkNWIyOWU3MWUzZGNjM2NkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC0yOCwxMyAr
MjgsNDkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FydHdv
cmtJbWFnZUxvYWRlcjo6QXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zcmMoc3JjKQorICAgICwgbV9jYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworQXJ0d29ya0ltYWdlTG9hZGVyOjp+QXJ0
d29ya0ltYWdlTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VM
b2FkZXI6OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
bV9kb2N1bWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlv
bnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9jdW1lbnQuZG9jdW1lbnRVUkkoKSk7
CisgICAgbV9jYWNoZWRJbWFnZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CisKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJbWFnZSk7CisgICAgbV9j
YWxsYmFjayhtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpID8gbnVsbHB0ciA6
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworfQorCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRh
ZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0
YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzkxLDE0IEBA
IE1lZGlhTWV0YWRhdGE6On5NZWRpYU1ldGFkYXRhKCkgPSBkZWZhdWx0Owogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIG1f
c2Vzc2lvbiA9IG1ha2VXZWFrUHRyKHNlc3Npb24pOworICAgIHJlZnJlc2hBcnR3b3JrSW1hZ2Uo
KTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiB7CiAgICAg
bV9zZXNzaW9uLmNsZWFyKCk7CisgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICBt
X2FydHdvcmtJbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTEwMSwxMCArMTQwLDM2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjCiAgICAgfQogCiAgICAgbV9tZXRhZGF0YS5hcnR3b3JrID0gV1RGTW92ZShy
ZXNvbHZlZEFydHdvcmspOworCisgICAgcmVmcmVzaEFydHdvcmtJbWFnZSgpOworCiAgICAgbWV0
YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBNZWRpYU1ldGFkYXRh
OjpyZWZyZXNoQXJ0d29ya0ltYWdlKCkKK3sKKyAgICBjb25zdCBhdXRvJiBtZWRpYUltYWdlcyA9
IG1fbWV0YWRhdGEuYXJ0d29yazsKKyAgICBpZiAobWVkaWFJbWFnZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fYXJ0d29ya0xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Nlc3Npb24gfHwgIW1fc2Vzc2lvbi0+ZG9jdW1lbnQoKSB8fCBtZWRpYUlt
YWdlc1swXS5zcmMgPT0gbV9hcnR3b3JrSW1hZ2VTcmMpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGEgaGV1cmlzdGljIHRvIHJldHJpZXZlIHRoZSAiYmVzdCIgaW1h
Z2UuCisgICAgbV9hcnR3b3JrSW1hZ2VTcmMgPSBtZWRpYUltYWdlc1swXS5zcmM7CisgICAgbV9h
cnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCptX3Nlc3Npb24t
PmRvY3VtZW50KCksIG1fYXJ0d29ya0ltYWdlU3JjLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7Cisg
ICAgICAgIHNldEFydHdvcmtJbWFnZShpbWFnZSk7CisgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgp
OworICAgIH0pOworICAgIG1fYXJ0d29ya0xvYWRlci0+cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
K30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQor
eworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6
bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDMwZTA5
M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEuLmI1ZmJiYjQyOTMyNmQwMWJiMzU0
YTZhNmEyOWYyOWZkMDY1ZWJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTI3LDE4ICsyNyw0NSBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0
YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZWRJbWFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSW1hZ2U7CiBzdHJ1Y3QgTWVk
aWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5p
dDsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyIGZpbmFsIDogcHVibGljIENhY2hlZEltYWdl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFdURjo6RnVuY3Rpb248dm9pZChJbWFnZSopPiBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxsYmFj
azsKKyAgICAvLyBUaGUgY2FsbGJhY2sgd2lsbCBvbmx5IGJlIGNhbGxlZCB1cG9uIHN1Y2Nlc3Mg
b3IgZXhwbGljaXQgZmFpbHVyZSB0byByZXRyaWV2ZSB0aGUgaW1hZ2UuIElmIHRoZSBvcGVyYXRp
b24gaXMgaW50ZXJydXB0ZWQgZm9sbG93aW5nIHRoZQorICAgIC8vIGRlc3RydWN0aW9uIG9mIHRo
ZSBBcnR3b3JrSW1hZ2VMb2FkZXIsIHRoZSBjYWxsYmFjayB3b24ndCBiZSBjYWxsZWQuCisgICAg
V0VCQ09SRV9FWFBPUlQgQXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5BcnR3b3JrSW1hZ2VMb2FkZXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVz
dEltYWdlUmVzb3VyY2UoKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBTdHJpbmcgbV9z
cmM7CisgICAgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKK307CisKIGNsYXNz
IE1lZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CkBA
IC01OSwxNCArODYsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUltYWdlPiYg
YXJ0d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29yazsgfQogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxN
ZWRpYUltYWdlPiYmKTsKIAorICAgIGNvbnN0IFN0cmluZyYgYXJ0d29ya1NyYygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJ0d29ya0ltYWdlU3JjOyB9CisgICAgUmVmUHRyPEltYWdlPiBhcnR3b3JrSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtJbWFnZTsgfQorCiAgICAgY29uc3QgTWVkaWFT
ZXNzaW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
CiBwcml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKKyAgICB2b2lkIHNldEFydHdvcmtJbWFn
ZShJbWFnZSopOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CisgICAgdm9pZCByZWZyZXNo
QXJ0d29ya0ltYWdlKCk7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwog
ICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVyOworICAgIFN0cmluZyBtX2FydHdv
cmtJbWFnZVNyYzsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fYXJ0d29ya0ltYWdlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggOTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYzMWYyZWFiNDdhOWQzNjQ4ZC4uMzJi
MDhlMWE3MWRlOTQzMGQxMjIwZTBiZTZhMjFjZDhlMmI1NzBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBNZWRpYVNl
c3Npb246OnNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRy
PE1lZGlhU2Vzc2kKICAgICAgICAgfQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFu
ZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKICAgICB9Ci0gICAgCisKICAgICBhY3Rp
b25IYW5kbGVyc1VwZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYgKzE3NiwxMyBAQCBPcHRpb25hbDxk
b3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjptYXgoMC4sIHN0ZDo6bWluKCptX2xhc3RSZXBvcnRlZFBvc2l0aW9uICsgZWxhcHNlZFRp
bWUudmFsdWUoKSwgbV9wb3NpdGlvblN0YXRlLT5kdXJhdGlvbikpOwogfQogCitEb2N1bWVudCog
TWVkaWFTZXNzaW9uOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hdmlnYXRvciB8
fCAhbV9uYXZpZ2F0b3ItPndpbmRvdygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9uYXZpZ2F0b3ItPndpbmRvdygpLT5kb2N1bWVudCgpOworfQorCiB2b2lkIE1lZGlh
U2Vzc2lvbjo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNGY0YmU0NzcyNjQ0MDg2
Yjc3ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OS4uNzY3MmUzMmZjNzA2ZTM3ODExNmQ1ZWY3MzU0MmIx
ZGNmM2ZhYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0
b3I7CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgCiAgICAgdm9pZCBtZXRhZGF0YVVw
ZGF0ZWQoKTsKIAogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNVcGRhdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwNzNlNDYyYWE4MmYxNzM0
YTExMGIwZDU5MWIwMGMyYjNiMDM3ZTA4Li5mN2JmMTRjYTJiOTZmMmViMzhlZTdkZTJkMzFhYTMx
YmU3MTlkNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIAogICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5
ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJldHVybmluZyAiLCBkaXNhYmxlZCwgIiBiZWNhdXNlIG1lZGlhIGVuZ2luZSBz
YXlzIHNvIik7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJsZWQ7CiB9CiAKQEAgLTgxMiw3ICs4
MTIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCgpCiAg
ICAgaWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwogI2VuZGlmCi0gICAgCisKIH0KIAog
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKQEAg
LTEwODgsNyArMTA4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYg
KGF1dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5h
Y3Rpb24pKQogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKICAg
ICBlbHNlCkBAIC0xMTEwLDExICsxMTEwLDE1IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAjaWYgRU5BQkxFKE1F
RElBX1NFU1NJT04pCiAgICAgYXV0byogd2luZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9t
V2luZG93KCk7CiAgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRhID0gd2luZG93ID8gTmF2aWdhdG9y
TWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZpZ2F0b3IoKSkubWV0YWRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Npb25NZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIE5v
d1BsYXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpLCBzZXNzaW9uTWV0YWRhdGEt
PmFydGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCksIG1fZWxlbWVudC5zb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtp
bmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIGlmIChzZXNzaW9uTWV0
YWRhdGEpIHsKKyAgICAgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3Jr
OworICAgICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKSkKKyAgICAgICAg
ICAgIGFydHdvcmsgPSBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeyBzZXNzaW9uTWV0YWRhdGEtPmFy
dHdvcmtTcmMoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+bWltZVR5cGUoKSwg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKS0+ZGF0YSgpIH07CisgICAgICAgIHJldHVy
biBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+dGl0bGUoKSwgc2Vzc2lvbk1ldGFk
YXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpLCBtX2VsZW1lbnQuc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNT
ZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlp
bmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHksIFdURk1vdmUoYXJ0d29yaykg
fTsKKyAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVu
dC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBtX2Vs
ZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGlt
ZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmll
cigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAg
ICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9l
bGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCB7IH19OwogfQogCiB2b2lkIE1lZGlhRWxlbWVu
dFNlc3Npb246OnVwZGF0ZU1lZGlhVXNhZ2VJZkNoYW5nZWQoKQpAQCAtMTE5NCw3ICsxMTk4LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbnN0IE1lZGlhUGxheWJhY2tE
ZW5pYWxSZWFzb24gZW51bWVyYXRpb25WYWwKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0
dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KLSAg
ICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1M2JlZTVhMjZmYTJiNGYyNjE1Y2MzOTZkZWY1ZTk1
MjNlMzc2YmZlLi5jNzMxOWIxOTc0NmNkNDczNmNkOTc4NjA2MDMxNzkxNDM5YzdkYzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09y
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IGJjNzE1ZWU4NDVl
Y2FiMDJmZDkxM2JmNGMxYTdhYTk5YTE4MGNkY2IuLjIwOTgzYjVjMjE0NDYyOGVlNjNkNTg3ZGUx
NzFmNTgxOTcxYTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaApAQCAtMjYsMTAgKzI2LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIk1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgeworICAgIFN0
cmluZyBzcmM7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0Fy
dHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICE9IG90aGVy
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdv
cmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNyYyAhPSBvdGhlci5zcmMg
fHwgbWltZVR5cGUgIT0gb3RoZXIubWltZVR5cGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBO
b3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVUeXBlIDw8IGltYWdlRGF0YTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBT
dHJpbmcgc3JjOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3JjKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm9BcnR3b3JrIHsgV1RGTW92
ZShzcmMpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZShpbWFnZURhdGEpIH07Cit9CisKIHN0
cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyBhcnRp
c3Q7CkBAIC00MSw2ICs4Niw3IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgTWVkaWFT
ZXNzaW9uSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOwogICAgIGJvb2wgaXNQbGF5aW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtNTMsMTAgKzk5LDExIEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgICAg
ICAgICAmJiBzdXBwb3J0c1NlZWtpbmcgPT0gb3RoZXIuc3VwcG9ydHNTZWVraW5nCiAgICAgICAg
ICAgICAmJiB1bmlxdWVJZGVudGlmaWVyID09IG90aGVyLnVuaXF1ZUlkZW50aWZpZXIKICAgICAg
ICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1BsYXlpbmcKLSAgICAgICAgICAgICYmIGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICAgICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eQorICAgICAgICAgICAgJiYgYXJ0d29yayA9PSBvdGhlci5hcnR3b3JrOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mbyBvdGhlcikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KQEAgLTY3LDcgKzExNCw3
IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlu
bGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNT
ZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwg
YWxidW0gPDwgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJl
bnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWlu
ZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IDw8IGFydHdvcms7CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
Tm93UGxheWluZ0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTEyLDcgKzE1OSwx
MSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRp
c3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIp
LCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmll
ciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3JrOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXJ0d29yaykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93
UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFs
YnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3Vy
cmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCBXVEZNb3ZlKGFydHdvcmspIH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpp
bmRleCBjNzY1MjU5ZWMzMWY0NGRjMWQwYmFkYWYyY2RkZWI0MTdlYzc5OWM3Li4xMTZhOTFlNmU3
M2FjMTI5NmJiMDQwZGEwOTU4YzlhMmI3MmQ4ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOb3dQbGF5aW5nSW5mby5oIgogI2lt
cG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJWUDlVdGlsaXRpZXNDb2Nv
YS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgpAQCAtMzA3LDYgKzMwOCwxMSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgog
ICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJy
ZW50VGltZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkp
OwogICAgIH0KKyAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yaykgeworICAgICAgICBhdXRv
IG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKKyAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgfQogCiAgICAgaWYgKGNhbkxvYWRfTWVkaWFS
ZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJ
bmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIE1STWVk
aWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4o
KSwgbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpAQCAtMzcxLDcgKzM3Nyw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAgICAgaWYgKG1fbm93UGxheWluZ0luZm8g
IT0gbm93UGxheWluZ0luZm8pIHsKICAgICAgICAgbV9ub3dQbGF5aW5nSW5mbyA9IG5vd1BsYXlp
bmdJbmZvOwogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNl
dE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5v
d1BsYXlpbmdJbmZvKTsKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUg
PSBcIiIsIG5vd1BsYXlpbmdJbmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAiLCBub3dQbGF5
aW5nSW5mby0+aXNQbGF5aW5nLCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJbmZvLT5kdXJh
dGlvbiwgIiwgbm93ID0gIiwgbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAiLCBpZCA9ICIs
IG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyLnRvVUludDY0KCksICIsIHJlZ2lzdGVy
ZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbik7CisgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0
bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVy
YXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlp
bmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sICIsIHNyYyA9IFwiIiwgbm93UGxheWluZ0luZm8tPmFydHdvcmsg
PyBub3dQbGF5aW5nSW5mby0+YXJ0d29yay0+c3JjIDogU3RyaW5nKCksICJcIiIpOwogICAgIH0K
IAogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NTBjNWY2NWI3MzI0MTVlZDQ5MjZhZjc3
NjMzMDM2ODhhMzdmMmJhLi43NjU1ZjBiYzQyNDY1MWJjNmM4YmFmN2Y0ZDg0OGZiYzNhN2U4ZTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAK
ICNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAi
TWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlzLmgiCisjaW5jbHVkZSAiTWVk
aWFNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQ
cm9kdWNlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpAQCAtNDg2LDYg
KzQ4NywxMCBAQCBJbnRlcm5hbHM6On5JbnRlcm5hbHMoKQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgc3RvcE9ic2VydmluZ1JlYWx0aW1lTWVkaWFTb3VyY2UoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShNRURJQV9TRVNTSU9OKQorICAgIGlmIChtX2FydHdvcmtJbWFnZVByb21pc2UpCisg
ICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOworI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCkBAIC01MjUyLDcgKzUyNTcsNyBAQCB2b2lkIEludGVybmFs
czo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiAKIHZv
aWQgSW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJv
bWlzZSYmIHByb21pc2UpCiB7Ci0gICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UgPSBXVEY6Om1h
a2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KHByb21pc2UpOworICAgIG1fbmV4dFRyYWNrRnJh
bWVQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPFRyYWNrRnJhbWVQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCkBAIC02MDgxLDYgKzYwODYsMjggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QKICAgICB9CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0cmluZyYmIHVybCwgQXJ0
d29ya0ltYWdlUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQo
KSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIk5vIGRvY3VtZW50LiIgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9hcnR3
b3JrSW1hZ2VQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPEFydHdvcmtJbWFnZVByb21pc2U+KFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fYXJ0d29ya0xvYWRlciA9IG1ha2VVbmlxdWU8QXJ0d29y
a0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVybCwgW3RoaXNdKEltYWdlKiBpbWFn
ZSkgeworICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
SW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndpZHRoKCkpLCB1bnNpZ25lZChpbWFn
ZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURh
dGEucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlvbigp
LmNvZGUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiTm8gaW1hZ2UgcmV0
cmlldmUuIiAgfSk7CisgICAgICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG51bGxwdHI7Cisg
ICAgfSk7CisgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOworfQor
CiAjZW5kaWYKIAogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlhbE9yZGVyaW5n
IG9yZGVyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzI4MmMzNDE1Yzc4
OTg2NzJiMmFjYmVjNzdhMzdmNDcxYTU0ODExOC4uNjBlY2M0ODhiNDMyMDc3ZWIyZTM2MTJjMDZm
YjRlOThkYTZhZDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3RSYW5nZTsKIGNsYXNz
IEFuaW1hdGlvblRpbWVsaW5lOworY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyOwogY2xhc3MgQXVk
aW9Db250ZXh0OwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b247CkBAIC0xMDkyLDYgKzEwOTMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJ
T04pCiAgICAgRXhjZXB0aW9uT3I8ZG91YmxlPiBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24o
Y29uc3QgTWVkaWFTZXNzaW9uJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZE1lZGlhU2Vz
c2lvbkFjdGlvbihNZWRpYVNlc3Npb24mLCBjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxz
Jik7CisgICAgdXNpbmcgQXJ0d29ya0ltYWdlUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdm9pZCBsb2FkQXJ0d29ya0ltYWdlKFN0cmlu
ZyYmLCBBcnR3b3JrSW1hZ2VQcm9taXNlJiYpOwogI2VuZGlmCiAKICAgICBlbnVtIFRyZWVUeXBl
IDogdWludDhfdCB7IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1RyZWUsIENvbXBvc2VkVHJlZSB9OwpA
QCAtMTEyNSw3ICsxMTI4LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IG1fdHJhY2tTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRyYWNrRnJhbWVQcm9t
aXNlPiBtX25leHRUcmFja0ZyYW1lUHJvbWlzZTsKICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCisgICAgc3RkOjp1bmlxdWVfcHRyPEFydHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3
b3JrTG9hZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnR3b3JrSW1hZ2VQcm9taXNlPiBtX2Fy
dHdvcmtJbWFnZVByb21pc2U7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
U3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwogICAgIFJlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA4OWNlMTJkMGMzNWEyYWUzMzNhYTQxYmQ5YjJlNzVkZDY4
MTFjYmJhLi5mNjk3MjUyOWI5ZDI2MDY2MDY5ODUxYzI1MDQ5ZmNmMGZhMDA0MjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05ODksNyArOTg5LDggQEAgZW51bSBUcmVl
VHlwZSB7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTiwgTWF5VGhyb3dFeGNlcHRp
b25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9uUG9zaXRpb24oTWVkaWFTZXNzaW9uIHNlc3Np
b24pOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uIHNlc3Npb24sIE1l
ZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9uRGV0YWlscyk7Ci0KKyAgICBbQ29uZGl0aW9u
YWw9TUVESUFfU0VTU0lPTl0gUHJvbWlzZTxJbWFnZURhdGE+IGxvYWRBcnR3b3JrSW1hZ2UoRE9N
U3RyaW5nIHVybCk7CisgICAgCiAgICAgRE9NU3RyaW5nIHRyZWVPcmRlcihOb2RlIGEsIE5vZGUg
Yiwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgRE9NU3RyaW5nIHRyZWVP
cmRlckJvdW5kYXJ5UG9pbnRzKE5vZGUgY29udGFpbmVyQSwgdW5zaWduZWQgbG9uZyBvZmZzZXRB
LCBOb2RlIGNvbnRhaW5lckIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Qiwgb3B0aW9uYWwgVHJlZVR5
cGUgdHJlZSA9ICJUcmVlIik7CiAgICAgYm9vbGVhbiByYW5nZUNvbnRhaW5zTm9kZShBYnN0cmFj
dFJhbmdlIHJhbmdlLCBOb2RlIG5vZGUsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDdmOGE5ZTBmNmQ2YWM2YzhlOGMwMDU1MWRiZDYzYmJjMDU5MDdjMDIuLjYxMjVm
NTMzNDA1ZjhiNWMxODk2NGZmZTk2OTQ3YzUyYWQwYTlmYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wMy0xNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgbWVkaWEgc2Vzc2lvbiBpbWFnZSBhcnR3b3JrIGluIE5vdyBQbGF5aW5nIGluZm9y
bWF0aW9uIHBhbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjMxMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MzYwMTY2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXNlc3Np
b24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUHJldmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2Fk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2Fy
dHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VmOTBjZThlNWU1OTAxZDdk
MWYzNmQ0NDgxOGQ4MzIwNTMyNmQyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACisKK1BBU1MgZW5zdXJlIGxvYWRpbmcgYXJ0d29yayBpbWFnZSBtZXRob2Qg
b3BlcmF0ZXMgcHJvcGVybHkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNl
c3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmM5
ZTdiYjU0OGQ4YTZlZDU1OWRkOTQyNzg1YmUyYzQxODZjYjc3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0
bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKworY29uc3QgSU1BR0VfU1JDID0gJy4uLy4uL2ltYWdlcy9yZXNv
dXJjZXMvdGVzdC1sb2FkLmpwZyc7CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAgIGlm
ICghd2luZG93LmludGVybmFscykKKyAgICAgICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHByb21pc2UgPSBpbnRlcm5hbHMubG9hZEFy
dHdvcmtJbWFnZShJTUFHRV9TUkMpLnRoZW4oKGRhdGEpID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZGF0YS53aWR0aCwgMTYpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkYXRh
LmhlaWdodCwgMTYpOworICAgICAgICB9KTs7CisgICAgfQorICAgIHJldHVybiBwcm9taXNlOwor
fSwgImVuc3VyZSBsb2FkaW5nIGFydHdvcmsgaW1hZ2UgbWV0aG9kIG9wZXJhdGVzIHByb3Blcmx5
Iik7CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423278</attachid>
            <date>2021-03-15 18:40:20 -0700</date>
            <delta_ts>2021-03-16 18:37:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210316124019.patch</filename>
            <type>text/plain</type>
            <size>28234</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYxMmMwNTBmYmYzMjY0
MGM5N2YyODIzZGZlZTQ1NThiNzgyNDg4Ny4uODQyNTA3YjNkMWFkMmQ2YWE0ZDVhZDM3ODk1Y2Y1
NzZmODMwZTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
On5BcnR3b3JrSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRh
dGE6OnNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpy
ZXNldE1lZGlhU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpzZXRB
cnR3b3JrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnJlZnJlc2hBcnR3b3Jr
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29ya0ltYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjphcnR3b3JrU3JjIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdvcmtJbWFnZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbjo6c2V0QWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29y
azo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0Fy
dHdvcms6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm9BcnR3b3JrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86Om9wZXJh
dG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRl
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6fkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKTogQWRkIG1pc3NpbmcgbW92
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3Bw
CmluZGV4IGY2ZmYzMWZiMDhkZDQ5ODFhM2JjZTkwMzkyYmRiZDJjZGE1ZmNkYjYuLjc2OTdmMTUx
MDY2MDM4MGFkM2RjMDVkNWIyOWU3MWUzZGNjM2NkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC0yOCwxMyAr
MjgsNDkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRpYUltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFNZXRhZGF0YUluaXQuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FydHdv
cmtJbWFnZUxvYWRlcjo6QXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9zcmMoc3JjKQorICAgICwgbV9jYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworQXJ0d29ya0ltYWdlTG9hZGVyOjp+QXJ0
d29ya0ltYWdlTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9j
YWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VM
b2FkZXI6OnJlcXVlc3RJbWFnZVJlc291cmNlKCkKK3sKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0g
bV9kb2N1bWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFJlc291cmNlUmVxdWVzdChtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1fc3JjKSksIG9wdGlv
bnMpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1fZG9jdW1lbnQuZG9jdW1lbnRVUkkoKSk7
CisgICAgbV9jYWNoZWRJbWFnZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CisKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKKyAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCp0aGlz
KTsKK30KKwordm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRJbWFnZSk7CisgICAgbV9j
YWxsYmFjayhtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpID8gbnVsbHB0ciA6
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworfQorCiBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRh
ZGF0YT4+IE1lZGlhTWV0YWRhdGE6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJiBpbml0KQogewogICAgIGF1dG8gbWV0
YWRhdGEgPSBhZG9wdFJlZigqbmV3IE1lZGlhTWV0YWRhdGEpOwpAQCAtNTUsMTEgKzkxLDE0IEBA
IE1lZGlhTWV0YWRhdGE6On5NZWRpYU1ldGFkYXRhKCkgPSBkZWZhdWx0Owogdm9pZCBNZWRpYU1l
dGFkYXRhOjpzZXRNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIG1f
c2Vzc2lvbiA9IG1ha2VXZWFrUHRyKHNlc3Npb24pOworICAgIHJlZnJlc2hBcnR3b3JrSW1hZ2Uo
KTsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpyZXNldE1lZGlhU2Vzc2lvbigpCiB7CiAgICAg
bV9zZXNzaW9uLmNsZWFyKCk7CisgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICBt
X2FydHdvcmtJbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWVkaWFNZXRhZGF0YTo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTEwMSwxMCArMTQwLDM2IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjCiAgICAgfQogCiAgICAgbV9tZXRhZGF0YS5hcnR3b3JrID0gV1RGTW92ZShy
ZXNvbHZlZEFydHdvcmspOworCisgICAgcmVmcmVzaEFydHdvcmtJbWFnZSgpOworCiAgICAgbWV0
YWRhdGFVcGRhdGVkKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBNZWRpYU1ldGFkYXRh
OjpyZWZyZXNoQXJ0d29ya0ltYWdlKCkKK3sKKyAgICBjb25zdCBhdXRvJiBtZWRpYUltYWdlcyA9
IG1fbWV0YWRhdGEuYXJ0d29yazsKKyAgICBpZiAobWVkaWFJbWFnZXMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fYXJ0d29ya0xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Nlc3Npb24gfHwgIW1fc2Vzc2lvbi0+ZG9jdW1lbnQoKSB8fCBtZWRpYUlt
YWdlc1swXS5zcmMgPT0gbV9hcnR3b3JrSW1hZ2VTcmMpCisgICAgICAgIHJldHVybjsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGEgaGV1cmlzdGljIHRvIHJldHJpZXZlIHRoZSAiYmVzdCIgaW1h
Z2UuCisgICAgbV9hcnR3b3JrSW1hZ2VTcmMgPSBtZWRpYUltYWdlc1swXS5zcmM7CisgICAgbV9h
cnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCptX3Nlc3Npb24t
PmRvY3VtZW50KCksIG1fYXJ0d29ya0ltYWdlU3JjLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7Cisg
ICAgICAgIHNldEFydHdvcmtJbWFnZShpbWFnZSk7CisgICAgICAgIG1ldGFkYXRhVXBkYXRlZCgp
OworICAgIH0pOworICAgIG1fYXJ0d29ya0xvYWRlci0+cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
K30KKwordm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRBcnR3b3JrSW1hZ2UoSW1hZ2UqIGltYWdlKQor
eworICAgIG1fYXJ0d29ya0ltYWdlID0gaW1hZ2U7Cit9CisKIHZvaWQgTWVkaWFNZXRhZGF0YTo6
bWV0YWRhdGFVcGRhdGVkKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCmluZGV4IDMwZTA5
M2Q2ZDI3ZGRiNzQxNTI4MWVlOGI1ZDEwMDRlZmNmYWE1ZGEuLmYzODEwYjdlMTk3NWY2ZmQwODFh
OWY2ZDc2MTA1ZWIwMmIzZDE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKQEAgLTI3LDE4ICsyNyw0NSBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0
YUluaXQuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDYWNoZWRJbWFnZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSW1hZ2U7CiBzdHJ1Y3QgTWVk
aWFJbWFnZTsKIAogdXNpbmcgTWVkaWFTZXNzaW9uTWV0YWRhdGEgPSBNZWRpYU1ldGFkYXRhSW5p
dDsKIAorY2xhc3MgQXJ0d29ya0ltYWdlTG9hZGVyIGZpbmFsIDogcHVibGljIENhY2hlZEltYWdl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoSW1hZ2UqKT47Cisg
ICAgLy8gVGhlIGNhbGxiYWNrIHdpbGwgb25seSBiZSBjYWxsZWQgdXBvbiBzdWNjZXNzIG9yIGV4
cGxpY2l0IGZhaWx1cmUgdG8gcmV0cmlldmUgdGhlIGltYWdlLiBJZiB0aGUgb3BlcmF0aW9uIGlz
IGludGVycnVwdGVkIGZvbGxvd2luZyB0aGUKKyAgICAvLyBkZXN0cnVjdGlvbiBvZiB0aGUgQXJ0
d29ya0ltYWdlTG9hZGVyLCB0aGUgY2FsbGJhY2sgd29uJ3QgYmUgY2FsbGVkLgorICAgIFdFQkNP
UkVfRVhQT1JUIEFydHdvcmtJbWFnZUxvYWRlcihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgc3Jj
LCBBcnR3b3JrSW1hZ2VMb2FkZXJDYWxsYmFjayYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXJ0
d29ya0ltYWdlTG9hZGVyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RJbWFn
ZVJlc291cmNlKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisKK3ByaXZh
dGU6CisgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgY29uc3QgU3RyaW5nIG1fc3JjOwor
ICAgIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Cit9OworCiBjbGFzcyBNZWRp
YU1ldGFkYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFNZXRhZGF0YT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8TWVkaWFNZXRhZGF0YT4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8TWVkaWFNZXRhZGF0YUluaXQ+JiYpOwpAQCAtNTks
MTQgKzg2LDIyIEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8TWVkaWFJbWFnZT4mIGFydHdv
cmsoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmFydHdvcms7IH0KICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRBcnR3b3JrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3I8TWVkaWFJ
bWFnZT4mJik7CiAKKyAgICBjb25zdCBTdHJpbmcmIGFydHdvcmtTcmMoKSBjb25zdCB7IHJldHVy
biBtX2FydHdvcmtJbWFnZVNyYzsgfQorICAgIFJlZlB0cjxJbWFnZT4gYXJ0d29ya0ltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9hcnR3b3JrSW1hZ2U7IH0KKwogICAgIGNvbnN0IE1lZGlhU2Vzc2lv
bk1ldGFkYXRhJiBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAogcHJp
dmF0ZToKICAgICBNZWRpYU1ldGFkYXRhKCk7CisgICAgdm9pZCBzZXRBcnR3b3JrSW1hZ2UoSW1h
Z2UqKTsKICAgICB2b2lkIG1ldGFkYXRhVXBkYXRlZCgpOworICAgIHZvaWQgcmVmcmVzaEFydHdv
cmtJbWFnZSgpOwogCiAgICAgV2Vha1B0cjxNZWRpYVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBN
ZWRpYVNlc3Npb25NZXRhZGF0YSBtX21ldGFkYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnR3
b3JrSW1hZ2VMb2FkZXI+IG1fYXJ0d29ya0xvYWRlcjsKKyAgICBTdHJpbmcgbV9hcnR3b3JrSW1h
Z2VTcmM7CisgICAgUmVmUHRyPEltYWdlPiBtX2FydHdvcmtJbWFnZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
CmluZGV4IDkwMWRkYjBhN2I0ZmU5ZTkzNjNlNWZmMzFmMmVhYjQ3YTlkMzY0OGQuLjMyYjA4ZTFh
NzFkZTk0MzBkMTIyMGUwYmU2YTIxY2Q4ZTJiNTcwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFNZXRhZGF0YS5oIgogI2lu
Y2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9u
OjpzZXRBY3Rpb25IYW5kbGVyKE1lZGlhU2Vzc2lvbkFjdGlvbiBhY3Rpb24sIFJlZlB0cjxNZWRp
YVNlc3NpCiAgICAgICAgIH0KICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkucmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmRGb3JN
ZWRpYVNlc3Npb25BY3Rpb24oYWN0aW9uKSk7CiAgICAgfQotICAgIAorCiAgICAgYWN0aW9uSGFu
ZGxlcnNVcGRhdGVkKCk7CiB9CiAKQEAgLTE3NSw2ICsxNzYsMTMgQEAgT3B0aW9uYWw8ZG91Ymxl
PiBNZWRpYVNlc3Npb246OmN1cnJlbnRQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6
bWF4KDAuLCBzdGQ6Om1pbigqbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbiArIGVsYXBzZWRUaW1lLnZh
bHVlKCksIG1fcG9zaXRpb25TdGF0ZS0+ZHVyYXRpb24pKTsKIH0KIAorRG9jdW1lbnQqIE1lZGlh
U2Vzc2lvbjo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIGlmICghbV9uYXZpZ2F0b3IgfHwgIW1f
bmF2aWdhdG9yLT53aW5kb3coKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fbmF2aWdhdG9yLT53aW5kb3coKS0+ZG9jdW1lbnQoKTsKK30KKwogdm9pZCBNZWRpYVNlc3Np
b246Om1ldGFkYXRhVXBkYXRlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDRmNGJlNDc3MjY0NDA4NmI3N2Q2
MWQ5ZjViMDgyM2ExNWQwNTA1NjkuLjc2NzJlMzJmYzcwNmUzNzgxMTZkNWVmNzM1NDJiMWRjZjNm
YWI3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYU1ldGFkYXRhOwogY2xhc3MgTmF2aWdhdG9yOwog
CkBAIC02MCw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQb3Np
dGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50UG9zaXRpb24oKSBjb25zdDsKIAorICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgIAogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVk
KCk7CiAKICAgICB2b2lkIGFjdGlvbkhhbmRsZXJzVXBkYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggMDczZTQ2MmFhODJmMTczNGExMTBi
MGQ1OTFiMDBjMmIzYjAzN2UwOC4uZjdiZjE0Y2EyYjk2ZjJlYjM4ZWU3ZGUyZDMxYWEzMWJlNzE5
ZDU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBA
IC02NTMsNyArNjUzLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiAKICAgICBib29sIGRpc2FibGVkID0gcGxheWVyLT53
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpOwogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgIiwgZGlzYWJsZWQsICIgYmVjYXVzZSBtZWRpYSBlbmdpbmUgc2F5cyBz
byIpOwotICAgIAorCiAgICAgcmV0dXJuIGRpc2FibGVkOwogfQogCkBAIC04MTIsNyArODEyLDcg
QEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQoKQogICAgIGlm
IChtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KQogICAgICAgICBjbGllbnQoKS5zZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh0cnVlKTsKICNlbmRpZgotICAgIAorCiB9CiAKIHZvaWQg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpCkBAIC0xMDg4
LDcgKzEwODgsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChSZW1vdGVDb250cm9sQ29tbWFuZFR5cAogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChhdXRv
IGhhbmRsZXIgPSBzZXNzaW9uLT5oYW5kbGVyRm9yQWN0aW9uKGFjdGlvbkRldGFpbHMuYWN0aW9u
KSkKICAgICAgICAgaGFuZGxlci0+aGFuZGxlRXZlbnQoYWN0aW9uRGV0YWlscyk7CiAgICAgZWxz
ZQpAQCAtMTExMCwxMSArMTExMCwxNSBAQCBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFF
bGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQogICAgIGF1dG8qIHdpbmRvdyA9IG1fZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRv
dygpOwogICAgIGF1dG8qIHNlc3Npb25NZXRhZGF0YSA9IHdpbmRvdyA/IE5hdmlnYXRvck1lZGlh
U2Vzc2lvbjo6bWVkaWFTZXNzaW9uKHdpbmRvdy0+bmF2aWdhdG9yKCkpLm1ldGFkYXRhKCkgOiBu
dWxscHRyOwotICAgIGlmIChzZXNzaW9uTWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBOb3dQbGF5
aW5nSW5mbyB7IHNlc3Npb25NZXRhZGF0YS0+dGl0bGUoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnRp
c3QoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hbGJ1bSgpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBt
X2VsZW1lbnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93
c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAgICBpZiAoc2Vzc2lvbk1ldGFkYXRh
KSB7CisgICAgICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKKyAg
ICAgICAgaWYgKHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0ltYWdlKCkpCisgICAgICAgICAgICBh
cnR3b3JrID0gTm93UGxheWluZ0luZm9BcnR3b3JrIHsgc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3Jr
U3JjKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0ltYWdlKCktPm1pbWVUeXBlKCksIHNlc3Np
b25NZXRhZGF0YS0+YXJ0d29ya0ltYWdlKCktPmRhdGEoKSB9OworICAgICAgICByZXR1cm4gTm93
UGxheWluZ0luZm8geyBzZXNzaW9uTWV0YWRhdGEtPnRpdGxlKCksIHNlc3Npb25NZXRhZGF0YS0+
YXJ0aXN0KCksIHNlc3Npb25NZXRhZGF0YS0+YWxidW0oKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2lu
ZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5LCBXVEZNb3ZlKGFydHdvcmspIH07Cisg
ICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVk
aWFTZXNzaW9uVGl0bGUoKSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbV9lbGVtZW50
LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1
cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwg
aXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgcmV0
dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIGVtcHR5
U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVu
dC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxh
eWluZ0NvbnRyb2xzVmlzaWJpbGl0eSwgeyB9fTsKIH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjp1cGRhdGVNZWRpYVVzYWdlSWZDaGFuZ2VkKCkKQEAgLTExOTQsNyArMTE5OCw3IEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhjb25zdCBNZWRpYVBsYXliYWNrRGVuaWFs
UmVhc29uIGVudW1lcmF0aW9uVmFsCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51
bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiB2
YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9Ci0gICAgCisK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKaW5kZXggNTNiZWU1YTI2ZmEyYjRmMjYxNWNjMzk2ZGVmNWU5NTIzZTM3
NmJmZS4uYzczMTliMTk3NDZjZDQ3MzZjZDk3ODYwNjAzMTc5MTQzOWM3ZGMyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlN1Y2Nlc3NPci5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCBiYzcxNWVlODQ1ZWNhYjAy
ZmQ5MTNiZjRjMWE3YWE5OWExODBjZGNiLi4yMDk4M2I1YzIxNDQ2MjhlZTYzZDU4N2RlMTcxZjU4
MTk3MWEwZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlp
bmdJbmZvLmgKQEAgLTI2LDEwICsyNiw1NSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJN
ZWRpYVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKKyAgICBTdHJpbmcg
c3JjOworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3Jr
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpcyAhPSBvdGhlcjsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcmMgIT0gb3RoZXIuc3JjIHx8IG1p
bWVUeXBlICE9IG90aGVyLm1pbWVUeXBlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxh
eWluZ0luZm9BcnR3b3JrOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHNyYyA8PCBtaW1lVHlwZSA8PCBpbWFnZURhdGE7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1Bs
YXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5n
IHNyYzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNyYykpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlw
ZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7IFdURk1vdmUoc3Jj
KSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUoaW1hZ2VEYXRhKSB9OworfQorCiBzdHJ1Y3Qg
Tm93UGxheWluZ0luZm8gewogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcgYXJ0aXN0OwpA
QCAtNDEsNiArODYsNyBAQCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgIE1lZGlhU2Vzc2lv
bklkZW50aWZpZXIgdW5pcXVlSWRlbnRpZmllcjsKICAgICBib29sIGlzUGxheWluZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IHsgZmFsc2Ug
fTsKKyAgICBPcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGFydHdvcms7CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsK
QEAgLTUzLDEwICs5OSwxMSBAQCBzdHJ1Y3QgTm93UGxheWluZ0luZm8gewogICAgICAgICAgICAg
JiYgc3VwcG9ydHNTZWVraW5nID09IG90aGVyLnN1cHBvcnRzU2Vla2luZwogICAgICAgICAgICAg
JiYgdW5pcXVlSWRlbnRpZmllciA9PSBvdGhlci51bmlxdWVJZGVudGlmaWVyCiAgICAgICAgICAg
ICAmJiBpc1BsYXlpbmcgPT0gb3RoZXIuaXNQbGF5aW5nCi0gICAgICAgICAgICAmJiBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5ID09IG90aGVyLmFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHk7CisgICAgICAgICAgICAmJiBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNW
aXNpYmlsaXR5ID09IG90aGVyLmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkKKyAg
ICAgICAgICAgICYmIGFydHdvcmsgPT0gb3RoZXIuYXJ0d29yazsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8gb3RoZXIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CkBAIC02Nyw3ICsxMTQsNyBAQCBz
dHJ1Y3QgTm93UGxheWluZ0luZm8gewogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUg
dm9pZCBOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwgYWxidW0gPDwgc291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vla2lu
ZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29u
dHJvbHNWaXNpYmlsaXR5OworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYXJ0aXN0IDw8IGFsYnVt
IDw8IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciA8PCBkdXJhdGlvbiA8PCBjdXJyZW50VGlt
ZSA8PCBzdXBwb3J0c1NlZWtpbmcgPDwgdW5pcXVlSWRlbnRpZmllciA8PCBpc1BsYXlpbmcgPDwg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA8PCBhcnR3b3JrOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1Bs
YXlpbmdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTExMiw3ICsxNTksMTEgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBO
b3dQbGF5aW5nSW5mbzo6ZGVjb2RlKEQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93c05v
d1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
cmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwg
V1RGTW92ZShhbGJ1bSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVy
YXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlz
UGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGFydHdvcmspKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE5vd1BsYXlp
bmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoYXJ0aXN0KSwgV1RGTW92ZShhbGJ1bSks
IFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRU
aW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSwgV1RGTW92ZShhcnR3b3JrKSB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
Yzc2NTI1OWVjMzFmNDRkYzFkMGJhZGFmMmNkZGViNDE3ZWM3OTljNy4uMTE2YTkxZTZlNzNhYzEy
OTZiYjA0MGRhMDk1OGM5YTJiNzJkOGVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiTm93UGxheWluZ0luZm8uaCIKICNpbXBvcnQg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiVlA5VXRpbGl0aWVzQ29jb2EuaCIK
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KQEAgLTMwNyw2ICszMDgsMTEgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAg
ICAgYXV0byBjZkN1cnJlbnRUaW1lID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbm93UGxheWluZ0luZm8uY3VycmVudFRp
bWUpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAg
ICB9CisgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmspIHsKKyAgICAgICAgYXV0byBuc0Fy
dHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CisgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIH0KIAogICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3Rl
X01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbigpICYmICFub3dQbGF5aW5nSW5mby5z
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICBNUk1lZGlhUmVt
b3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIG5v
d1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKQEAgLTM3MSw3ICszNzcsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogICAgIGlmIChtX25vd1BsYXlpbmdJbmZvICE9IG5v
d1BsYXlpbmdJbmZvKSB7CiAgICAgICAgIG1fbm93UGxheWluZ0luZm8gPSBub3dQbGF5aW5nSW5m
bzsKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5zZXROb3dQ
bGF5aW5nSW5mbyghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sICpub3dQbGF5
aW5nSW5mbyk7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIi
LCBub3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0lu
Zm8tPmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24s
ICIsIG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQ
bGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0g
IiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pOworICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8tPnRpdGxlLCAi
XCIsIGlzUGxheWluZyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIsIGR1cmF0aW9u
ID0gIiwgbm93UGxheWluZ0luZm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQbGF5aW5nSW5m
by0+Y3VycmVudFRpbWUsICIsIGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1ZUlkZW50aWZp
ZXIudG9VSW50NjQoKSwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJlZEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uLCAiLCBzcmMgPSBcIiIsIG5vd1BsYXlpbmdJbmZvLT5hcnR3b3JrID8gbm93
UGxheWluZ0luZm8tPmFydHdvcmstPnNyYyA6IFN0cmluZygpLCAiXCIiKTsKICAgICB9CiAKICAg
ICBpZiAoIW1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODUwYzVmNjViNzMyNDE1ZWQ0OTI2YWY3NzYzMzAz
Njg4YTM3ZjJiYS4uZDAzODc2OGE4OGRhZWJlYzlkNjE2YmIyMTYyMGU2ZWNmODBhZmMzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI4LDYgKzEyOCw3IEBACiAjaW5j
bHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIk1lZGlh
S2V5U2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorI2luY2x1ZGUgIk1lZGlhTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVj
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCIKQEAgLTQ4Niw2ICs0ODcs
MTAgQEAgSW50ZXJuYWxzOjp+SW50ZXJuYWxzKCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHN0b3BPYnNlcnZpbmdSZWFsdGltZU1lZGlhU291cmNlKCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKKyAgICBpZiAobV9hcnR3b3JrSW1hZ2VQcm9taXNlKQorICAgICAg
ICBtX2FydHdvcmtJbWFnZVByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9KTsKKyNlbmRpZgogfQogCiB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZShQYWdlJiBwYWdlKQpAQCAtNTI1Miw3ICs1MjU3LDcgQEAgdm9pZCBJbnRlcm5hbHM6Om9i
c2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogCiB2b2lkIElu
dGVybmFsczo6Z3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUoVHJhY2tGcmFtZVByb21pc2Um
JiBwcm9taXNlKQogewotICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlID0gV1RGOjptYWtlVW5p
cXVlPFRyYWNrRnJhbWVQcm9taXNlPihwcm9taXNlKTsKKyAgICBtX25leHRUcmFja0ZyYW1lUHJv
bWlzZSA9IG1ha2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOwog
fQogCiB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSkKQEAgLTYwODEsNiArNjA4NiwzMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6
OnNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAg
IH0KICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIH0KKwordm9p
ZCBJbnRlcm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJiYgdXJsLCBBcnR3b3JrSW1hZ2VQ
cm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gZG9j
dW1lbnQuIiB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9hcnR3b3JrSW1h
Z2VQcm9taXNlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGluZy4iIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VV
bmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9hcnR3
b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250ZXh0RG9jdW1l
bnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CisgICAgICAgIGlmIChpbWFnZSkgewor
ICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZChp
bWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAgICAgICAgICAg
aWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgbV9hcnR3b3Jr
SW1hZ2VQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2Ut
PnJlamVjdChpbWFnZURhdGEuZXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IsICJObyBpbWFnZSByZXRyaWV2ZS4iICB9KTsKKyAgICAgICAgbV9hcnR3
b3JrSW1hZ2VQcm9taXNlID0gbnVsbHB0cjsKKyAgICB9KTsKKyAgICBtX2FydHdvcmtMb2FkZXIt
PnJlcXVlc3RJbWFnZVJlc291cmNlKCk7Cit9CisKICNlbmRpZgogCiBjb25zdGV4cHIgQVNDSUlM
aXRlcmFsIHN0cmluZyhQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBjMjgyYzM0MTVjNzg5ODY3MmIyYWNiZWM3N2EzN2Y0NzFhNTQ4MTE4
Li42MGVjYzQ4OGI0MzIwNzdlYjJlMzYxMmMwNmZiNGU5OGRhNmFkNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBYnN0cmFjdFJhbmdlOwogY2xhc3MgQW5pbWF0aW9uVGltZWxpbmU7CitjbGFzcyBB
cnR3b3JrSW1hZ2VMb2FkZXI7CiBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb1RyYWNr
OwogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKQEAgLTEwOTIsNiArMTA5Myw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBFeGNlcHRpb25Pcjxkb3VibGU+
IGN1cnJlbnRNZWRpYVNlc3Npb25Qb3NpdGlvbihjb25zdCBNZWRpYVNlc3Npb24mKTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYsIGNv
bnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmKTsKKyAgICB1c2luZyBBcnR3b3JrSW1hZ2VQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxJbWFnZURhdGE+PjsKKyAg
ICB2b2lkIGxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJiYsIEFydHdvcmtJbWFnZVByb21pc2UmJik7
CiAjZW5kaWYKIAogICAgIGVudW0gVHJlZVR5cGUgOiB1aW50OF90IHsgVHJlZSwgU2hhZG93SW5j
bHVkaW5nVHJlZSwgQ29tcG9zZWRUcmVlIH07CkBAIC0xMTI1LDcgKzExMjgsMTAgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV90cmFja1NvdXJjZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhY2tGcmFtZVByb21pc2U+IG1fbmV4dFRyYWNrRnJhbWVQcm9taXNl
OwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJ0d29ya0ltYWdlTG9hZGVyPiBtX2FydHdvcmtMb2FkZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFydHdvcmtJbWFnZVByb21pc2U+IG1fYXJ0d29ya0ltYWdlUHJvbWlzZTsKKyNlbmRpZgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJv
bnRlbmQ7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg5Y2Ux
MmQwYzM1YTJhZTMzM2FhNDFiZDliMmU3NWRkNjgxMWNiYmEuLmY2OTcyNTI5YjlkMjYwNjYwNjk4
NTFjMjUwNDlmY2YwZmEwMDQyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTk4OSw3ICs5ODksOCBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIFtDb25kaXRpb25hbD1N
RURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0gZG91YmxlIGN1cnJlbnRNZWRpYVNlc3Np
b25Qb3NpdGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbik7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElB
X1NFU1NJT04sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvbkFj
dGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbiwgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rp
b25EZXRhaWxzKTsKLQorICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBQcm9taXNlPElt
YWdlRGF0YT4gbG9hZEFydHdvcmtJbWFnZShET01TdHJpbmcgdXJsKTsKKyAgICAKICAgICBET01T
dHJpbmcgdHJlZU9yZGVyKE5vZGUgYSwgTm9kZSBiLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0g
IlRyZWUiKTsKICAgICBET01TdHJpbmcgdHJlZU9yZGVyQm91bmRhcnlQb2ludHMoTm9kZSBjb250
YWluZXJBLCB1bnNpZ25lZCBsb25nIG9mZnNldEEsIE5vZGUgY29udGFpbmVyQiwgdW5zaWduZWQg
bG9uZyBvZmZzZXRCLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKICAgICBib29s
ZWFuIHJhbmdlQ29udGFpbnNOb2RlKEFic3RyYWN0UmFuZ2UgcmFuZ2UsIE5vZGUgbm9kZSwgb3B0
aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Y4YTllMGY2ZDZhYzZjOGU4
YzAwNTUxZGJkNjNiYmMwNTkwN2MwMi4uNjEyNWY1MzM0MDVmOGI1YzE4OTY0ZmZlOTY5NDdjNTJh
ZDBhOWZhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTE1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNzaW9uIGltYWdl
IGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0
YS9hcnR3b3JrZG93bmxvYWQuaHRtbDogQWRkZWQuCisKIDIwMjEtMDMtMTQgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50IGR5bmFtaWMgaW1wb3J0
IGluIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vz
c2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZWY5MGNlOGU1ZTU5MDFkN2QxZjM2ZDQ0ODE4ZDgzMjA1MzI2ZDIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0
d29ya2Rvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBlbnN1cmUg
bG9hZGluZyBhcnR3b3JrIGltYWdlIG1ldGhvZCBvcGVyYXRlcyBwcm9wZXJseQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxv
YWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtk
b3dubG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYzllN2JiNTQ4ZDhhNmVkNTU5ZGQ5NDI3ODViZTJj
NDE4NmNiNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lv
bi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorCitjb25zdCBJ
TUFHRV9TUkMgPSAnLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy90ZXN0LWxvYWQuanBnJzsKKworcHJv
bWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAgIGVsc2UgeworICAgICAgICB2
YXIgcHJvbWlzZSA9IGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKElNQUdFX1NSQykudGhlbigo
ZGF0YSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkYXRhLndpZHRoLCAxNik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRhdGEuaGVpZ2h0LCAxNik7CisgICAgICAgIH0pOzsK
KyAgICB9CisgICAgcmV0dXJuIHByb21pc2U7Cit9LCAiZW5zdXJlIGxvYWRpbmcgYXJ0d29yayBp
bWFnZSBtZXRob2Qgb3BlcmF0ZXMgcHJvcGVybHkiKTsKKworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423421</attachid>
            <date>2021-03-16 18:37:06 -0700</date>
            <delta_ts>2021-03-17 13:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223118-20210317123704.patch</filename>
            <type>text/plain</type>
            <size>29310</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU0MTM1MWY1MjlkMmY4
NGZjOWJjZDllZjVkMjBjNjYwNjFiOGY2Ny4uNmUwNTc3ZGM2MGIyOWZiYTU4ZGM2NzJjYjdlYTgz
YmEwY2UwNjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTAzLTE1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNz
aW9uIGltYWdlIGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdv
cmtkb3dubG9hZC5odG1sCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZCBmb3IgTm93IFBsYXlpbmcg
c3lzdGVtIGludGVncmF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6OkFy
dHdvcmtJbWFnZUxvYWRlcik6IEltcGxlbWVudGF0aW9uIG9mIG5ldyBBcnR3b3JrSW1hZ2VMb2Fk
ZXIgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6On5BcnR3b3Jr
SW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpyZXF1
ZXN0SW1hZ2VSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldE1l
ZGlhU2Vzc2lvbik6IAorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6cmVzZXRNZWRp
YVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYU1ldGFkYXRhOjpyZWZyZXNoQXJ0d29ya0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmtJbWFnZSk6IE1ha2Ug
dXNlIG9mIG5ldyBBcnR3b3JrSW1hZ2VMb2FkZXIgY2xhc3MuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oOiBBZGQgbmV3IEFydHdvcmtJbWFnZUxvYWRlciBj
bGFzcy4gQWxsb3dzIHRvIGRvd25sb2FkIGZyb20gYSBnaXZlbiBVUkwgaW4gcmVsYXRpb24gdG8g
YSBnaXZlbiBEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTWV0YWRhdGE6OmFydHdv
cmtTcmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFNZXRhZGF0YTo6YXJ0d29ya0lt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjpzZXRBY3Rpb25IYW5kbGVyKTog
Zml4IHdoaXRlc3BhY2UgKGF1dG9tYXRpYykuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmRvY3VtZW50IGNvbnN0KTogQWRkIG1ldGhvZCwgdXNlZCBieSBNZWRpYU1ldGFkYXRhCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICog
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KTogZml4IHdo
aXRlc3BhY2UgKGF1dG9tYXRpYykuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQpOiBmaXggd2hpdGVzcGFjZSAoYXV0b21hdGljKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRpZFJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZCk6IGZpeCB3aGl0ZXNwYWNlIChhdXRvbWF0aWMpLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8gY29uc3QpOiBBZGQgYXJ0d29y
ayB0byBOb3dQbGF5aW5nSW5mbyBzdHJ1Y3QuCisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6IEFkZCBtZXRob2QsIHVzZWQgYnkgTWVkaWFNZXRhZGF0YQorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6IEFkZCBOb3dQbGF5aW5nSW5mb0FydHdvcmsg
c3RydWN0LgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm9BcnR3b3JrOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0FydHdvcms6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mb0FydHdvcms6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbTogQWRkIGFydHdvcmsg
aW1hZ2UgdG8gQ0ZEaWN0aW9uYXJ5CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDogQWRkIHByaXZhdGUgaW50ZXJmYWNlIHRvIHRlc3QgQXJ0d29ya0lt
YWdlTG9hZGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp+SW50ZXJuYWxz
KTogUmVqZWN0IHBlbmRpbmcgQXJ0d29ya0ltYWdlTG9hZGVyIHByb21pc2UgaWYgYW55LgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSk6
IEFkZCBtaXNzaW5nIG1vdmUuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxvYWRBcnR3
b3JrSW1hZ2UpOiBOZXcgbWV0aG9kIHRvIGxvYWQgYW4gaW1hZ2UuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDogTmV3IG1ldGhvZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6IE5ldyBtZXRob2QuCisKIDIwMjEtMDMtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBCZSBtb3JlIHJlc3RyaWN0aXZlIGFib3V0IHdoZW4g
Y2FudmFzMmQgaXMgYWxsb3dlZCB0byB1cGRhdGUgc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggZjZmZjMx
ZmIwOGRkNDk4MWEzYmNlOTAzOTJiZGJkMmNkYTVmY2RiNi4uMzEzZDc1YjE3MDE3YjIxOTdlYzBk
MDA1ZmM3OTU4YjU1M2MxODQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTI4LDEzICsyOCw1MCBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk1lZGlhSW1hZ2UuaCIKICNpbmNsdWRlICJNZWRp
YU1ldGFkYXRhSW5pdC5oIgorI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQXJ0d29ya0ltYWdlTG9hZGVy
OjpBcnR3b3JrSW1hZ2VMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNy
YywgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCisgICAgLCBtX3NyYyhzcmMpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spKQoreworfQorCitBcnR3b3JrSW1hZ2VMb2FkZXI6On5BcnR3b3JrSW1hZ2VMb2Fk
ZXIoKQoreworICAgIGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOworfQorCit2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6cmVxdWVz
dEltYWdlUmVzb3VyY2UoKQoreworICAgIEFTU0VSVCghbV9jYWNoZWRJbWFnZSwgIkNhbiBvbmx5
IGNhbGwgcmVxdWVzdEltYWdlUmVzb3VyY2Ugb25jZSIpOworICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24g
PSBtX2RvY3VtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkgPyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KG1fZG9jdW1lbnQuY29tcGxldGVVUkwobV9zcmMpKSwgb3B0
aW9ucyk7CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9kb2N1bWVudC5kb2N1bWVudFVSSSgp
KTsKKyAgICBtX2NhY2hlZEltYWdlID0gbV9kb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKKworICAg
IGlmIChtX2NhY2hlZEltYWdlKQorICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQoKnRo
aXMpOworfQorCit2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX2NhY2hlZEltYWdlKTsKKyAgICBt
X2NhbGxiYWNrKG1fY2FjaGVkSW1hZ2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkgPyBudWxscHRy
IDogbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSk7Cit9CisKIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1l
dGFkYXRhPj4gTWVkaWFNZXRhZGF0YTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIE9wdGlvbmFsPE1lZGlhTWV0YWRhdGFJbml0PiYmIGluaXQpCiB7CiAgICAgYXV0byBt
ZXRhZGF0YSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFNZXRhZGF0YSk7CkBAIC01NSwxMSArOTIsMTQg
QEAgTWVkaWFNZXRhZGF0YTo6fk1lZGlhTWV0YWRhdGEoKSA9IGRlZmF1bHQ7CiB2b2lkIE1lZGlh
TWV0YWRhdGE6OnNldE1lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAg
bV9zZXNzaW9uID0gbWFrZVdlYWtQdHIoc2Vzc2lvbik7CisgICAgcmVmcmVzaEFydHdvcmtJbWFn
ZSgpOwogfQogCiB2b2lkIE1lZGlhTWV0YWRhdGE6OnJlc2V0TWVkaWFTZXNzaW9uKCkKIHsKICAg
ICBtX3Nlc3Npb24uY2xlYXIoKTsKKyAgICBtX2FydHdvcmtMb2FkZXIgPSBudWxscHRyOworICAg
IG1fYXJ0d29ya0ltYWdlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBNZWRpYU1ldGFkYXRhOjpzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTAxLDEwICsxNDEsMzYgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFNZXRhZGF0YTo6c2V0QXJ0d29yayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWMKICAgICB9CiAKICAgICBtX21ldGFkYXRhLmFydHdvcmsgPSBXVEZNb3Zl
KHJlc29sdmVkQXJ0d29yayk7CisKKyAgICByZWZyZXNoQXJ0d29ya0ltYWdlKCk7CisKICAgICBt
ZXRhZGF0YVVwZGF0ZWQoKTsKICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIE1lZGlhTWV0YWRh
dGE6OnJlZnJlc2hBcnR3b3JrSW1hZ2UoKQoreworICAgIGNvbnN0IGF1dG8mIG1lZGlhSW1hZ2Vz
ID0gbV9tZXRhZGF0YS5hcnR3b3JrOworICAgIGlmIChtZWRpYUltYWdlcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgbV9hcnR3b3JrTG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIW1fc2Vzc2lvbiB8fCAhbV9zZXNzaW9uLT5kb2N1bWVudCgpIHx8IG1lZGlh
SW1hZ2VzWzBdLnNyYyA9PSBtX2FydHdvcmtJbWFnZVNyYykKKyAgICAgICAgcmV0dXJuOworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgYSBoZXVyaXN0aWMgdG8gcmV0cmlldmUgdGhlICJiZXN0IiBp
bWFnZS4KKyAgICBtX2FydHdvcmtJbWFnZVNyYyA9IG1lZGlhSW1hZ2VzWzBdLnNyYzsKKyAgICBt
X2FydHdvcmtMb2FkZXIgPSBtYWtlVW5pcXVlPEFydHdvcmtJbWFnZUxvYWRlcj4oKm1fc2Vzc2lv
bi0+ZG9jdW1lbnQoKSwgbV9hcnR3b3JrSW1hZ2VTcmMsIFt0aGlzXShJbWFnZSogaW1hZ2UpIHsK
KyAgICAgICAgc2V0QXJ0d29ya0ltYWdlKGltYWdlKTsKKyAgICAgICAgbWV0YWRhdGFVcGRhdGVk
KCk7CisgICAgfSk7CisgICAgbV9hcnR3b3JrTG9hZGVyLT5yZXF1ZXN0SW1hZ2VSZXNvdXJjZSgp
OworfQorCit2b2lkIE1lZGlhTWV0YWRhdGE6OnNldEFydHdvcmtJbWFnZShJbWFnZSogaW1hZ2Up
Cit7CisgICAgbV9hcnR3b3JrSW1hZ2UgPSBpbWFnZTsKK30KKwogdm9pZCBNZWRpYU1ldGFkYXRh
OjptZXRhZGF0YVVwZGF0ZWQoKQogewogICAgIGlmIChtX3Nlc3Npb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmgKaW5kZXggMzBl
MDkzZDZkMjdkZGI3NDE1MjgxZWU4YjVkMTAwNGVmY2ZhYTVkYS4uZjM4MTBiN2UxOTc1ZjZmZDA4
MWE5ZjZkNzYxMDVlYjAyYjNkMTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuaApAQCAtMjcsMTggKzI3LDQ1IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50Lmgi
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFk
YXRhSW5pdC5oIgogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENhY2hlZEltYWdlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBJbWFnZTsKIHN0cnVjdCBN
ZWRpYUltYWdlOwogCiB1c2luZyBNZWRpYVNlc3Npb25NZXRhZGF0YSA9IE1lZGlhTWV0YWRhdGFJ
bml0OwogCitjbGFzcyBBcnR3b3JrSW1hZ2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgQ2FjaGVkSW1h
Z2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVz
aW5nIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChJbWFnZSopPjsK
KyAgICAvLyBUaGUgY2FsbGJhY2sgd2lsbCBvbmx5IGJlIGNhbGxlZCB1cG9uIHN1Y2Nlc3Mgb3Ig
ZXhwbGljaXQgZmFpbHVyZSB0byByZXRyaWV2ZSB0aGUgaW1hZ2UuIElmIHRoZSBvcGVyYXRpb24g
aXMgaW50ZXJydXB0ZWQgZm9sbG93aW5nIHRoZQorICAgIC8vIGRlc3RydWN0aW9uIG9mIHRoZSBB
cnR3b3JrSW1hZ2VMb2FkZXIsIHRoZSBjYWxsYmFjayB3b24ndCBiZSBjYWxsZWQuCisgICAgV0VC
Q09SRV9FWFBPUlQgQXJ0d29ya0ltYWdlTG9hZGVyKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBz
cmMsIEFydHdvcmtJbWFnZUxvYWRlckNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5B
cnR3b3JrSW1hZ2VMb2FkZXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdElt
YWdlUmVzb3VyY2UoKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKworcHJp
dmF0ZToKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBjb25zdCBTdHJpbmcgbV9zcmM7
CisgICAgQXJ0d29ya0ltYWdlTG9hZGVyQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKK307CisKIGNsYXNzIE1l
ZGlhTWV0YWRhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYU1ldGFkYXRhPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYU1ldGFkYXRhPj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxNZWRpYU1ldGFkYXRhSW5pdD4mJik7CkBAIC01
OSwxNCArODYsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxNZWRpYUltYWdlPiYgYXJ0
d29yaygpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXJ0d29yazsgfQogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldEFydHdvcmsoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxNZWRp
YUltYWdlPiYmKTsKIAorICAgIGNvbnN0IFN0cmluZyYgYXJ0d29ya1NyYygpIGNvbnN0IHsgcmV0
dXJuIG1fYXJ0d29ya0ltYWdlU3JjOyB9CisgICAgUmVmUHRyPEltYWdlPiBhcnR3b3JrSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2FydHdvcmtJbWFnZTsgfQorCiAgICAgY29uc3QgTWVkaWFTZXNz
aW9uTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCiBw
cml2YXRlOgogICAgIE1lZGlhTWV0YWRhdGEoKTsKKyAgICB2b2lkIHNldEFydHdvcmtJbWFnZShJ
bWFnZSopOwogICAgIHZvaWQgbWV0YWRhdGFVcGRhdGVkKCk7CisgICAgdm9pZCByZWZyZXNoQXJ0
d29ya0ltYWdlKCk7CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAg
IE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFy
dHdvcmtJbWFnZUxvYWRlcj4gbV9hcnR3b3JrTG9hZGVyOworICAgIFN0cmluZyBtX2FydHdvcmtJ
bWFnZVNyYzsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fYXJ0d29ya0ltYWdlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKaW5kZXggOTAxZGRiMGE3YjRmZTllOTM2M2U1ZmYzMWYyZWFiNDdhOWQzNjQ4ZC4uMzJiMDhl
MWE3MWRlOTQzMGQxMjIwZTBiZTZhMjFjZDhlMmI1NzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAorI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYU1ldGFkYXRhLmgiCiAj
aW5jbHVkZSAiTmF2aWdhdG9yLmgiCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b246OnNldEFjdGlvbkhhbmRsZXIoTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbiwgUmVmUHRyPE1l
ZGlhU2Vzc2kKICAgICAgICAgfQogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVTdXBwb3J0ZWRDb21tYW5kKHBsYXRmb3JtQ29tbWFuZEZv
ck1lZGlhU2Vzc2lvbkFjdGlvbihhY3Rpb24pKTsKICAgICB9Ci0gICAgCisKICAgICBhY3Rpb25I
YW5kbGVyc1VwZGF0ZWQoKTsKIH0KIApAQCAtMTc1LDYgKzE3NiwxMyBAQCBPcHRpb25hbDxkb3Vi
bGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
OjptYXgoMC4sIHN0ZDo6bWluKCptX2xhc3RSZXBvcnRlZFBvc2l0aW9uICsgZWxhcHNlZFRpbWUu
dmFsdWUoKSwgbV9wb3NpdGlvblN0YXRlLT5kdXJhdGlvbikpOwogfQogCitEb2N1bWVudCogTWVk
aWFTZXNzaW9uOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hdmlnYXRvciB8fCAh
bV9uYXZpZ2F0b3ItPndpbmRvdygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gbV9uYXZpZ2F0b3ItPndpbmRvdygpLT5kb2N1bWVudCgpOworfQorCiB2b2lkIE1lZGlhU2Vz
c2lvbjo6bWV0YWRhdGFVcGRhdGVkKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNGY0YmU0NzcyNjQ0MDg2Yjc3
ZDYxZDlmNWIwODIzYTE1ZDA1MDU2OS4uNzY3MmUzMmZjNzA2ZTM3ODExNmQ1ZWY3MzU0MmIxZGNm
M2ZhYjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhTWV0YWRhdGE7CiBjbGFzcyBOYXZpZ2F0b3I7
CiAKQEAgLTYwLDYgKzYxLDggQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBv
c2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxkb3VibGU+IGN1cnJlbnRQb3NpdGlvbigpIGNvbnN0OwogCisgICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgCiAgICAgdm9pZCBtZXRhZGF0YVVwZGF0
ZWQoKTsKIAogICAgIHZvaWQgYWN0aW9uSGFuZGxlcnNVcGRhdGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwNzNlNDYyYWE4MmYxNzM0YTEx
MGIwZDU5MWIwMGMyYjNiMDM3ZTA4Li5kMmM1YTkzYTVmOGVkMmM2YTE0N2NmMGE5YjJiZTVmMDk0
MjYyYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAK
QEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIAogICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5ZXIt
PndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgInJldHVybmluZyAiLCBkaXNhYmxlZCwgIiBiZWNhdXNlIG1lZGlhIGVuZ2luZSBzYXlz
IHNvIik7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJsZWQ7CiB9CiAKQEAgLTgxMiw3ICs4MTIs
NyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCgpCiAgICAg
aWYgKG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHRydWUpOwogI2VuZGlmCi0gICAgCisKIH0KIAogdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKQEAgLTEw
ODgsNyArMTA4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKGF1
dG8gaGFuZGxlciA9IHNlc3Npb24tPmhhbmRsZXJGb3JBY3Rpb24oYWN0aW9uRGV0YWlscy5hY3Rp
b24pKQogICAgICAgICBoYW5kbGVyLT5oYW5kbGVFdmVudChhY3Rpb25EZXRhaWxzKTsKICAgICBl
bHNlCkBAIC0xMTEwLDExICsxMTEwLDE3IEBAIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRp
YUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiAjaWYgRU5BQkxFKE1FRElB
X1NFU1NJT04pCiAgICAgYXV0byogd2luZG93ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuZG9tV2lu
ZG93KCk7CiAgICAgYXV0byogc2Vzc2lvbk1ldGFkYXRhID0gd2luZG93ID8gTmF2aWdhdG9yTWVk
aWFTZXNzaW9uOjptZWRpYVNlc3Npb24od2luZG93LT5uYXZpZ2F0b3IoKSkubWV0YWRhdGEoKSA6
IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Npb25NZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIE5vd1Bs
YXlpbmdJbmZvIHsgc2Vzc2lvbk1ldGFkYXRhLT50aXRsZSgpLCBzZXNzaW9uTWV0YWRhdGEtPmFy
dGlzdCgpLCBzZXNzaW9uTWV0YWRhdGEtPmFsYnVtKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcs
IG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworICAgIGlmIChzZXNzaW9uTWV0YWRh
dGEpIHsKKyAgICAgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBhcnR3b3JrOwor
ICAgICAgICBpZiAoc2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrSW1hZ2UoKSkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IE9wdGltaXplIHNvIHRoYXQgd2Ugb25seSBzZW5kIGFuIGltYWdlIGlmIGl0
IGNoYW5nZXMuCisgICAgICAgICAgICBhcnR3b3JrID0gTm93UGxheWluZ0luZm9BcnR3b3JrIHsg
c2Vzc2lvbk1ldGFkYXRhLT5hcnR3b3JrU3JjKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0lt
YWdlKCktPm1pbWVUeXBlKCksIHNlc3Npb25NZXRhZGF0YS0+YXJ0d29ya0ltYWdlKCktPmRhdGEo
KSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IHNlc3Npb25N
ZXRhZGF0YS0+dGl0bGUoKSwgc2Vzc2lvbk1ldGFkYXRhLT5hcnRpc3QoKSwgc2Vzc2lvbk1ldGFk
YXRhLT5hbGJ1bSgpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1
cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1lbnQubWVkaWFTZXNz
aW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9s
c1Zpc2liaWxpdHksIFdURk1vdmUoYXJ0d29yaykgfTsKKyAgICB9CiAjZW5kaWYKIAotICAgIHJl
dHVybiBOb3dQbGF5aW5nSW5mbyB7IG1fZWxlbWVudC5tZWRpYVNlc3Npb25UaXRsZSgpLCBlbXB0
eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBtX2VsZW1lbnQuc291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCBtX2VsZW1l
bnQubWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpLCBpc1BsYXlpbmcsIGFsbG93c05vd1Bs
YXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBt
X2VsZW1lbnQubWVkaWFTZXNzaW9uVGl0bGUoKSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmco
KSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBkdXJhdGlvbiwgY3Vy
cmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlk
ZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5
LCB7IH19OwogfQogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnVwZGF0ZU1lZGlhVXNhZ2VJ
ZkNoYW5nZWQoKQpAQCAtMTE5NCw3ICsxMjAwLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGNvbnN0IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24gZW51bWVyYXRpb25WYWwK
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9B
UlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KLSAgICAKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1
M2JlZTVhMjZmYTJiNGYyNjE1Y2MzOTZkZWY1ZTk1MjNlMzc2YmZlLi5jNzMxOWIxOTc0NmNkNDcz
NmNkOTc4NjA2MDMxNzkxNDM5YzdkYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCmluZGV4IGJjNzE1ZWU4NDVlY2FiMDJmZDkxM2JmNGMxYTdhYTk5YTE4MGNk
Y2IuLjIwOTgzYjVjMjE0NDYyOGVlNjNkNTg3ZGUxNzFmNTgxOTcxYTBlMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMjYsMTAgKzI2
LDU1IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBO
b3dQbGF5aW5nSW5mb0FydHdvcmsgeworICAgIFN0cmluZyBzcmM7CisgICAgU3RyaW5nIG1pbWVU
eXBlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICp0aGlzICE9IG90aGVyOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHNyYyAhPSBvdGhlci5zcmMgfHwgbWltZVR5cGUgIT0gb3RoZXIubWltZVR5
cGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5aW5nSW5mb0FydHdvcms6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3JjIDw8IG1pbWVU
eXBlIDw8IGltYWdlRGF0YTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luZm9BcnR3b3JrOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgc3JjOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3JjKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFN0cmluZyBtaW1lVHlw
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGltYWdlRGF0YSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4g
Tm93UGxheWluZ0luZm9BcnR3b3JrIHsgV1RGTW92ZShzcmMpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V1RGTW92ZShpbWFnZURhdGEpIH07Cit9CisKIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAg
U3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyBhcnRpc3Q7CkBAIC00MSw2ICs4Niw3IEBAIHN0cnVj
dCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgTWVkaWFTZXNzaW9uSWRlbnRpZmllciB1bmlxdWVJZGVu
dGlmaWVyOwogICAgIGJvb2wgaXNQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93c05v
d1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPE5vd1Bs
YXlpbmdJbmZvQXJ0d29yaz4gYXJ0d29yazsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBO
b3dQbGF5aW5nSW5mbyYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNTMsMTAgKzk5LDExIEBAIHN0
cnVjdCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgICAgICAgICAmJiBzdXBwb3J0c1NlZWtpbmcgPT0g
b3RoZXIuc3VwcG9ydHNTZWVraW5nCiAgICAgICAgICAgICAmJiB1bmlxdWVJZGVudGlmaWVyID09
IG90aGVyLnVuaXF1ZUlkZW50aWZpZXIKICAgICAgICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhl
ci5pc1BsYXlpbmcKLSAgICAgICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkgPT0gb3RoZXIuYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICAg
ICAgICAgICYmIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPT0gb3RoZXIuYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eQorICAgICAgICAgICAgJiYgYXJ0d29yayA9
PSBvdGhlci5hcnR3b3JrOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb3dQ
bGF5aW5nSW5mbyBvdGhlcikgY29uc3QKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxh
eWluZ0luZm8mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwogICAgIH0KQEAgLTY3LDcgKzExNCw3IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mbyB7
CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8
IGFydGlzdCA8PCBhbGJ1bSA8PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRp
b24gPDwgY3VycmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIg
PDwgaXNQbGF5aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAg
ZW5jb2RlciA8PCB0aXRsZSA8PCBhcnRpc3QgPDwgYWxidW0gPDwgc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8
PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5IDw8IGFydHdvcms7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlu
bGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWluZ0luZm86OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtMTEyLDcgKzE1OSwxMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUo
RAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJp
bGl0eSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gTm93UGxheWluZ0luZm8g
eyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92
ZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1
cHBvcnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CisgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3
b3JrPiBhcnR3b3JrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJ0d29yaykpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxl
KSwgV1RGTW92ZShhcnRpc3QpLCBXVEZNb3ZlKGFsYnVtKSwgV1RGTW92ZShzb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBvcnRzU2Vla2luZywg
dW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNp
YmlsaXR5LCBXVEZNb3ZlKGFydHdvcmspIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBjNzY1MjU5ZWMzMWY0NGRjMWQwYmFk
YWYyY2RkZWI0MTdlYzc5OWM3Li42ZjY3MzgxMzBmZTExNmQ4NDcwODA4ODMzZjNjNzdmZGFkNWJj
NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiAj
aW1wb3J0ICJOb3dQbGF5aW5nSW5mby5oIgogI2ltcG9ydCAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVy
LmgiCiAjaW1wb3J0ICJWUDlVdGlsaXRpZXNDb2NvYS5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzA3LDYgKzMwOCwx
MyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9v
bCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkpOwogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxh
cHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KKyAgICBpZiAobm93UGxheWlu
Z0luZm8uYXJ0d29yaykgeworICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG9ubHkgcGFzcyBh
IGRlY29tcHJlc3NlZCBpbWFnZSBoZXJlIGFuZCBoYXZlIHRoZSBkZWNvbXByZXNzaW9uIHBlcmZv
cm1lZCBpbiB0aGUgd2ViY29udGVudCBwcm9jZXNzLgorICAgICAgICAvLyBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzI5MC4KKyAgICAgICAgYXV0byBuc0Fy
dHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CisgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIH0KIAogICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3Rl
X01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbigpICYmICFub3dQbGF5aW5nSW5mby5z
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICBNUk1lZGlhUmVt
b3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIG5v
d1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKQEAgLTM3MSw3ICszNzksNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogICAgIGlmIChtX25vd1BsYXlpbmdJbmZvICE9IG5v
d1BsYXlpbmdJbmZvKSB7CiAgICAgICAgIG1fbm93UGxheWluZ0luZm8gPSBub3dQbGF5aW5nSW5m
bzsKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5zZXROb3dQ
bGF5aW5nSW5mbyghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sICpub3dQbGF5
aW5nSW5mbyk7Ci0gICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIi
LCBub3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0lu
Zm8tPmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24s
ICIsIG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQ
bGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllci50b1VJbnQ2NCgpLCAiLCByZWdpc3RlcmVkID0g
IiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pOworICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8tPnRpdGxlLCAi
XCIsIGlzUGxheWluZyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIsIGR1cmF0aW9u
ID0gIiwgbm93UGxheWluZ0luZm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQbGF5aW5nSW5m
by0+Y3VycmVudFRpbWUsICIsIGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1ZUlkZW50aWZp
ZXIudG9VSW50NjQoKSwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJlZEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uLCAiLCBzcmMgPSBcIiIsIG5vd1BsYXlpbmdJbmZvLT5hcnR3b3JrID8gbm93
UGxheWluZ0luZm8tPmFydHdvcmstPnNyYyA6IFN0cmluZygpLCAiXCIiKTsKICAgICB9CiAKICAg
ICBpZiAoIW1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODUwYzVmNjViNzMyNDE1ZWQ0OTI2YWY3NzYzMzAz
Njg4YTM3ZjJiYS4uZDAzODc2OGE4OGRhZWJlYzlkNjE2YmIyMTYyMGU2ZWNmODBhZmMzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI4LDYgKzEyOCw3IEBACiAjaW5j
bHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIk1lZGlh
S2V5U2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1lZGlhS2V5cy5oIgorI2luY2x1ZGUgIk1lZGlhTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVj
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIuaCIKQEAgLTQ4Niw2ICs0ODcs
MTAgQEAgSW50ZXJuYWxzOjp+SW50ZXJuYWxzKCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
ICAgIHN0b3BPYnNlcnZpbmdSZWFsdGltZU1lZGlhU291cmNlKCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTUVESUFfU0VTU0lPTikKKyAgICBpZiAobV9hcnR3b3JrSW1hZ2VQcm9taXNlKQorICAgICAg
ICBtX2FydHdvcmtJbWFnZVByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9KTsKKyNlbmRpZgogfQogCiB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZShQYWdlJiBwYWdlKQpAQCAtNTI1Miw3ICs1MjU3LDcgQEAgdm9pZCBJbnRlcm5hbHM6Om9i
c2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogCiB2b2lkIElu
dGVybmFsczo6Z3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUoVHJhY2tGcmFtZVByb21pc2Um
JiBwcm9taXNlKQogewotICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlID0gV1RGOjptYWtlVW5p
cXVlPFRyYWNrRnJhbWVQcm9taXNlPihwcm9taXNlKTsKKyAgICBtX25leHRUcmFja0ZyYW1lUHJv
bWlzZSA9IG1ha2VVbmlxdWU8VHJhY2tGcmFtZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOwog
fQogCiB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSkKQEAgLTYwODEsNiArNjA4NiwzMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6
OnNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAg
IH0KICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIH0KKwordm9p
ZCBJbnRlcm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJiYgdXJsLCBBcnR3b3JrSW1hZ2VQ
cm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gZG9j
dW1lbnQuIiB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9hcnR3b3JrSW1h
Z2VQcm9taXNlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQW5vdGhlciBkb3dubG9hZCBpcyBjdXJyZW50bHkgcGVuZGluZy4iIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VV
bmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9hcnR3
b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250ZXh0RG9jdW1l
bnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CisgICAgICAgIGlmIChpbWFnZSkgewor
ICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZChp
bWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAgICAgICAgICAg
aWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgbV9hcnR3b3Jr
SW1hZ2VQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2Ut
PnJlamVjdChpbWFnZURhdGEuZXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IsICJObyBpbWFnZSByZXRyaWV2ZS4iICB9KTsKKyAgICAgICAgbV9hcnR3
b3JrSW1hZ2VQcm9taXNlID0gbnVsbHB0cjsKKyAgICB9KTsKKyAgICBtX2FydHdvcmtMb2FkZXIt
PnJlcXVlc3RJbWFnZVJlc291cmNlKCk7Cit9CisKICNlbmRpZgogCiBjb25zdGV4cHIgQVNDSUlM
aXRlcmFsIHN0cmluZyhQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBjMjgyYzM0MTVjNzg5ODY3MmIyYWNiZWM3N2EzN2Y0NzFhNTQ4MTE4
Li42MGVjYzQ4OGI0MzIwNzdlYjJlMzYxMmMwNmZiNGU5OGRhNmFkNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBYnN0cmFjdFJhbmdlOwogY2xhc3MgQW5pbWF0aW9uVGltZWxpbmU7CitjbGFzcyBB
cnR3b3JrSW1hZ2VMb2FkZXI7CiBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb1RyYWNr
OwogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKQEAgLTEwOTIsNiArMTA5Myw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBFeGNlcHRpb25Pcjxkb3VibGU+
IGN1cnJlbnRNZWRpYVNlc3Npb25Qb3NpdGlvbihjb25zdCBNZWRpYVNlc3Npb24mKTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYsIGNv
bnN0IE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMmKTsKKyAgICB1c2luZyBBcnR3b3JrSW1hZ2VQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxJbWFnZURhdGE+PjsKKyAg
ICB2b2lkIGxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJiYsIEFydHdvcmtJbWFnZVByb21pc2UmJik7
CiAjZW5kaWYKIAogICAgIGVudW0gVHJlZVR5cGUgOiB1aW50OF90IHsgVHJlZSwgU2hhZG93SW5j
bHVkaW5nVHJlZSwgQ29tcG9zZWRUcmVlIH07CkBAIC0xMTI1LDcgKzExMjgsMTAgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV90cmFja1NvdXJjZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHJhY2tGcmFtZVByb21pc2U+IG1fbmV4dFRyYWNrRnJhbWVQcm9taXNl
OwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJ0d29ya0ltYWdlTG9hZGVyPiBtX2FydHdvcmtMb2FkZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFydHdvcmtJbWFnZVByb21pc2U+IG1fYXJ0d29ya0ltYWdlUHJvbWlzZTsKKyNlbmRpZgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJv
bnRlbmQ7CiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg5Y2Ux
MmQwYzM1YTJhZTMzM2FhNDFiZDliMmU3NWRkNjgxMWNiYmEuLmY2OTcyNTI5YjlkMjYwNjYwNjk4
NTFjMjUwNDlmY2YwZmEwMDQyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
QEAgLTk4OSw3ICs5ODksOCBAQCBlbnVtIFRyZWVUeXBlIHsKIAogICAgIFtDb25kaXRpb25hbD1N
RURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0gZG91YmxlIGN1cnJlbnRNZWRpYVNlc3Np
b25Qb3NpdGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbik7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElB
X1NFU1NJT04sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvbkFj
dGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbiwgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rp
b25EZXRhaWxzKTsKLQorICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OXSBQcm9taXNlPElt
YWdlRGF0YT4gbG9hZEFydHdvcmtJbWFnZShET01TdHJpbmcgdXJsKTsKKyAgICAKICAgICBET01T
dHJpbmcgdHJlZU9yZGVyKE5vZGUgYSwgTm9kZSBiLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0g
IlRyZWUiKTsKICAgICBET01TdHJpbmcgdHJlZU9yZGVyQm91bmRhcnlQb2ludHMoTm9kZSBjb250
YWluZXJBLCB1bnNpZ25lZCBsb25nIG9mZnNldEEsIE5vZGUgY29udGFpbmVyQiwgdW5zaWduZWQg
bG9uZyBvZmZzZXRCLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKICAgICBib29s
ZWFuIHJhbmdlQ29udGFpbnNOb2RlKEFic3RyYWN0UmFuZ2UgcmFuZ2UsIE5vZGUgbm9kZSwgb3B0
aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTVhYWQyY2IxYjBlNTUwYzM5
M2NhNTMyOTUzNDMxNmRmZGMzOTVlNC4uYjU4ZjRhYWQyZDdlMDdjMTg4MDg4YWQyNTI2MGNhOGY1
YmY4MWMwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTE1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdyBtZWRpYSBzZXNzaW9uIGltYWdl
IGFydHdvcmsgaW4gTm93IFBsYXlpbmcgaW5mb3JtYXRpb24gcGFuZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzUzNjAxNjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEv
YXJ0d29ya2Rvd25sb2FkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAzLTE2ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4g
bWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGds
b2JhbCBvYmplY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21l
dGFkYXRhL2FydHdvcmtkb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlZjkwY2U4ZTVlNTkwMWQ3ZDFmMzZkNDQ4MThkODMyMDUzMjZkMjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93
bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIGVuc3VyZSBsb2FkaW5n
IGFydHdvcmsgaW1hZ2UgbWV0aG9kIG9wZXJhdGVzIHByb3Blcmx5CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2Fk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2JjOWU3YmI1NDhkOGE2ZWQ1NTlkZDk0Mjc4NWJlMmM0MTg2Y2I3
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFk
YXRhL2FydHdvcmtkb3dubG9hZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxib2R5PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKK2NvbnN0IElNQUdFX1NS
QyA9ICcuLi8uLi9pbWFnZXMvcmVzb3VyY2VzL3Rlc3QtbG9hZC5qcGcnOworCitwcm9taXNlX3Rl
c3QoKHRlc3QpID0+IHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHZhciBw
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBwcm9t
aXNlID0gaW50ZXJuYWxzLmxvYWRBcnR3b3JrSW1hZ2UoSU1BR0VfU1JDKS50aGVuKChkYXRhKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRhdGEud2lkdGgsIDE2KTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZGF0YS5oZWlnaHQsIDE2KTsKKyAgICAgICAgfSk7OworICAgIH0K
KyAgICByZXR1cm4gcHJvbWlzZTsKK30sICJlbnN1cmUgbG9hZGluZyBhcnR3b3JrIGltYWdlIG1l
dGhvZCBvcGVyYXRlcyBwcm9wZXJseSIpOworCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>