<?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>204686</bug_id>
          
          <creation_ts>2019-11-28 10:02:10 -0800</creation_ts>
          <short_desc>[GStreamer] Refactor MediaPlayerPrivateGStreamer::notifyPlayerOf*</short_desc>
          <delta_ts>2021-08-15 09:46:01 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229123</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>227115</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Charlie Turner">cturner</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eocanha</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594070</commentid>
    <comment_count>0</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2019-11-28 10:02:10 -0800</bug_when>
    <thetext>There is a lot of unnecessary duplication in these methods that can be cleaned up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769735</commentid>
    <comment_count>1</comment_count>
      <attachid>431418</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-15 03:05:27 -0700</bug_when>
    <thetext>Created attachment 431418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769778</commentid>
    <comment_count>2</comment_count>
      <attachid>431418</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-06-15 06:36:01 -0700</bug_when>
    <thetext>Comment on attachment 431418
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:966
&gt; +static void addTrackToPlayer(MediaPlayer&amp;player, AudioTrackPrivate&amp; track)

Missing space after &amp;, also twice below in add methods.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1012
&gt; +        if (*hasType)
&gt; +            m_player-&gt;sizeChanged();

This should be done only for video</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769833</commentid>
    <comment_count>3</comment_count>
      <attachid>431448</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-15 09:32:48 -0700</bug_when>
    <thetext>Created attachment 431448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769855</commentid>
    <comment_count>4</comment_count>
      <attachid>431448</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-06-15 10:20:39 -0700</bug_when>
    <thetext>Comment on attachment 431448
Patch

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

Nice clean-up!

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1050
&gt; +        addTrackToPlayer(*m_player, track.get());

Nit: I wonder if instead of static funcs we could use a Variant on the enum value here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770130</commentid>
    <comment_count>5</comment_count>
      <attachid>431448</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-16 02:45:23 -0700</bug_when>
    <thetext>Comment on attachment 431448
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1050
&gt;&gt; +        addTrackToPlayer(*m_player, track.get());
&gt; 
&gt; Nit: I wonder if instead of static funcs we could use a Variant on the enum value here?

Thanks, you&apos;ve just given me the missing piece I needed to achieve all the needed functionality without function parameters!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770142</commentid>
    <comment_count>6</comment_count>
      <attachid>431534</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-16 04:04:31 -0700</bug_when>
    <thetext>Created attachment 431534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770145</commentid>
    <comment_count>7</comment_count>
      <attachid>431534</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-06-16 04:18:16 -0700</bug_when>
    <thetext>Comment on attachment 431534
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1052
&gt; +        case 0: m_player-&gt;addAudioTrack(get&lt;AudioTrackPrivate&amp;&gt;(variantTrack)); break;
&gt; +        case 1: m_player-&gt;addVideoTrack(get&lt;VideoTrackPrivate&amp;&gt;(variantTrack)); break;
&gt; +        case 2: m_player-&gt;addTextTrack(get&lt;InbandTextTrackPrivate&amp;&gt;(variantTrack)); break;

Instead of hard-coding numbers, can you re-use the TrackType enum?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770154</commentid>
    <comment_count>8</comment_count>
      <attachid>431534</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-16 04:57:35 -0700</bug_when>
    <thetext>Comment on attachment 431534
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1052
&gt;&gt; +        case 2: m_player-&gt;addTextTrack(get&lt;InbandTextTrackPrivate&amp;&gt;(variantTrack)); break;
&gt; 
&gt; Instead of hard-coding numbers, can you re-use the TrackType enum?

Sure. I&apos;m also renaming tracksVariant (at the begining of the method) as variantTracks, to make it consistent with the variantTrack here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770216</commentid>
    <comment_count>9</comment_count>
      <attachid>431550</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-16 09:19:58 -0700</bug_when>
    <thetext>Created attachment 431550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770557</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 02:18:10 -0700</bug_when>
    <thetext>Committed r278978 (238904@main): &lt;https://commits.webkit.org/238904@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431550.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770568</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-06-17 02:42:15 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 227115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770572</commentid>
    <comment_count>12</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-17 02:54:47 -0700</bug_when>
    <thetext>I had to revert this patch because the g++ 8 compiler used in the Debian and Ubuntu bots doesn&apos;t like the array-based initializations:

../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: In instantiation of ‘void WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::AudioTrackPrivateGStreamer]’:
../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1097:65:   required from here
../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:977:65: error: taking address of temporary array
     auto typeName = (const char*[]) { &quot;audio&quot;, &quot;video&quot;, &quot;text&quot; }[type];
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:978:68: error: taking address of temporary array
     auto* hasType = (bool*[]) { &amp;m_hasAudio, &amp;m_hasVideo, nullptr }[type];
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Also, this warning:

In file included from WTF/Headers/wtf/JSONValues.h:35,
                 from ../../Source/WebCore/platform/graphics/IntSize.h:29,
                 from ../../Source/WebCore/platform/graphics/IntPoint.h:28,
                 from ../../Source/WebCore/platform/graphics/FloatSize.h:30,
                 from ../../Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:23,
                 from ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:29,
                 from ../../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:27:
WTF/Headers/wtf/HashMap.h:480:13: error: ‘bool WTF::HashMap&lt;KeyArg, MappedArg, &lt;template-parameter-1-3&gt;, &lt;template-parameter-1-4&gt;, &lt;template-parameter-1-5&gt;, &lt;template-parameter-1-6&gt; &gt;::removeIf(Functor&amp;&amp;) [with Functor = WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::AudioTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;; KeyArg = WTF::AtomString; MappedArg = WTF::RefPtr&lt;WebCore::AudioTrackPrivateGStreamer&gt;; HashArg = WTF::DefaultHash&lt;WTF::AtomString&gt;; KeyTraitsArg = WTF::HashTraits&lt;WTF::AtomString&gt;; MappedTraitsArg = WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::AudioTrackPrivateGStreamer&gt; &gt;; TableTraitsArg = WTF::HashTableTraits]’, declared using local type ‘WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::AudioTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;’, is used but never defined [-fpermissive]
 inline bool HashMap&lt;T, U, V, W, X, Y&gt;::removeIf(Functor&amp;&amp; functor)
             ^~~~~~~~~~~~~~~~~~~~~~~~~
WTF/Headers/wtf/HashMap.h:480:13: error: ‘bool WTF::HashMap&lt;KeyArg, MappedArg, &lt;template-parameter-1-3&gt;, &lt;template-parameter-1-4&gt;, &lt;template-parameter-1-5&gt;, &lt;template-parameter-1-6&gt; &gt;::removeIf(Functor&amp;&amp;) [with Functor = WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::InbandTextTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;; KeyArg = WTF::AtomString; MappedArg = WTF::RefPtr&lt;WebCore::InbandTextTrackPrivateGStreamer&gt;; HashArg = WTF::DefaultHash&lt;WTF::AtomString&gt;; KeyTraitsArg = WTF::HashTraits&lt;WTF::AtomString&gt;; MappedTraitsArg = WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::InbandTextTrackPrivateGStreamer&gt; &gt;; TableTraitsArg = WTF::HashTableTraits]’, declared using local type ‘WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::InbandTextTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;’, is used but never defined [-fpermissive]
WTF/Headers/wtf/HashMap.h:480:13: error: ‘bool WTF::HashMap&lt;KeyArg, MappedArg, &lt;template-parameter-1-3&gt;, &lt;template-parameter-1-4&gt;, &lt;template-parameter-1-5&gt;, &lt;template-parameter-1-6&gt; &gt;::removeIf(Functor&amp;&amp;) [with Functor = WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::VideoTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;; KeyArg = WTF::AtomString; MappedArg = WTF::RefPtr&lt;WebCore::VideoTrackPrivateGStreamer&gt;; HashArg = WTF::DefaultHash&lt;WTF::AtomString&gt;; KeyTraitsArg = WTF::HashTraits&lt;WTF::AtomString&gt;; MappedTraitsArg = WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::VideoTrackPrivateGStreamer&gt; &gt;; TableTraitsArg = WTF::HashTableTraits]’, declared using local type ‘WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfTrack() [with TrackPrivateType = WebCore::VideoTrackPrivateGStreamer]::&lt;lambda(auto:16&amp;)&gt;’, is used but never defined [-fpermissive]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770587</commentid>
    <comment_count>13</comment_count>
      <attachid>431652</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-17 04:28:04 -0700</bug_when>
    <thetext>Created attachment 431652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770592</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 05:00:55 -0700</bug_when>
    <thetext>Committed r278981 (238907@main): &lt;https://commits.webkit.org/238907@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431652.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770594</commentid>
    <comment_count>15</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-17 05:33:10 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770595</commentid>
    <comment_count>16</comment_count>
      <attachid>431655</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2021-06-17 05:33:14 -0700</bug_when>
    <thetext>Created attachment 431655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770598</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 05:59:10 -0700</bug_when>
    <thetext>Committed r278983 (238909@main): &lt;https://commits.webkit.org/238909@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431655.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431418</attachid>
            <date>2021-06-15 03:05:27 -0700</date>
            <delta_ts>2021-06-15 09:32:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210615120526.patch</filename>
            <type>text/plain</type>
            <size>16760</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uNWYzYTM5M2RjODdhYjhlOTY5MWI3YjIzODljZjlj
NDIwNTNhZTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA2LTE1ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9KCkgZmFtaWx5IG9m
IG1ldGhvZHMgaW50byBhIHNpbmdsZSBub3RpZnlQbGF5ZXJPZlRyYWNrVHlwZSgpIG9uZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUpOiBBZGRlZCBtZXRob2Qgd2l0aCBhIHNpZ25hdHVyZSBzaW1pbGFy
IHRvIHRoZSBvbmVzIHVzZWQgYnkge0F1ZGlvLFZpZGVvfVRyYWNrUHJpdmF0ZUdTdHJlYW1lciwg
c28gdGhhdCBpdCBmaXRzIGludG8gdGhlIG5vdGlmeVBsYXllck9mVHJhY2tUeXBlKCkgdGVtcGxh
dGUgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrVG9QbGF5
ZXIpOiBSZWZhY3Rvcml6ZXMgYWRke0F1ZGlvLFZpZGVvLFRleHR9VHJhY2soKSBpbnRvIGFuIG92
ZXJsb2FkZWQgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgc28gaXQgY2FuIGJlIGNhbGxlZCBm
cm9tIHRlbXBsYXRlIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2tUeXBlKTogVGVtcGxhdGUgbWV0aG9kIHRoYXQg
dW5pZmllcyB0aGUgb2xkIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9KCkgaW1wbGVt
ZW50YXRpb25zLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhpcyBtZXRob2QgbWF5IHNlZW0g
YSBiaXQgd2VpcmQsIGJ1dCBhcmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG8gcHJldmVudCBpbnRl
cm5hbCBzd2l0Y2ggc3RhdGVtZW50cyBkZXBlbmRpbmcgb24gdGhlIFRyYWNrVHlwZSBhbmQgdG8g
anVnZ2xlIHdpdGggdGhlIGRpZmZlcmVudCAoaW5jb21wYXRpYmxlIGFuZCBub24gY2FzdGFibGUp
IHR5cGluZyBvZiB0aGUgYXVkaW8vdmlkZW8vdGV4dCB0cmFjayBoYXNoIG1hcHMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVk
aW8pOiBEZWxldGVkLiBSZWZhY3RvcmVkIGludG8gbm90aWZ5UGxheWVyT2ZUcmFja1R5cGUoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZWaWRlbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJhY2spOiBDYWxs
IHRoZSBuZXcgbm90aWZ5UGxheWVyT2ZUcmFja1R5cGUoKSByZWZhY3RvcmVkIGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0ZXh0
Q2hhbmdlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZEF1ZGlvVHJh
Y2tzKTogRGVsZXRlZC4gTm93IGltcGxlbWVudGVkIGRpcmVjdGx5IGluc2lkZSBub3RpZnlQbGF5
ZXJPZlRyYWNrVHlwZSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpwdXJnZUludmFsaWRWaWRlb1RyYWNrcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRUZXh0VHJhY2tzKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOiBBZGRlZCBuZXcgVHJhY2tUeXBlIGVudW0sIGRlbGV0ZWQgbm90
aWZ5UGxheWVyT2Z7QXVkaW8sVmlkZW8sVGV4dH0oKSwgYWRkZWQgbm90aWZ5UGxheWVyT2ZUcmFj
a1R5cGUoKSwgZGVsZXRlZCBwdXJnZUludmFsaWR7QXVkaW8sVmlkZW8sVGV4dH1UcmFja3MoKS4K
KwogMjAyMS0wNS0yNSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBiYXNpYyA8ZGlhbG9nPiBlbGVtZW50IFVBIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjkxMjI2NGMwZmI5MzFlNGI0
MGM3YTBmZDhmNTYxYThhMTQzYzViZC4uODc0YWZmYzAwNmI5MGFiYmZhMmNiNTg3MTMyZGFhYzVl
MmVmYzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC00NCw2ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4g
Y3JlYXRlKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgs
IHBhZCk7CisgICAgfQorCiAgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIoaW5kZXgsIHN0cmVhbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmOTkwMTcyNjFlYmMzZDQxZGMyYWJiMWVkOTZhZWI2
ZDk4ZTUwMTA3Li4yNmZjMjAwMDY4ZDZhZGRiYzcxMDU1NmE3MzExZDFiZTgzN2VmNWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTYz
LDMxICs5NjMsNTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNs
b2NrKGJvb2wgc3luYykKICAgICBzZXRTeW5jT25DbG9jayhhdWRpb1NpbmsoKSwgc3luYyk7CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVv
KCkKK3N0YXRpYyB2b2lkIGFkZFRyYWNrVG9QbGF5ZXIoTWVkaWFQbGF5ZXImcGxheWVyLCBBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCit7CisgICAgcGxheWVyLmFkZEF1ZGlvVHJhY2sodHJhY2sp
OworfQorCitzdGF0aWMgdm9pZCBhZGRUcmFja1RvUGxheWVyKE1lZGlhUGxheWVyJnBsYXllciwg
VmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrKQoreworICAgIHBsYXllci5hZGRWaWRlb1RyYWNrKHRy
YWNrKTsKK30KKworc3RhdGljIHZvaWQgYWRkVHJhY2tUb1BsYXllcihNZWRpYVBsYXllciZwbGF5
ZXIsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQoreworICAgIHBsYXllci5hZGRUZXh0
VHJhY2sodHJhY2spOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhY2tQcml2YXRlVHlwZT4K
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrVHlw
ZShUcmFja1R5cGUgdHlwZSwgY29uc3QgY2hhciogdHlwZU5hbWUsIGJvb2wqIGhhc1R5cGUsIEhh
c2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzKQogewog
ICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQogICAgICAgICByZXR1
cm47CiAKICAgICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsK
KyAgICBBU1NFUlQodHlwZU5hbWUpOwogCiAgICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMgYWZ0
ZXIgYSBFT1MuIFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIgd2hlbiB0aGUg
dmlkZW8gaXMgZmluaXNoZWQuCi0gICAgaWYgKG1faXNFbmRSZWFjaGVkKQorICAgIGlmIChtX2lz
RW5kUmVhY2hlZCAmJiAodHlwZSA9PSBBdWRpbyB8fCB0eXBlID09IFZpZGVvKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdW5zaWduZWQgbnVtVHJhY2tzID0gMDsKKyAgICB1bnNpZ25lZCBudW1i
ZXJPZlRyYWNrcyA9IDA7CiAgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2Uo
KTsKKworICAgIFN0cmluZ1ByaW50U3RyZWFtIG51bWJlck9mVHJhY2tzUHJvcGVydHk7CisgICAg
bnVtYmVyT2ZUcmFja3NQcm9wZXJ0eS5wcmludGYoIm4tJXMiLCB0eXBlTmFtZSk7CisKICAgICBH
c3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5nZXQoKSA6IG1f
cGlwZWxpbmUuZ2V0KCk7Ci0gICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLXZpZGVvIiwgJm51
bVRyYWNrcywgbnVsbHB0cik7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsIG51bWJlck9mVHJh
Y2tzUHJvcGVydHkudG9DU3RyaW5nKCkuZGF0YSgpLCAmbnVtYmVyT2ZUcmFja3MsIG51bGxwdHIp
OwogCi0gICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJNZWRpYSBoYXMgJWQgdmlkZW8g
dHJhY2tzIiwgbnVtVHJhY2tzKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIk1l
ZGlhIGhhcyAlZCAlcyB0cmFja3MiLCBudW1iZXJPZlRyYWNrcywgdHlwZU5hbWUpOwogCi0gICAg
Ym9vbCBvbGRIYXNWaWRlbyA9IG1faGFzVmlkZW87Ci0gICAgbV9oYXNWaWRlbyA9IG51bVRyYWNr
cyA+IDA7Ci0gICAgaWYgKG9sZEhhc1ZpZGVvICE9IG1faGFzVmlkZW8pCi0gICAgICAgIG1fcGxh
eWVyLT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsKKyAgICBpZiAoaGFzVHlwZSkgeworICAgICAg
ICBib29sIG9sZEhhc1R5cGUgPSAqaGFzVHlwZTsKKyAgICAgICAgKmhhc1R5cGUgPSBudW1iZXJP
ZlRyYWNrcyA+IDA7CisgICAgICAgIGlmIChvbGRIYXNUeXBlICE9ICpoYXNUeXBlKQorICAgICAg
ICAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwogCi0gICAgaWYgKG1faGFz
VmlkZW8pCi0gICAgICAgIG1fcGxheWVyLT5zaXplQ2hhbmdlZCgpOworICAgICAgICBpZiAoKmhh
c1R5cGUpCisgICAgICAgICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKKyAgICB9CiAKICAg
ICBpZiAodXNlTWVkaWFTb3VyY2UpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGlu
ZSgpLCAiVHJhY2tzIG1hbmFnZWQgYnkgc291cmNlIGVsZW1lbnQuIEJhaWxpbmcgb3V0IG5vdy4i
KTsKQEAgLTk5NSwxNiArMTAxOCwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiB2YWxpZFZpZGVvU3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKKyAgICBWZWN0b3I8U3RyaW5nPiB2YWxpZFN0cmVhbXM7
CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gZ2V0UGFkUHJvcGVydHk7CisgICAgZ2V0UGFkUHJvcGVy
dHkucHJpbnRmKCJnZXQtJXMtcGFkIiwgdHlwZU5hbWUpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mVHJhY2tzOyArK2kpIHsKICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IHBhZDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksICJn
ZXQtdmlkZW8tcGFkIiwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdldCgpLCBnZXRQYWRQcm9wZXJ0eS50b0NTdHJp
bmcoKS5kYXRhKCksIGksICZwYWQub3V0UHRyKCksIG51bGxwdHIpOwogICAgICAgICBBU1NFUlQo
cGFkKTsKIAotICAgICAgICBTdHJpbmcgc3RyZWFtSWQgPSAiViIgKyBTdHJpbmc6Om51bWJlcihp
KTsKLSAgICAgICAgdmFsaWRWaWRlb1N0cmVhbXMuYXBwZW5kKHN0cmVhbUlkKTsKLSAgICAgICAg
aWYgKGkgPCBtX3ZpZGVvVHJhY2tzLnNpemUoKSkgewotICAgICAgICAgICAgUmVmUHRyPFZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBleGlzdGluZ1RyYWNrID0gbV92aWRlb1RyYWNrcy5nZXQo
c3RyZWFtSWQpOworICAgICAgICBTdHJpbmcgc3RyZWFtSWQgPSBTdHJpbmcodHlwZU5hbWUpLnN1
YnN0cmluZygwLCAxKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpICsgU3RyaW5nOjpudW1iZXIo
aSk7CisgICAgICAgIHZhbGlkU3RyZWFtcy5hcHBlbmQoc3RyZWFtSWQpOworCisgICAgICAgIGlm
IChpIDwgdHJhY2tzLnNpemUoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5
cGU+IGV4aXN0aW5nVHJhY2sgPSB0cmFja3MuZ2V0KHN0cmVhbUlkKTsKICAgICAgICAgICAgIGlm
IChleGlzdGluZ1RyYWNrKSB7CiAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmFjay0+c2V0SW5k
ZXgoaSk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHZpZGVvIGhhcyBiZWVuIHBsYXllZCB0
d2ljZSwgdGhlIHRyYWNrIGlzIHN0aWxsIHRoZXJlLCBidXQgd2UgbmVlZApAQCAtMTAxNSwxOCAr
MTA0MiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVy
T2ZWaWRlbygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHRyYWNr
ID0gVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyks
IGksIHBhZCk7Ci0gICAgICAgIGlmICghdHJhY2stPnRyYWNrSW5kZXgoKSkKKyAgICAgICAgYXV0
byB0cmFjayA9IFRyYWNrUHJpdmF0ZVR5cGU6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGks
IHBhZCk7CisgICAgICAgIGlmICghdHJhY2stPnRyYWNrSW5kZXgoKSAmJiAodHlwZSA9PSBBdWRp
byB8fCB0eXBlID09IFZpZGVvKSkKICAgICAgICAgICAgIHRyYWNrLT5zZXRBY3RpdmUodHJ1ZSk7
CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlk
ZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwotICAgICAgICBtX3BsYXll
ci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7CisgICAgICAgIHRyYWNrcy5hZGQoc3RyZWFt
SWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIGFkZFRyYWNrVG9QbGF5ZXIoKm1fcGxheWVy
LCB0cmFjay5nZXQoKSk7CiAgICAgfQogCi0gICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFs
aWRWaWRlb1N0cmVhbXMpOworICAgIC8vIFB1cmdlIGludmFsaWQgdHJhY2tzCisgICAgdHJhY2tz
LnJlbW92ZUlmKFt2YWxpZFN0cmVhbXNdKGF1dG8mIGtleUFuZFZhbHVlKSB7CisgICAgICAgIHJl
dHVybiAhdmFsaWRTdHJlYW1zLmNvbnRhaW5zKGtleUFuZFZhbHVlLmtleSk7CisgICAgfSk7CiAK
ICAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVkKCk7CiB9CisKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpoYXNGaXJzdFZpZGVvU2FtcGxlUmVhY2hlZFNpbmsoKSBjb25z
dAogewogICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CkBAIC0xMDYx
LDEyNyArMTA5MiwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9T
aW5rQ2Fwc0NoYW5nZWQoR3N0UGFkKiB2aWRlb1NpbmtQYWQpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRo
cmVhZE5vdGlmaWNhdGlvbjo6QXVkaW9DaGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXll
ci0+bm90aWZ5UGxheWVyT2ZBdWRpbygpOworICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9m
VHJhY2tUeXBlPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPihBdWRpbywgImF1ZGlvIiwgJnBs
YXllci0+bV9oYXNBdWRpbywgcGxheWVyLT5tX2F1ZGlvVHJhY2tzKTsKICAgICB9KTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQot
ewotICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgp
KTsKLQotICAgIC8vIElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3
YW50IHRoZSB0cmFja3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgot
ICAgIGlmIChtX2lzRW5kUmVhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQg
bnVtVHJhY2tzID0gMDsKLSAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgp
OwotICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdl
dCgpIDogbV9waXBlbGluZS5nZXQoKTsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tYXVk
aW8iLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKLQotICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGlu
ZSgpLCAiTWVkaWEgaGFzICVkIGF1ZGlvIHRyYWNrcyIsIG51bVRyYWNrcyk7Ci0gICAgYm9vbCBv
bGRIYXNBdWRpbyA9IG1faGFzQXVkaW87Ci0gICAgbV9oYXNBdWRpbyA9IG51bVRyYWNrcyA+IDA7
Ci0gICAgaWYgKG9sZEhhc0F1ZGlvICE9IG1faGFzQXVkaW8pCi0gICAgICAgIG1fcGxheWVyLT5j
aGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsKLQotICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewotICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJUcmFja3MgbWFuYWdlZCBieSBzb3Vy
Y2UgZWxlbWVudC4gQmFpbGluZyBvdXQgbm93LiIpOwotICAgICAgICBtX3BsYXllci0+bWVkaWFF
bmdpbmVVcGRhdGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U3Ry
aW5nPiB2YWxpZEF1ZGlvU3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
VHJhY2tzOyArK2kpIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKLSAgICAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksICJnZXQtYXVkaW8tcGFkIiwgaSwg
JnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVChwYWQpOwotCi0gICAgICAg
IFN0cmluZyBzdHJlYW1JZCA9ICJBIiArIFN0cmluZzo6bnVtYmVyKGkpOwotICAgICAgICB2YWxp
ZEF1ZGlvU3RyZWFtcy5hcHBlbmQoc3RyZWFtSWQpOwotICAgICAgICBpZiAoaSA8IG1fYXVkaW9U
cmFja3Muc2l6ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGV4aXN0aW5nVHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChzdHJlYW1JZCk7Ci0gICAg
ICAgICAgICBpZiAoZXhpc3RpbmdUcmFjaykgewotICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJh
Y2stPnNldEluZGV4KGkpOwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVl
biBwbGF5ZWQgdHdpY2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKLSAg
ICAgICAgICAgICAgICAvLyB0byB1cGRhdGUgdGhlIHBhZCBwb2ludGVyLgotICAgICAgICAgICAg
ICAgIGlmIChleGlzdGluZ1RyYWNrLT5wYWQoKSAhPSBwYWQpCi0gICAgICAgICAgICAgICAgICAg
IGV4aXN0aW5nVHJhY2stPnNldFBhZChHUmVmUHRyKHBhZCkpOwotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0cmFjayA9
IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBp
LCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCi0gICAgICAgICAgICB0
cmFjay0+c2V0QWN0aXZlKHRydWUpOwotICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2st
PmlkKCkpOwotICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKLSAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOwotICAg
IH0KLQotICAgIHB1cmdlSW52YWxpZEF1ZGlvVHJhY2tzKHZhbGlkQXVkaW9TdHJlYW1zKTsKLQot
ICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKLX0KLQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFp
blRocmVhZE5vdGlmaWNhdGlvbjo6VGV4dENoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxh
eWVyLT5ub3RpZnlQbGF5ZXJPZlRleHQoKTsKKyAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJP
ZlRyYWNrVHlwZTxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPihUZXh0LCAidGV4dCIs
IG51bGxwdHIsIHBsYXllci0+bV90ZXh0VHJhY2tzKTsKICAgICB9KTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCi17Ci0gICAgaWYg
KFVOTElLRUxZKCFtX3BpcGVsaW5lIHx8ICFtX3NvdXJjZSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbiB8fCBpc01lZGlhU291cmNlKCkpOwotCi0gICAg
dW5zaWduZWQgbnVtVHJhY2tzID0gMDsKLSAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRp
YVNvdXJjZSgpOwotICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1f
c291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVu
dCwgIm4tdGV4dCIsICZudW1UcmFja3MsIG51bGxwdHIpOwotCi0gICAgR1NUX0lORk9fT0JKRUNU
KHBpcGVsaW5lKCksICJNZWRpYSBoYXMgJWQgdGV4dCB0cmFja3MiLCBudW1UcmFja3MpOwotCi0g
ICAgaWYgKHVzZU1lZGlhU291cmNlKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cu
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2YWxpZFRl
eHRTdHJlYW1zOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1UcmFja3M7ICsraSkg
ewotICAgICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUobV9waXBlbGluZS5nZXQoKSwgImdldC10ZXh0LXBhZCIsIGksICZwYWQub3V0UHRyKCks
IG51bGxwdHIpOwotICAgICAgICBBU1NFUlQocGFkKTsKLQotICAgICAgICAvLyBXZSBjYW4ndCBh
c3N1bWUgdGhlIHBhZCBoYXMgYSBzdGlja3kgZXZlbnQgaGVyZSBsaWtlIGltcGxlbWVudGVkIGlu
Ci0gICAgICAgIC8vIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgYmVjYXVzZSBpdCBt
aWdodCBiZSBlbWl0dGVkIGFmdGVyIHRoZQotICAgICAgICAvLyB0cmFjayB3YXMgY3JlYXRlZC4g
U28gZmFsbGJhY2sgdG8gYSBkdW1teSBzdHJlYW0gSUQgbGlrZSBpbiB0aGUgQXVkaW8KLSAgICAg
ICAgLy8gYW5kIFZpZGVvIHRyYWNrcy4KLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gIlQiICsg
U3RyaW5nOjpudW1iZXIoaSk7Ci0KLSAgICAgICAgdmFsaWRUZXh0U3RyZWFtcy5hcHBlbmQoc3Ry
ZWFtSWQpOwotICAgICAgICBpZiAoaSA8IG1fdGV4dFRyYWNrcy5zaXplKCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBleGlzdGluZ1RyYWNr
ID0gbV90ZXh0VHJhY2tzLmdldChzdHJlYW1JZCk7Ci0gICAgICAgICAgICBpZiAoZXhpc3RpbmdU
cmFjaykgewotICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNldEluZGV4KGkpOwotICAg
ICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYWNrLT5wYWQoKSA9PSBwYWQpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
YXV0byB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBw
YWQpOwotICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkp
OwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKLSAgICB9Ci0K
LSAgICBwdXJnZUludmFsaWRUZXh0VHJhY2tzKHZhbGlkVGV4dFN0cmVhbXMpOwotfQotCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlVGV4dFNhbXBsZShHc3RTYW1wbGUq
IHNhbXBsZSwgY29uc3QgY2hhciogc3RyZWFtSWQpCiB7CiAgICAgZm9yIChhdXRvJiB0cmFjayA6
IG1fdGV4dFRyYWNrcy52YWx1ZXMoKSkgewpAQCAtMTUyOSw3ICsxNDUwLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0
cmVhbUNvbGxlY3Rpb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0No
YW5nZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAg
ICBwbGF5ZXItPm1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpWaWRl
b0NoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZlZpZGVv
KCk7CisgICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUcmFja1R5cGU8VmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+KFZpZGVvLCAidmlkZW8iLCAmcGxheWVyLT5tX2hhc1ZpZGVvLCBwbGF5
ZXItPm1fdmlkZW9UcmFja3MpOwogICAgIH0pOwogfQogCkBAIC0yMTQ0LDI3ICsyMDY1LDYgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHNF
bnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0Vu
dHJ5KHN0YXRpY19jYXN0PEdzdFRvY0VudHJ5Kj4oaS0+ZGF0YSkpOwogfQogCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VJbnZhbGlkQXVkaW9UcmFja3MoVmVjdG9yPFN0
cmluZz4gdmFsaWRUcmFja0lkcykKLXsKLSAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZUlmKFt2YWxp
ZFRyYWNrSWRzXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJh
Y2tJZHMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKFZlY3RvcjxT
dHJpbmc+IHZhbGlkVHJhY2tJZHMpCi17Ci0gICAgbV92aWRlb1RyYWNrcy5yZW1vdmVJZihbdmFs
aWRUcmFja0lkc10oYXV0byYga2V5QW5kVmFsdWUpIHsKLSAgICAgICAgcmV0dXJuICF2YWxpZFRy
YWNrSWRzLmNvbnRhaW5zKGtleUFuZFZhbHVlLmtleSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRUZXh0VHJhY2tzKFZlY3RvcjxT
dHJpbmc+IHZhbGlkVHJhY2tJZHMpCi17Ci0gICAgbV90ZXh0VHJhY2tzLnJlbW92ZUlmKFt2YWxp
ZFRyYWNrSWRzXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJh
Y2tJZHMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVyaURlY29kZUJpbkVsZW1lbnRBZGRlZENhbGxiYWNr
KEdzdEJpbiogYmluLCBHc3RFbGVtZW50KiBlbGVtZW50LCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIqIHBsYXllcikKIHsKICAgICBpZiAoZ19zdHJjbXAwKEdfT0JKRUNUX1RZUEVfTkFNRShl
bGVtZW50KSwgIkdzdERvd25sb2FkQnVmZmVyIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNDc1ODRhNmZjMjcxMTVlNDJiNTBkZGUyZjM5NWI2
N2Q3MjZlYjE0OS4uMjQ4ZmQ0MDdlYmVjZjAwNmQ2YzNkYjI0MGUyMzI5NDgwZWE0ZmY5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjQ5LDYg
KzI0OSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cmVhbUNvbGxlY3Rpb25DaGFuZ2VkID0g
MSA8PCA3CiAgICAgfTsKIAorICAgIGVudW0gVHJhY2tUeXBlIHsKKyAgICAgICAgVmlkZW8sCisg
ICAgICAgIEF1ZGlvLAorICAgICAgICBUZXh0CisgICAgfTsKKwogICAgIHN0YXRpYyBib29sIGlz
QXZhaWxhYmxlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7CkBAIC0y
OTYsOSArMzAyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCByZWFkeVRpbWVyRmlyZWQoKTsK
IAotICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRlbygpOwotICAgIHZvaWQgbm90aWZ5UGxheWVy
T2ZBdWRpbygpOwotICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFRyYWNrUHJpdmF0ZVR5cGU+IHZvaWQgbm90aWZ5UGxheWVyT2ZUcmFja1R5cGUo
VHJhY2tUeXBlLCBjb25zdCBjaGFyKiB0eXBlTmFtZSwgYm9vbCogaGFzVHlwZSwgSGFzaE1hcDxB
dG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+JiB0cmFja3MpOwogCiAgICAgdm9p
ZCBlbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAgICAgdm9pZCBzZXRBdWRpb1N0cmVhbVBy
b3BlcnRpZXMoR09iamVjdCopOwpAQCAtNDMwLDEwICs0MzQsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNz
VGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIHZvaWQgcHVyZ2VJbnZh
bGlkQXVkaW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcyk7Ci0gICAgdm9pZCBw
dXJnZUludmFsaWRWaWRlb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2YWxpZFRyYWNrSWRzKTsKLSAg
ICB2b2lkIHB1cmdlSW52YWxpZFRleHRUcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lk
cyk7Ci0KICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431448</attachid>
            <date>2021-06-15 09:32:48 -0700</date>
            <delta_ts>2021-06-16 04:04:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210615183247.patch</filename>
            <type>text/plain</type>
            <size>16780</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uNWYzYTM5M2RjODdhYjhlOTY5MWI3YjIzODljZjlj
NDIwNTNhZTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA2LTE1ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9KCkgZmFtaWx5IG9m
IG1ldGhvZHMgaW50byBhIHNpbmdsZSBub3RpZnlQbGF5ZXJPZlRyYWNrVHlwZSgpIG9uZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUpOiBBZGRlZCBtZXRob2Qgd2l0aCBhIHNpZ25hdHVyZSBzaW1pbGFy
IHRvIHRoZSBvbmVzIHVzZWQgYnkge0F1ZGlvLFZpZGVvfVRyYWNrUHJpdmF0ZUdTdHJlYW1lciwg
c28gdGhhdCBpdCBmaXRzIGludG8gdGhlIG5vdGlmeVBsYXllck9mVHJhY2tUeXBlKCkgdGVtcGxh
dGUgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRyYWNrVG9QbGF5
ZXIpOiBSZWZhY3Rvcml6ZXMgYWRke0F1ZGlvLFZpZGVvLFRleHR9VHJhY2soKSBpbnRvIGFuIG92
ZXJsb2FkZWQgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgc28gaXQgY2FuIGJlIGNhbGxlZCBm
cm9tIHRlbXBsYXRlIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2tUeXBlKTogVGVtcGxhdGUgbWV0aG9kIHRoYXQg
dW5pZmllcyB0aGUgb2xkIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9KCkgaW1wbGVt
ZW50YXRpb25zLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhpcyBtZXRob2QgbWF5IHNlZW0g
YSBiaXQgd2VpcmQsIGJ1dCBhcmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG8gcHJldmVudCBpbnRl
cm5hbCBzd2l0Y2ggc3RhdGVtZW50cyBkZXBlbmRpbmcgb24gdGhlIFRyYWNrVHlwZSBhbmQgdG8g
anVnZ2xlIHdpdGggdGhlIGRpZmZlcmVudCAoaW5jb21wYXRpYmxlIGFuZCBub24gY2FzdGFibGUp
IHR5cGluZyBvZiB0aGUgYXVkaW8vdmlkZW8vdGV4dCB0cmFjayBoYXNoIG1hcHMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVk
aW8pOiBEZWxldGVkLiBSZWZhY3RvcmVkIGludG8gbm90aWZ5UGxheWVyT2ZUcmFja1R5cGUoKS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZWaWRlbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJhY2spOiBDYWxs
IHRoZSBuZXcgbm90aWZ5UGxheWVyT2ZUcmFja1R5cGUoKSByZWZhY3RvcmVkIGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0ZXh0
Q2hhbmdlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZEF1ZGlvVHJh
Y2tzKTogRGVsZXRlZC4gTm93IGltcGxlbWVudGVkIGRpcmVjdGx5IGluc2lkZSBub3RpZnlQbGF5
ZXJPZlRyYWNrVHlwZSgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpwdXJnZUludmFsaWRWaWRlb1RyYWNrcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRUZXh0VHJhY2tzKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOiBBZGRlZCBuZXcgVHJhY2tUeXBlIGVudW0sIGRlbGV0ZWQgbm90
aWZ5UGxheWVyT2Z7QXVkaW8sVmlkZW8sVGV4dH0oKSwgYWRkZWQgbm90aWZ5UGxheWVyT2ZUcmFj
a1R5cGUoKSwgZGVsZXRlZCBwdXJnZUludmFsaWR7QXVkaW8sVmlkZW8sVGV4dH1UcmFja3MoKS4K
KwogMjAyMS0wNS0yNSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBiYXNpYyA8ZGlhbG9nPiBlbGVtZW50IFVBIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjkxMjI2NGMwZmI5MzFlNGI0
MGM3YTBmZDhmNTYxYThhMTQzYzViZC4uODc0YWZmYzAwNmI5MGFiYmZhMmNiNTg3MTMyZGFhYzVl
MmVmYzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC00NCw2ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4g
Y3JlYXRlKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwg
R1JlZlB0cjxHc3RQYWQ+IHBhZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgs
IHBhZCk7CisgICAgfQorCiAgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBjcmVhdGUoZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIoaW5kZXgsIHN0cmVhbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmOTkwMTcyNjFlYmMzZDQxZGMyYWJiMWVkOTZhZWI2
ZDk4ZTUwMTA3Li5iYWNlZWY5ZGFmZjZiNzE5YWJlYzc2YTIyMDEyMGEyMWQwZDc2YTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTYz
LDMxICs5NjMsNTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNs
b2NrKGJvb2wgc3luYykKICAgICBzZXRTeW5jT25DbG9jayhhdWRpb1NpbmsoKSwgc3luYyk7CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVv
KCkKK3N0YXRpYyB2b2lkIGFkZFRyYWNrVG9QbGF5ZXIoTWVkaWFQbGF5ZXImIHBsYXllciwgQXVk
aW9UcmFja1ByaXZhdGUmIHRyYWNrKQoreworICAgIHBsYXllci5hZGRBdWRpb1RyYWNrKHRyYWNr
KTsKK30KKworc3RhdGljIHZvaWQgYWRkVHJhY2tUb1BsYXllcihNZWRpYVBsYXllciYgcGxheWVy
LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2spCit7CisgICAgcGxheWVyLmFkZFZpZGVvVHJhY2so
dHJhY2spOworfQorCitzdGF0aWMgdm9pZCBhZGRUcmFja1RvUGxheWVyKE1lZGlhUGxheWVyJiBw
bGF5ZXIsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQoreworICAgIHBsYXllci5hZGRU
ZXh0VHJhY2sodHJhY2spOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhY2tQcml2YXRlVHlw
ZT4KK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNr
VHlwZShUcmFja1R5cGUgdHlwZSwgY29uc3QgY2hhciogdHlwZU5hbWUsIGJvb2wqIGhhc1R5cGUs
IEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+PiYgdHJhY2tzKQog
ewogICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgp
KTsKKyAgICBBU1NFUlQodHlwZU5hbWUpOwogCiAgICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMg
YWZ0ZXIgYSBFT1MuIFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIgd2hlbiB0
aGUgdmlkZW8gaXMgZmluaXNoZWQuCi0gICAgaWYgKG1faXNFbmRSZWFjaGVkKQorICAgIGlmICht
X2lzRW5kUmVhY2hlZCAmJiAodHlwZSA9PSBBdWRpbyB8fCB0eXBlID09IFZpZGVvKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgbnVtVHJhY2tzID0gMDsKKyAgICB1bnNpZ25lZCBu
dW1iZXJPZlRyYWNrcyA9IDA7CiAgICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3Vy
Y2UoKTsKKworICAgIFN0cmluZ1ByaW50U3RyZWFtIG51bWJlck9mVHJhY2tzUHJvcGVydHk7Cisg
ICAgbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eS5wcmludGYoIm4tJXMiLCB0eXBlTmFtZSk7CisKICAg
ICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5nZXQoKSA6
IG1fcGlwZWxpbmUuZ2V0KCk7Ci0gICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLXZpZGVvIiwg
Jm51bVRyYWNrcywgbnVsbHB0cik7CisgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsIG51bWJlck9m
VHJhY2tzUHJvcGVydHkudG9DU3RyaW5nKCkuZGF0YSgpLCAmbnVtYmVyT2ZUcmFja3MsIG51bGxw
dHIpOwogCi0gICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJNZWRpYSBoYXMgJWQgdmlk
ZW8gdHJhY2tzIiwgbnVtVHJhY2tzKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwg
Ik1lZGlhIGhhcyAlZCAlcyB0cmFja3MiLCBudW1iZXJPZlRyYWNrcywgdHlwZU5hbWUpOwogCi0g
ICAgYm9vbCBvbGRIYXNWaWRlbyA9IG1faGFzVmlkZW87Ci0gICAgbV9oYXNWaWRlbyA9IG51bVRy
YWNrcyA+IDA7Ci0gICAgaWYgKG9sZEhhc1ZpZGVvICE9IG1faGFzVmlkZW8pCi0gICAgICAgIG1f
cGxheWVyLT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsKKyAgICBpZiAoaGFzVHlwZSkgeworICAg
ICAgICBib29sIG9sZEhhc1R5cGUgPSAqaGFzVHlwZTsKKyAgICAgICAgKmhhc1R5cGUgPSBudW1i
ZXJPZlRyYWNrcyA+IDA7CisgICAgICAgIGlmIChvbGRIYXNUeXBlICE9ICpoYXNUeXBlKQorICAg
ICAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwogCi0gICAgaWYgKG1f
aGFzVmlkZW8pCi0gICAgICAgIG1fcGxheWVyLT5zaXplQ2hhbmdlZCgpOworICAgICAgICBpZiAo
Kmhhc1R5cGUgJiYgdHlwZSA9PSBWaWRlbykKKyAgICAgICAgICAgIG1fcGxheWVyLT5zaXplQ2hh
bmdlZCgpOworICAgIH0KIAogICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVu
dC4gQmFpbGluZyBvdXQgbm93LiIpOwpAQCAtOTk1LDE2ICsxMDE4LDIwIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHZhbGlkVmlkZW9TdHJlYW1zOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1UcmFja3M7ICsraSkgeworICAgIFZlY3RvcjxT
dHJpbmc+IHZhbGlkU3RyZWFtczsKKyAgICBTdHJpbmdQcmludFN0cmVhbSBnZXRQYWRQcm9wZXJ0
eTsKKyAgICBnZXRQYWRQcm9wZXJ0eS5wcmludGYoImdldC0lcy1wYWQiLCB0eXBlTmFtZSk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUcmFja3M7ICsraSkgewogICAg
ICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
bV9waXBlbGluZS5nZXQoKSwgImdldC12aWRlby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBudWxs
cHRyKTsKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksIGdl
dFBhZFByb3BlcnR5LnRvQ1N0cmluZygpLmRhdGEoKSwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0
cik7CiAgICAgICAgIEFTU0VSVChwYWQpOwogCi0gICAgICAgIFN0cmluZyBzdHJlYW1JZCA9ICJW
IiArIFN0cmluZzo6bnVtYmVyKGkpOwotICAgICAgICB2YWxpZFZpZGVvU3RyZWFtcy5hcHBlbmQo
c3RyZWFtSWQpOwotICAgICAgICBpZiAoaSA8IG1fdmlkZW9UcmFja3Muc2l6ZSgpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGV4aXN0aW5nVHJhY2sg
PSBtX3ZpZGVvVHJhY2tzLmdldChzdHJlYW1JZCk7CisgICAgICAgIFN0cmluZyBzdHJlYW1JZCA9
IFN0cmluZyh0eXBlTmFtZSkuc3Vic3RyaW5nKDAsIDEpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNl
KCkgKyBTdHJpbmc6Om51bWJlcihpKTsKKyAgICAgICAgdmFsaWRTdHJlYW1zLmFwcGVuZChzdHJl
YW1JZCk7CisKKyAgICAgICAgaWYgKGkgPCB0cmFja3Muc2l6ZSgpKSB7CisgICAgICAgICAgICBS
ZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4gZXhpc3RpbmdUcmFjayA9IHRyYWNrcy5nZXQoc3RyZWFt
SWQpOwogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJhY2spIHsKICAgICAgICAgICAgICAgICBl
eGlzdGluZ1RyYWNrLT5zZXRJbmRleChpKTsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmlk
ZW8gaGFzIGJlZW4gcGxheWVkIHR3aWNlLCB0aGUgdHJhY2sgaXMgc3RpbGwgdGhlcmUsIGJ1dCB3
ZSBuZWVkCkBAIC0xMDE1LDE4ICsxMDQyLDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGF1dG8gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKLSAgICAgICAgaWYgKCF0cmFjay0+dHJhY2tJ
bmRleCgpKQorICAgICAgICBhdXRvIHRyYWNrID0gVHJhY2tQcml2YXRlVHlwZTo6Y3JlYXRlKG1h
a2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgaWYgKCF0cmFjay0+dHJhY2tJbmRl
eCgpICYmICh0eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0gVmlkZW8pKQogICAgICAgICAgICAgdHJh
Y2stPnNldEFjdGl2ZSh0cnVlKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5p
ZCgpKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYo
KSk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKKyAgICAg
ICAgdHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgYWRkVHJh
Y2tUb1BsYXllcigqbV9wbGF5ZXIsIHRyYWNrLmdldCgpKTsKICAgICB9CiAKLSAgICBwdXJnZUlu
dmFsaWRWaWRlb1RyYWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CisgICAgLy8gUHVyZ2UgaW52YWxp
ZCB0cmFja3MKKyAgICB0cmFja3MucmVtb3ZlSWYoW3ZhbGlkU3RyZWFtc10oYXV0byYga2V5QW5k
VmFsdWUpIHsKKyAgICAgICAgcmV0dXJuICF2YWxpZFN0cmVhbXMuY29udGFpbnMoa2V5QW5kVmFs
dWUua2V5KTsKKyAgICB9KTsKIAogICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsK
IH0KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc0ZpcnN0VmlkZW9TYW1w
bGVSZWFjaGVkU2luaygpIGNvbnN0CiB7CiAgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2Ft
cGxlTXV0ZXggfTsKQEAgLTEwNjEsMTI3ICsxMDkyLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp2aWRlb1NpbmtDYXBzQ2hhbmdlZChHc3RQYWQqIHZpZGVvU2lua1BhZCkK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWRDYWxsYmFjayhN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPm1fbm90
aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpBdWRpb0NoYW5nZWQsIFtwbGF5
ZXJdIHsKLSAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZkF1ZGlvKCk7CisgICAgICAgIHBs
YXllci0+bm90aWZ5UGxheWVyT2ZUcmFja1R5cGU8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+
KEF1ZGlvLCAiYXVkaW8iLCAmcGxheWVyLT5tX2hhc0F1ZGlvLCBwbGF5ZXItPm1fYXVkaW9UcmFj
a3MpOwogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZBdWRpbygpCi17Ci0gICAgaWYgKFVOTElLRUxZKCFtX3BpcGVsaW5lIHx8ICFt
X3NvdXJjZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJp
biB8fCBpc01lZGlhU291cmNlKCkpOwotCi0gICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMgYWZ0
ZXIgYSBFT1MuIFdlIGRvbid0IHdhbnQgdGhlIHRyYWNrcyB0byBkaXNhcHBlYXIgd2hlbiB0aGUg
dmlkZW8gaXMgZmluaXNoZWQuCi0gICAgaWYgKG1faXNFbmRSZWFjaGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB1bnNpZ25lZCBudW1UcmFja3MgPSAwOwotICAgIGJvb2wgdXNlTWVkaWFTb3Vy
Y2UgPSBpc01lZGlhU291cmNlKCk7Ci0gICAgR3N0RWxlbWVudCogZWxlbWVudCA9IHVzZU1lZGlh
U291cmNlID8gbV9zb3VyY2UuZ2V0KCkgOiBtX3BpcGVsaW5lLmdldCgpOwotICAgIGdfb2JqZWN0
X2dldChlbGVtZW50LCAibi1hdWRpbyIsICZudW1UcmFja3MsIG51bGxwdHIpOwotCi0gICAgR1NU
X0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJNZWRpYSBoYXMgJWQgYXVkaW8gdHJhY2tzIiwgbnVt
VHJhY2tzKTsKLSAgICBib29sIG9sZEhhc0F1ZGlvID0gbV9oYXNBdWRpbzsKLSAgICBtX2hhc0F1
ZGlvID0gbnVtVHJhY2tzID4gMDsKLSAgICBpZiAob2xkSGFzQXVkaW8gIT0gbV9oYXNBdWRpbykK
LSAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwotCi0gICAgaWYgKHVz
ZU1lZGlhU291cmNlKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlRy
YWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cuIik7Ci0gICAg
ICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHZhbGlkQXVkaW9TdHJlYW1zOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1UcmFja3M7ICsraSkgewotICAgICAgICBHUmVmUHRyPEdzdFBh
ZD4gcGFkOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9waXBlbGluZS5nZXQoKSwg
ImdldC1hdWRpby1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgQVNT
RVJUKHBhZCk7Ci0KLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gIkEiICsgU3RyaW5nOjpudW1i
ZXIoaSk7Ci0gICAgICAgIHZhbGlkQXVkaW9TdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0gICAg
ICAgIGlmIChpIDwgbV9hdWRpb1RyYWNrcy5zaXplKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9IG1fYXVkaW9UcmFja3Mu
Z2V0KHN0cmVhbUlkKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYWNrKSB7Ci0gICAgICAg
ICAgICAgICAgZXhpc3RpbmdUcmFjay0+c2V0SW5kZXgoaSk7Ci0gICAgICAgICAgICAgICAgLy8g
SWYgdGhlIHZpZGVvIGhhcyBiZWVuIHBsYXllZCB0d2ljZSwgdGhlIHRyYWNrIGlzIHN0aWxsIHRo
ZXJlLCBidXQgd2UgbmVlZAotICAgICAgICAgICAgICAgIC8vIHRvIHVwZGF0ZSB0aGUgcGFkIHBv
aW50ZXIuCi0gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJhY2stPnBhZCgpICE9IHBhZCkK
LSAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmFjay0+c2V0UGFkKEdSZWZQdHIocGFkKSk7
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBhdXRvIHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSht
YWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7Ci0gICAgICAgIGlmICghdHJhY2stPnRyYWNrSW5k
ZXgoKSkKLSAgICAgICAgICAgIHRyYWNrLT5zZXRBY3RpdmUodHJ1ZSk7Ci0gICAgICAgIEFTU0VS
VChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fYXVkaW9UcmFja3MuYWRkKHN0
cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwotICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFj
ayh0cmFjay5nZXQoKSk7Ci0gICAgfQotCi0gICAgcHVyZ2VJbnZhbGlkQXVkaW9UcmFja3ModmFs
aWRBdWRpb1N0cmVhbXMpOwotCi0gICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwot
fQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWRDYWxsYmFj
ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPm1f
bm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpUZXh0Q2hhbmdlZCwgW3Bs
YXllcl0gewotICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVGV4dCgpOworICAgICAgICBw
bGF5ZXItPm5vdGlmeVBsYXllck9mVHJhY2tUeXBlPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+KFRleHQsICJ0ZXh0IiwgbnVsbHB0ciwgcGxheWVyLT5tX3RleHRUcmFja3MpOwogICAg
IH0pOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVy
T2ZUZXh0KCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIW1fcGlwZWxpbmUgfHwgIW1fc291cmNlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1faXNMZWdhY3lQbGF5YmluIHx8IGlzTWVk
aWFTb3VyY2UoKSk7Ci0KLSAgICB1bnNpZ25lZCBudW1UcmFja3MgPSAwOwotICAgIGJvb2wgdXNl
TWVkaWFTb3VyY2UgPSBpc01lZGlhU291cmNlKCk7Ci0gICAgR3N0RWxlbWVudCogZWxlbWVudCA9
IHVzZU1lZGlhU291cmNlID8gbV9zb3VyY2UuZ2V0KCkgOiBtX3BpcGVsaW5lLmdldCgpOwotICAg
IGdfb2JqZWN0X2dldChlbGVtZW50LCAibi10ZXh0IiwgJm51bVRyYWNrcywgbnVsbHB0cik7Ci0K
LSAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCB0ZXh0IHRyYWNr
cyIsIG51bVRyYWNrcyk7Ci0KLSAgICBpZiAodXNlTWVkaWFTb3VyY2UpIHsKLSAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiVHJhY2tzIG1hbmFnZWQgYnkgc291cmNlIGVsZW1l
bnQuIEJhaWxpbmcgb3V0IG5vdy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZl
Y3RvcjxTdHJpbmc+IHZhbGlkVGV4dFN0cmVhbXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bVRyYWNrczsgKytpKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQ7Ci0gICAg
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdldCgpLCAiZ2V0LXRleHQtcGFk
IiwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVChwYWQpOwotCi0g
ICAgICAgIC8vIFdlIGNhbid0IGFzc3VtZSB0aGUgcGFkIGhhcyBhIHN0aWNreSBldmVudCBoZXJl
IGxpa2UgaW1wbGVtZW50ZWQgaW4KLSAgICAgICAgLy8gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lciBiZWNhdXNlIGl0IG1pZ2h0IGJlIGVtaXR0ZWQgYWZ0ZXIgdGhlCi0gICAgICAgIC8v
IHRyYWNrIHdhcyBjcmVhdGVkLiBTbyBmYWxsYmFjayB0byBhIGR1bW15IHN0cmVhbSBJRCBsaWtl
IGluIHRoZSBBdWRpbwotICAgICAgICAvLyBhbmQgVmlkZW8gdHJhY2tzLgotICAgICAgICBTdHJp
bmcgc3RyZWFtSWQgPSAiVCIgKyBTdHJpbmc6Om51bWJlcihpKTsKLQotICAgICAgICB2YWxpZFRl
eHRTdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0gICAgICAgIGlmIChpIDwgbV90ZXh0VHJhY2tz
LnNpemUoKSkgewotICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IGV4aXN0aW5nVHJhY2sgPSBtX3RleHRUcmFja3MuZ2V0KHN0cmVhbUlkKTsKLSAgICAg
ICAgICAgIGlmIChleGlzdGluZ1RyYWNrKSB7Ci0gICAgICAgICAgICAgICAgZXhpc3RpbmdUcmFj
ay0+c2V0SW5kZXgoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJhY2stPnBhZCgp
ID09IHBhZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFt
SWQsIHRyYWNrLmNvcHlSZWYoKSk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJh
Y2suZ2V0KCkpOwotICAgIH0KLQotICAgIHB1cmdlSW52YWxpZFRleHRUcmFja3ModmFsaWRUZXh0
U3RyZWFtcyk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVU
ZXh0U2FtcGxlKEdzdFNhbXBsZSogc2FtcGxlLCBjb25zdCBjaGFyKiBzdHJlYW1JZCkKIHsKICAg
ICBmb3IgKGF1dG8mIHRyYWNrIDogbV90ZXh0VHJhY2tzLnZhbHVlcygpKSB7CkBAIC0xNTI5LDcg
KzE0NTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tz
KGNvbnN0IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbgogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciogcGxheWVyKQogewogICAgIHBsYXllci0+bV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJl
YWROb3RpZmljYXRpb246OlZpZGVvQ2hhbmdlZCwgW3BsYXllcl0gewotICAgICAgICBwbGF5ZXIt
Pm5vdGlmeVBsYXllck9mVmlkZW8oKTsKKyAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZlRy
YWNrVHlwZTxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oVmlkZW8sICJ2aWRlbyIsICZwbGF5
ZXItPm1faGFzVmlkZW8sIHBsYXllci0+bV92aWRlb1RyYWNrcyk7CiAgICAgfSk7CiB9CiAKQEAg
LTIxNDQsMjcgKzIwNjUsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJv
Y2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBwcm9j
ZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkqPihpLT5kYXRh
KSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRB
dWRpb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2YWxpZFRyYWNrSWRzKQotewotICAgIG1fYXVkaW9U
cmFja3MucmVtb3ZlSWYoW3ZhbGlkVHJhY2tJZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAg
ICAgIHJldHVybiAhdmFsaWRUcmFja0lkcy5jb250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAg
IH0pOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VJbnZhbGlk
VmlkZW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3ZpZGVv
VHJhY2tzLnJlbW92ZUlmKFt2YWxpZFRyYWNrSWRzXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAg
ICAgICByZXR1cm4gIXZhbGlkVHJhY2tJZHMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxp
ZFRleHRUcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3RleHRU
cmFja3MucmVtb3ZlSWYoW3ZhbGlkVHJhY2tJZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAg
ICAgIHJldHVybiAhdmFsaWRUcmFja0lkcy5jb250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAg
IH0pOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXJpRGVjb2RlQmlu
RWxlbWVudEFkZGVkQ2FsbGJhY2soR3N0QmluKiBiaW4sIEdzdEVsZW1lbnQqIGVsZW1lbnQsIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewogICAgIGlmIChnX3N0cmNtcDAo
R19PQkpFQ1RfVFlQRV9OQU1FKGVsZW1lbnQpLCAiR3N0RG93bmxvYWRCdWZmZXIiKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA0NzU4NGE2ZmMy
NzExNWU0MmI1MGRkZTJmMzk1YjY3ZDcyNmViMTQ5Li4yNDhmZDQwN2ViZWNmMDA2ZDZjM2RiMjQw
ZTIzMjk0ODBlYTRmZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC0yNDksNiArMjQ5LDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgU3RyZWFt
Q29sbGVjdGlvbkNoYW5nZWQgPSAxIDw8IDcKICAgICB9OwogCisgICAgZW51bSBUcmFja1R5cGUg
eworICAgICAgICBWaWRlbywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFRleHQKKyAgICB9Owor
CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdXJh
dGlvbkNoYW5nZWQoKTsKQEAgLTI5Niw5ICszMDIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lk
IHJlYWR5VGltZXJGaXJlZCgpOwogCi0gICAgdm9pZCBub3RpZnlQbGF5ZXJPZlZpZGVvKCk7Ci0g
ICAgdm9pZCBub3RpZnlQbGF5ZXJPZkF1ZGlvKCk7Ci0gICAgdm9pZCBub3RpZnlQbGF5ZXJPZlRl
eHQoKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhY2tQcml2YXRlVHlwZT4gdm9pZCBub3Rp
ZnlQbGF5ZXJPZlRyYWNrVHlwZShUcmFja1R5cGUsIGNvbnN0IGNoYXIqIHR5cGVOYW1lLCBib29s
KiBoYXNUeXBlLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4m
IHRyYWNrcyk7CiAKICAgICB2b2lkIGVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICAgICB2
b2lkIHNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyhHT2JqZWN0Kik7CkBAIC00MzAsMTAgKzQzNCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2Uq
KTsKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwog
Ci0gICAgdm9pZCBwdXJnZUludmFsaWRBdWRpb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2YWxpZFRy
YWNrSWRzKTsKLSAgICB2b2lkIHB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKFZlY3RvcjxTdHJpbmc+
IHZhbGlkVHJhY2tJZHMpOwotICAgIHZvaWQgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyhWZWN0b3I8
U3RyaW5nPiB2YWxpZFRyYWNrSWRzKTsKLQogICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CiAgICAgYm9vbCBkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431534</attachid>
            <date>2021-06-16 04:04:31 -0700</date>
            <delta_ts>2021-06-16 09:19:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210616130430.patch</filename>
            <type>text/plain</type>
            <size>16746</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uN2Y2MDdjOGQ3ZjlmYmIzYjUzOWJhMTRmNWE3Mzlh
NGIyYmQyYTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA2LTE2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9IGZhbWlseSBvZiBt
ZXRob2RzIGludG8gYSBzaW5nbGUgbm90aWZ5UGxheWVyT2ZUcmFjaygpIG9uZS4KKyAgICAgICAg
U29tZSBWYXJpYW50IHZhcmlhYmxlcyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIG1ha2Ugc2V2ZXJh
bCBpbmNvbXBhdGlibGUgdHlwZXMgd29yayB0b2dldGhlciBhbmQgdG8gYXV0by1kZXRlY3QgdGhl
IHR5cGUgb2YgdHJhY2sgYXMgYW4gZW51bS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSk6IEFkZGVkIG1ldGhvZCB3aXRoIGEgc2lnbmF0
dXJlIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBieSB7QXVkaW8sVmlkZW99VHJhY2tQcml2YXRl
R1N0cmVhbWVyLCBzbyB0aGF0IGl0IGZpdHMgaW50byB0aGUgbm90aWZ5UGxheWVyT2ZUcmFjaygp
IHRlbXBsYXRlIGNvZGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2spOiBUZW1wbGF0ZSBtZXRo
b2QgdGhhdCB1bmlmaWVzIHRoZSBvbGQgbm90aWZ5UGxheWVyT2Z7QXVkaW8sVmlkZW8sVGV4dH0o
KSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8pOiBEZWxldGVkLiBSZWZhY3RvcmVkIGludG8g
bm90aWZ5UGxheWVyT2ZUcmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRp
b0NoYW5nZWRDYWxsYmFjayk6IENhbGwgdGhlIG5ldyBub3RpZnlQbGF5ZXJPZlRyYWNrKCkgcmVm
YWN0b3JlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWRDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NoYW5nZWRDYWxsYmFjayk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
dXJnZUludmFsaWRBdWRpb1RyYWNrcyk6IERlbGV0ZWQuIE5vdyBpbXBsZW1lbnRlZCBkaXJlY3Rs
eSBpbnNpZGUgbm90aWZ5UGxheWVyT2ZUcmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRWaWRlb1RyYWNrcyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFs
aWRUZXh0VHJhY2tzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOiBEZWxldGVkIG5vdGlmeVBsYXllck9m
e0F1ZGlvLFZpZGVvLFRleHR9KCksIGFkZGVkIG5vdGlmeVBsYXllck9mVHJhY2soKSwgZGVsZXRl
ZCBwdXJnZUludmFsaWR7QXVkaW8sVmlkZW8sVGV4dH1UcmFja3MoKS4KKwogMjAyMS0wNS0yNSAg
VGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYXNpYyA8ZGlhbG9n
PiBlbGVtZW50IFVBIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjkxMjI2NGMwZmI5MzFlNGI0MGM3YTBmZDhmNTYxYThh
MTQzYzViZC4uODc0YWZmYzAwNmI5MGFiYmZhMmNiNTg3MTMyZGFhYzVlMmVmYzJlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00
NCw2ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAorICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIHBhZCk7CisgICAgfQor
CiAgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgs
IHN0cmVhbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBmOTkwMTcyNjFlYmMzZDQxZGMyYWJiMWVkOTZhZWI2ZDk4ZTUwMTA3Li42Mzcy
Yzg1YjI4ZjZkYjQxYWI0YTkzNDhlN2MxOWY4ZTEyYzI2MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTYzLDMxICs5NjMsNTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNsb2NrKGJvb2wgc3luYykK
ICAgICBzZXRTeW5jT25DbG9jayhhdWRpb1NpbmsoKSwgc3luYyk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUcmFja1ByaXZhdGVUeXBlPgordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogewogICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGlu
ZSB8fCAhbV9zb3VyY2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9pc0xlZ2Fj
eVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKKyAgICBBU1NFUlQodHlwZU5hbWUpOworCisg
ICAgZW51bSBUcmFja1R5cGUgeyBBdWRpbyA9IDAsIFZpZGVvID0gMSwgVGV4dCA9IDIgfTsKKyAg
ICBWYXJpYW50PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4+Kj4gdHJhY2tzVmFyaWFudCA9IHN0YXRpY19jYXN0PEhhc2hNYXA8QXRv
bVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KDApOworICAgIGF1dG8gdHlwZShz
dGF0aWNfY2FzdDxUcmFja1R5cGU+KHRyYWNrc1ZhcmlhbnQuaW5kZXgoKSkpOworICAgIGF1dG8g
dHlwZU5hbWUgPSAoY29uc3QgY2hhcipbXSkgeyAiYXVkaW8iLCAidmlkZW8iLCAidGV4dCIgfVt0
eXBlXTsKKyAgICBhdXRvKiBoYXNUeXBlID0gKGJvb2wqW10pIHsgJm1faGFzQXVkaW8sICZtX2hh
c1ZpZGVvLCBudWxscHRyIH1bdHlwZV07CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBB
dWRpbzogdHJhY2tzVmFyaWFudCA9ICZtX2F1ZGlvVHJhY2tzOyBicmVhazsKKyAgICBjYXNlIFZp
ZGVvOiB0cmFja3NWYXJpYW50ID0gJm1fdmlkZW9UcmFja3M7IGJyZWFrOworICAgIGNhc2UgVGV4
dDogdHJhY2tzVmFyaWFudCA9ICZtX3RleHRUcmFja3M7IGJyZWFrOworICAgIH0KKyAgICBIYXNo
TWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9ICpnZXQ8
SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+Kj4odHJhY2tzVmFy
aWFudCk7CiAKICAgICAvLyBJZ25vcmUgbm90aWZpY2F0aW9ucyBhZnRlciBhIEVPUy4gV2UgZG9u
J3Qgd2FudCB0aGUgdHJhY2tzIHRvIGRpc2FwcGVhciB3aGVuIHRoZSB2aWRlbyBpcyBmaW5pc2hl
ZC4KLSAgICBpZiAobV9pc0VuZFJlYWNoZWQpCisgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmICh0
eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0gVmlkZW8pKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
bnNpZ25lZCBudW1UcmFja3MgPSAwOworICAgIHVuc2lnbmVkIG51bWJlck9mVHJhY2tzID0gMDsK
ICAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworCisgICAgU3RyaW5n
UHJpbnRTdHJlYW0gbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eTsKKyAgICBudW1iZXJPZlRyYWNrc1By
b3BlcnR5LnByaW50Zigibi0lcyIsIHR5cGVOYW1lKTsKKwogICAgIEdzdEVsZW1lbnQqIGVsZW1l
bnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsK
LSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRy
KTsKKyAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eS50b0NT
dHJpbmcoKS5kYXRhKCksICZudW1iZXJPZlRyYWNrcywgbnVsbHB0cik7CiAKLSAgICBHU1RfSU5G
T19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCB2aWRlbyB0cmFja3MiLCBudW1UcmFj
a3MpOworICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTWVkaWEgaGFzICVkICVzIHRy
YWNrcyIsIG51bWJlck9mVHJhY2tzLCB0eXBlTmFtZSk7CiAKLSAgICBib29sIG9sZEhhc1ZpZGVv
ID0gbV9oYXNWaWRlbzsKLSAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKLSAgICBpZiAo
b2xkSGFzVmlkZW8gIT0gbV9oYXNWaWRlbykKLSAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3Rlcmlz
dGljQ2hhbmdlZCgpOworICAgIGlmIChoYXNUeXBlKSB7CisgICAgICAgIGJvb2wgb2xkSGFzVHlw
ZSA9ICpoYXNUeXBlOworICAgICAgICAqaGFzVHlwZSA9IG51bWJlck9mVHJhY2tzID4gMDsKKyAg
ICAgICAgaWYgKG9sZEhhc1R5cGUgIT0gKmhhc1R5cGUpCisgICAgICAgICAgICBtX3BsYXllci0+
Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLSAgICBpZiAobV9oYXNWaWRlbykKLSAgICAgICAg
bV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAgICAgIGlmICgqaGFzVHlwZSAmJiB0eXBlID09
IFZpZGVvKQorICAgICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAgfQogCiAg
ICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cu
Iik7CkBAIC05OTUsMTYgKzEwMTUsMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
VmVjdG9yPFN0cmluZz4gdmFsaWRWaWRlb1N0cmVhbXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVRyYWNrczsgKytpKSB7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsaWRTdHJlYW1z
OworICAgIFN0cmluZ1ByaW50U3RyZWFtIGdldFBhZFByb3BlcnR5OworICAgIGdldFBhZFByb3Bl
cnR5LnByaW50ZigiZ2V0LSVzLXBhZCIsIHR5cGVOYW1lKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZlRyYWNrczsgKytpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0UGFk
PiBwYWQ7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdldCgpLCAi
Z2V0LXZpZGVvLXBhZCIsIGksICZwYWQub3V0UHRyKCksIG51bGxwdHIpOworICAgICAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUobV9waXBlbGluZS5nZXQoKSwgZ2V0UGFkUHJvcGVydHkudG9DU3Ry
aW5nKCkuZGF0YSgpLCBpLCAmcGFkLm91dFB0cigpLCBudWxscHRyKTsKICAgICAgICAgQVNTRVJU
KHBhZCk7CiAKLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gIlYiICsgU3RyaW5nOjpudW1iZXIo
aSk7Ci0gICAgICAgIHZhbGlkVmlkZW9TdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0gICAgICAg
IGlmIChpIDwgbV92aWRlb1RyYWNrcy5zaXplKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9IG1fdmlkZW9UcmFja3MuZ2V0
KHN0cmVhbUlkKTsKKyAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gU3RyaW5nKHR5cGVOYW1lKS5z
dWJzdHJpbmcoMCwgMSkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSArIFN0cmluZzo6bnVtYmVy
KGkpOworICAgICAgICB2YWxpZFN0cmVhbXMuYXBwZW5kKHN0cmVhbUlkKTsKKworICAgICAgICBp
ZiAoaSA8IHRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUcmFja1ByaXZhdGVU
eXBlPiBleGlzdGluZ1RyYWNrID0gdHJhY2tzLmdldChzdHJlYW1JZCk7CiAgICAgICAgICAgICBp
ZiAoZXhpc3RpbmdUcmFjaykgewogICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNldElu
ZGV4KGkpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVlbiBwbGF5ZWQg
dHdpY2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKQEAgLTEwMTUsMTgg
KzEwMzksMjggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXll
ck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0byB0cmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMp
LCBpLCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCisgICAgICAgIGF1
dG8gdHJhY2sgPSBUcmFja1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBp
LCBwYWQpOworICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5cGUgPT0gQXVk
aW8gfHwgdHlwZSA9PSBWaWRlbykpCiAgICAgICAgICAgICB0cmFjay0+c2V0QWN0aXZlKHRydWUp
OwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKLSAgICAgICAgbV9wbGF5
ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICB0cmFja3MuYWRkKHN0cmVh
bUlkLCB0cmFjay5jb3B5UmVmKCkpOworCisgICAgICAgIFZhcmlhbnQ8QXVkaW9UcmFja1ByaXZh
dGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmPiB2YXJpYW50
VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICBzd2l0Y2ggKHZhcmlhbnRUcmFjay5pbmRleCgp
KSB7CisgICAgICAgIGNhc2UgMDogbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJh
Y2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7IGJyZWFrOworICAgICAgICBjYXNlIDE6IG1fcGxh
eWVyLT5hZGRWaWRlb1RyYWNrKGdldDxWaWRlb1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykp
OyBicmVhazsKKyAgICAgICAgY2FzZSAyOiBtX3BsYXllci0+YWRkVGV4dFRyYWNrKGdldDxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7IGJyZWFrOworICAgICAgICB9CiAg
ICAgfQogCi0gICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVhbXMpOwor
ICAgIC8vIFB1cmdlIGludmFsaWQgdHJhY2tzCisgICAgdHJhY2tzLnJlbW92ZUlmKFt2YWxpZFN0
cmVhbXNdKGF1dG8mIGtleUFuZFZhbHVlKSB7CisgICAgICAgIHJldHVybiAhdmFsaWRTdHJlYW1z
LmNvbnRhaW5zKGtleUFuZFZhbHVlLmtleSk7CisgICAgfSk7CiAKICAgICBtX3BsYXllci0+bWVk
aWFFbmdpbmVVcGRhdGVkKCk7CiB9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpoYXNGaXJzdFZpZGVvU2FtcGxlUmVhY2hlZFNpbmsoKSBjb25zdAogewogICAgIExvY2tlciBz
YW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CkBAIC0xMDYxLDEyNyArMTA5NSwxNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9TaW5rQ2Fwc0NoYW5nZWQoR3N0
UGFkKiB2aWRlb1NpbmtQYWQpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVk
aW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7
CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6
QXVkaW9DaGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZB
dWRpbygpOworICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVHJhY2s8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIW1f
cGlwZWxpbmUgfHwgIW1fc291cmNlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1f
aXNMZWdhY3lQbGF5YmluIHx8IGlzTWVkaWFTb3VyY2UoKSk7Ci0KLSAgICAvLyBJZ25vcmUgbm90
aWZpY2F0aW9ucyBhZnRlciBhIEVPUy4gV2UgZG9uJ3Qgd2FudCB0aGUgdHJhY2tzIHRvIGRpc2Fw
cGVhciB3aGVuIHRoZSB2aWRlbyBpcyBmaW5pc2hlZC4KLSAgICBpZiAobV9pc0VuZFJlYWNoZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIG51bVRyYWNrcyA9IDA7Ci0gICAgYm9v
bCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFTb3VyY2UoKTsKLSAgICBHc3RFbGVtZW50KiBlbGVt
ZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3NvdXJjZS5nZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7
Ci0gICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJuLWF1ZGlvIiwgJm51bVRyYWNrcywgbnVsbHB0
cik7Ci0KLSAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCBhdWRp
byB0cmFja3MiLCBudW1UcmFja3MpOwotICAgIGJvb2wgb2xkSGFzQXVkaW8gPSBtX2hhc0F1ZGlv
OwotICAgIG1faGFzQXVkaW8gPSBudW1UcmFja3MgPiAwOwotICAgIGlmIChvbGRIYXNBdWRpbyAh
PSBtX2hhc0F1ZGlvKQotICAgICAgICBtX3BsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7
Ci0KLSAgICBpZiAodXNlTWVkaWFTb3VyY2UpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChw
aXBlbGluZSgpLCAiVHJhY2tzIG1hbmFnZWQgYnkgc291cmNlIGVsZW1lbnQuIEJhaWxpbmcgb3V0
IG5vdy4iKTsKLSAgICAgICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4gdmFsaWRBdWRpb1N0cmVhbXM7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7Ci0gICAgICAg
IEdSZWZQdHI8R3N0UGFkPiBwYWQ7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3Bp
cGVsaW5lLmdldCgpLCAiZ2V0LWF1ZGlvLXBhZCIsIGksICZwYWQub3V0UHRyKCksIG51bGxwdHIp
OwotICAgICAgICBBU1NFUlQocGFkKTsKLQotICAgICAgICBTdHJpbmcgc3RyZWFtSWQgPSAiQSIg
KyBTdHJpbmc6Om51bWJlcihpKTsKLSAgICAgICAgdmFsaWRBdWRpb1N0cmVhbXMuYXBwZW5kKHN0
cmVhbUlkKTsKLSAgICAgICAgaWYgKGkgPCBtX2F1ZGlvVHJhY2tzLnNpemUoKSkgewotICAgICAg
ICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiBleGlzdGluZ1RyYWNrID0g
bV9hdWRpb1RyYWNrcy5nZXQoc3RyZWFtSWQpOwotICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJh
Y2spIHsKLSAgICAgICAgICAgICAgICBleGlzdGluZ1RyYWNrLT5zZXRJbmRleChpKTsKLSAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgdmlkZW8gaGFzIGJlZW4gcGxheWVkIHR3aWNlLCB0aGUgdHJh
Y2sgaXMgc3RpbGwgdGhlcmUsIGJ1dCB3ZSBuZWVkCi0gICAgICAgICAgICAgICAgLy8gdG8gdXBk
YXRlIHRoZSBwYWQgcG9pbnRlci4KLSAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmFjay0+
cGFkKCkgIT0gcGFkKQotICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyYWNrLT5zZXRQYWQo
R1JlZlB0cihwYWQpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKLSAgICAgICAgaWYgKCF0
cmFjay0+dHJhY2tJbmRleCgpKQotICAgICAgICAgICAgdHJhY2stPnNldEFjdGl2ZSh0cnVlKTsK
LSAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKLSAgICAgICAgbV9hdWRp
b1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7Ci0gICAgICAgIG1fcGxheWVy
LT5hZGRBdWRpb1RyYWNrKHRyYWNrLmdldCgpKTsKLSAgICB9Ci0KLSAgICBwdXJnZUludmFsaWRB
dWRpb1RyYWNrcyh2YWxpZEF1ZGlvU3RyZWFtcyk7Ci0KLSAgICBtX3BsYXllci0+bWVkaWFFbmdp
bmVVcGRhdGVkKCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0ZXh0
Q2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewog
ICAgIHBsYXllci0+bV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246OlRl
eHRDaGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUZXh0
KCk7CisgICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUcmFjazxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyPigpOwogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUZXh0KCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIW1f
cGlwZWxpbmUgfHwgIW1fc291cmNlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1f
aXNMZWdhY3lQbGF5YmluIHx8IGlzTWVkaWFTb3VyY2UoKSk7Ci0KLSAgICB1bnNpZ25lZCBudW1U
cmFja3MgPSAwOwotICAgIGJvb2wgdXNlTWVkaWFTb3VyY2UgPSBpc01lZGlhU291cmNlKCk7Ci0g
ICAgR3N0RWxlbWVudCogZWxlbWVudCA9IHVzZU1lZGlhU291cmNlID8gbV9zb3VyY2UuZ2V0KCkg
OiBtX3BpcGVsaW5lLmdldCgpOwotICAgIGdfb2JqZWN0X2dldChlbGVtZW50LCAibi10ZXh0Iiwg
Jm51bVRyYWNrcywgbnVsbHB0cik7Ci0KLSAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwg
Ik1lZGlhIGhhcyAlZCB0ZXh0IHRyYWNrcyIsIG51bVRyYWNrcyk7Ci0KLSAgICBpZiAodXNlTWVk
aWFTb3VyY2UpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiVHJhY2tz
IG1hbmFnZWQgYnkgc291cmNlIGVsZW1lbnQuIEJhaWxpbmcgb3V0IG5vdy4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHZhbGlkVGV4dFN0cmVhbXM7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7Ci0gICAgICAgIEdS
ZWZQdHI8R3N0UGFkPiBwYWQ7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVs
aW5lLmdldCgpLCAiZ2V0LXRleHQtcGFkIiwgaSwgJnBhZC5vdXRQdHIoKSwgbnVsbHB0cik7Ci0g
ICAgICAgIEFTU0VSVChwYWQpOwotCi0gICAgICAgIC8vIFdlIGNhbid0IGFzc3VtZSB0aGUgcGFk
IGhhcyBhIHN0aWNreSBldmVudCBoZXJlIGxpa2UgaW1wbGVtZW50ZWQgaW4KLSAgICAgICAgLy8g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lciBiZWNhdXNlIGl0IG1pZ2h0IGJlIGVtaXR0
ZWQgYWZ0ZXIgdGhlCi0gICAgICAgIC8vIHRyYWNrIHdhcyBjcmVhdGVkLiBTbyBmYWxsYmFjayB0
byBhIGR1bW15IHN0cmVhbSBJRCBsaWtlIGluIHRoZSBBdWRpbwotICAgICAgICAvLyBhbmQgVmlk
ZW8gdHJhY2tzLgotICAgICAgICBTdHJpbmcgc3RyZWFtSWQgPSAiVCIgKyBTdHJpbmc6Om51bWJl
cihpKTsKLQotICAgICAgICB2YWxpZFRleHRTdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0gICAg
ICAgIGlmIChpIDwgbV90ZXh0VHJhY2tzLnNpemUoKSkgewotICAgICAgICAgICAgUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGV4aXN0aW5nVHJhY2sgPSBtX3RleHRUcmFj
a3MuZ2V0KHN0cmVhbUlkKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYWNrKSB7Ci0gICAg
ICAgICAgICAgICAgZXhpc3RpbmdUcmFjay0+c2V0SW5kZXgoaSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGV4aXN0aW5nVHJhY2stPnBhZCgpID09IHBhZCkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIHRyYWNrID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7Ci0gICAgICAg
IG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7Ci0gICAgICAgIG1f
cGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwotICAgIH0KLQotICAgIHB1cmdlSW52
YWxpZFRleHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVUZXh0U2FtcGxlKEdzdFNhbXBsZSogc2FtcGxlLCBjb25z
dCBjaGFyKiBzdHJlYW1JZCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90ZXh0VHJhY2tz
LnZhbHVlcygpKSB7CkBAIC0xNTI5LDcgKzE0NTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKGNvbnN0IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlv
bgogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewogICAgIHBsYXllci0+bV9u
b3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246OlZpZGVvQ2hhbmdlZCwgW3Bs
YXllcl0gewotICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVmlkZW8oKTsKKyAgICAgICAg
cGxheWVyLT5ub3RpZnlQbGF5ZXJPZlRyYWNrPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPigp
OwogICAgIH0pOwogfQogCkBAIC0yMTQ0LDI3ICsyMDY4LDYgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSog
ZW50cnkKICAgICAgICAgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KHN0YXRpY19jYXN0PEdz
dFRvY0VudHJ5Kj4oaS0+ZGF0YSkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cHVyZ2VJbnZhbGlkQXVkaW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lk
cykKLXsKLSAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZUlmKFt2YWxpZFRyYWNrSWRzXShhdXRvJiBr
ZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJhY2tJZHMuY29udGFpbnMoa2V5
QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKFZlY3RvcjxTdHJpbmc+IHZhbGlkVHJhY2tJ
ZHMpCi17Ci0gICAgbV92aWRlb1RyYWNrcy5yZW1vdmVJZihbdmFsaWRUcmFja0lkc10oYXV0byYg
a2V5QW5kVmFsdWUpIHsKLSAgICAgICAgcmV0dXJuICF2YWxpZFRyYWNrSWRzLmNvbnRhaW5zKGtl
eUFuZFZhbHVlLmtleSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpwdXJnZUludmFsaWRUZXh0VHJhY2tzKFZlY3RvcjxTdHJpbmc+IHZhbGlkVHJhY2tJ
ZHMpCi17Ci0gICAgbV90ZXh0VHJhY2tzLnJlbW92ZUlmKFt2YWxpZFRyYWNrSWRzXShhdXRvJiBr
ZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJhY2tJZHMuY29udGFpbnMoa2V5
QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVyaURlY29kZUJpbkVsZW1lbnRBZGRlZENhbGxiYWNrKEdzdEJpbiogYmluLCBHc3RF
bGVtZW50KiBlbGVtZW50LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsK
ICAgICBpZiAoZ19zdHJjbXAwKEdfT0JKRUNUX1RZUEVfTkFNRShlbGVtZW50KSwgIkdzdERvd25s
b2FkQnVmZmVyIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKaW5kZXggNDc1ODRhNmZjMjcxMTVlNDJiNTBkZGUyZjM5NWI2N2Q3MjZlYjE0OS4uYzJhZjkx
MTQ1YjQ0ZGU4MzZhNzg0NjliOTViOTRmYjQ0OWFkYzJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjk2LDkgKzI5Niw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgcmVhZHlUaW1lckZpcmVkKCk7CiAKLSAgICB2b2lkIG5vdGlmeVBsYXll
ck9mVmlkZW8oKTsKLSAgICB2b2lkIG5vdGlmeVBsYXllck9mQXVkaW8oKTsKLSAgICB2b2lkIG5v
dGlmeVBsYXllck9mVGV4dCgpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmFja1ByaXZhdGVU
eXBlPiB2b2lkIG5vdGlmeVBsYXllck9mVHJhY2soKTsKIAogICAgIHZvaWQgZW5zdXJlQXVkaW9T
b3VyY2VQcm92aWRlcigpOwogICAgIHZvaWQgc2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKEdPYmpl
Y3QqKTsKQEAgLTQzMCwxMCArNDI4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJs
ZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50
c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICB2b2lkIHB1cmdlSW52YWxpZEF1ZGlvVHJhY2tz
KFZlY3RvcjxTdHJpbmc+IHZhbGlkVHJhY2tJZHMpOwotICAgIHZvaWQgcHVyZ2VJbnZhbGlkVmlk
ZW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcyk7Ci0gICAgdm9pZCBwdXJnZUlu
dmFsaWRUZXh0VHJhY2tzKFZlY3RvcjxTdHJpbmc+IHZhbGlkVHJhY2tJZHMpOwotCiAgICAgU3Ry
aW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1l
ciI7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431550</attachid>
            <date>2021-06-16 09:19:58 -0700</date>
            <delta_ts>2021-06-17 04:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210616181956.patch</filename>
            <type>text/plain</type>
            <size>16757</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uN2Y2MDdjOGQ3ZjlmYmIzYjUzOWJhMTRmNWE3Mzlh
NGIyYmQyYTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA2LTE2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZmFjdG9yZWQgdGhlIG5vdGlmeVBsYXllck9me0F1ZGlvLFZpZGVvLFRleHR9IGZhbWlseSBvZiBt
ZXRob2RzIGludG8gYSBzaW5nbGUgbm90aWZ5UGxheWVyT2ZUcmFjaygpIG9uZS4KKyAgICAgICAg
U29tZSBWYXJpYW50IHZhcmlhYmxlcyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIG1ha2Ugc2V2ZXJh
bCBpbmNvbXBhdGlibGUgdHlwZXMgd29yayB0b2dldGhlciBhbmQgdG8gYXV0by1kZXRlY3QgdGhl
IHR5cGUgb2YgdHJhY2sgYXMgYW4gZW51bS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSk6IEFkZGVkIG1ldGhvZCB3aXRoIGEgc2lnbmF0
dXJlIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBieSB7QXVkaW8sVmlkZW99VHJhY2tQcml2YXRl
R1N0cmVhbWVyLCBzbyB0aGF0IGl0IGZpdHMgaW50byB0aGUgbm90aWZ5UGxheWVyT2ZUcmFjaygp
IHRlbXBsYXRlIGNvZGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVHJhY2spOiBUZW1wbGF0ZSBtZXRo
b2QgdGhhdCB1bmlmaWVzIHRoZSBvbGQgbm90aWZ5UGxheWVyT2Z7QXVkaW8sVmlkZW8sVGV4dH0o
KSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8pOiBEZWxldGVkLiBSZWZhY3RvcmVkIGludG8g
bm90aWZ5UGxheWVyT2ZUcmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRp
b0NoYW5nZWRDYWxsYmFjayk6IENhbGwgdGhlIG5ldyBub3RpZnlQbGF5ZXJPZlRyYWNrKCkgcmVm
YWN0b3JlZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dGV4dENoYW5nZWRDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb0NoYW5nZWRDYWxsYmFjayk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
dXJnZUludmFsaWRBdWRpb1RyYWNrcyk6IERlbGV0ZWQuIE5vdyBpbXBsZW1lbnRlZCBkaXJlY3Rs
eSBpbnNpZGUgbm90aWZ5UGxheWVyT2ZUcmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRWaWRlb1RyYWNrcyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFs
aWRUZXh0VHJhY2tzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOiBEZWxldGVkIG5vdGlmeVBsYXllck9m
e0F1ZGlvLFZpZGVvLFRleHR9KCksIGFkZGVkIG5vdGlmeVBsYXllck9mVHJhY2soKSwgZGVsZXRl
ZCBwdXJnZUludmFsaWR7QXVkaW8sVmlkZW8sVGV4dH1UcmFja3MoKS4KKwogMjAyMS0wNS0yNSAg
VGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYXNpYyA8ZGlhbG9n
PiBlbGVtZW50IFVBIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjkxMjI2NGMwZmI5MzFlNGI0MGM3YTBmZDhmNTYxYThh
MTQzYzViZC4uODc0YWZmYzAwNmI5MGFiYmZhMmNiNTg3MTMyZGFhYzVlMmVmYzJlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00
NCw2ICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOwogICAgIH0KIAorICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
IHBhZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIHBhZCk7CisgICAgfQor
CiAgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUo
Z2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5kZXgs
IHN0cmVhbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBmOTkwMTcyNjFlYmMzZDQxZGMyYWJiMWVkOTZhZWI2ZDk4ZTUwMTA3Li4zYjlj
MzcwNDY5Mjk5MjkxMmVlYjlhNTNjOTlmM2E2M2FiYzU2MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTYzLDMxICs5NjMsNTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN5bmNPbkNsb2NrKGJvb2wgc3luYykK
ICAgICBzZXRTeW5jT25DbG9jayhhdWRpb1NpbmsoKSwgc3luYyk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUcmFja1ByaXZhdGVUeXBlPgordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVHJhY2soKQogewogICAgIGlmIChVTkxJS0VMWSghbV9waXBlbGlu
ZSB8fCAhbV9zb3VyY2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9pc0xlZ2Fj
eVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKKyAgICBBU1NFUlQodHlwZU5hbWUpOworCisg
ICAgZW51bSBUcmFja1R5cGUgeyBBdWRpbyA9IDAsIFZpZGVvID0gMSwgVGV4dCA9IDIgfTsKKyAg
ICBWYXJpYW50PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4+Kj4gdmFyaWFudFRyYWNrcyA9IHN0YXRpY19jYXN0PEhhc2hNYXA8QXRv
bVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KDApOworICAgIGF1dG8gdHlwZShz
dGF0aWNfY2FzdDxUcmFja1R5cGU+KHZhcmlhbnRUcmFja3MuaW5kZXgoKSkpOworICAgIGF1dG8g
dHlwZU5hbWUgPSAoY29uc3QgY2hhcipbXSkgeyAiYXVkaW8iLCAidmlkZW8iLCAidGV4dCIgfVt0
eXBlXTsKKyAgICBhdXRvKiBoYXNUeXBlID0gKGJvb2wqW10pIHsgJm1faGFzQXVkaW8sICZtX2hh
c1ZpZGVvLCBudWxscHRyIH1bdHlwZV07CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBB
dWRpbzogdmFyaWFudFRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOyBicmVhazsKKyAgICBjYXNlIFZp
ZGVvOiB2YXJpYW50VHJhY2tzID0gJm1fdmlkZW9UcmFja3M7IGJyZWFrOworICAgIGNhc2UgVGV4
dDogdmFyaWFudFRyYWNrcyA9ICZtX3RleHRUcmFja3M7IGJyZWFrOworICAgIH0KKyAgICBIYXNo
TWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9ICpnZXQ8
SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+Kj4odmFyaWFudFRy
YWNrcyk7CiAKICAgICAvLyBJZ25vcmUgbm90aWZpY2F0aW9ucyBhZnRlciBhIEVPUy4gV2UgZG9u
J3Qgd2FudCB0aGUgdHJhY2tzIHRvIGRpc2FwcGVhciB3aGVuIHRoZSB2aWRlbyBpcyBmaW5pc2hl
ZC4KLSAgICBpZiAobV9pc0VuZFJlYWNoZWQpCisgICAgaWYgKG1faXNFbmRSZWFjaGVkICYmICh0
eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0gVmlkZW8pKQogICAgICAgICByZXR1cm47CiAKLSAgICB1
bnNpZ25lZCBudW1UcmFja3MgPSAwOworICAgIHVuc2lnbmVkIG51bWJlck9mVHJhY2tzID0gMDsK
ICAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworCisgICAgU3RyaW5n
UHJpbnRTdHJlYW0gbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eTsKKyAgICBudW1iZXJPZlRyYWNrc1By
b3BlcnR5LnByaW50Zigibi0lcyIsIHR5cGVOYW1lKTsKKwogICAgIEdzdEVsZW1lbnQqIGVsZW1l
bnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5nZXQoKTsK
LSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBudWxscHRy
KTsKKyAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eS50b0NT
dHJpbmcoKS5kYXRhKCksICZudW1iZXJPZlRyYWNrcywgbnVsbHB0cik7CiAKLSAgICBHU1RfSU5G
T19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCB2aWRlbyB0cmFja3MiLCBudW1UcmFj
a3MpOworICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTWVkaWEgaGFzICVkICVzIHRy
YWNrcyIsIG51bWJlck9mVHJhY2tzLCB0eXBlTmFtZSk7CiAKLSAgICBib29sIG9sZEhhc1ZpZGVv
ID0gbV9oYXNWaWRlbzsKLSAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKLSAgICBpZiAo
b2xkSGFzVmlkZW8gIT0gbV9oYXNWaWRlbykKLSAgICAgICAgbV9wbGF5ZXItPmNoYXJhY3Rlcmlz
dGljQ2hhbmdlZCgpOworICAgIGlmIChoYXNUeXBlKSB7CisgICAgICAgIGJvb2wgb2xkSGFzVHlw
ZSA9ICpoYXNUeXBlOworICAgICAgICAqaGFzVHlwZSA9IG51bWJlck9mVHJhY2tzID4gMDsKKyAg
ICAgICAgaWYgKG9sZEhhc1R5cGUgIT0gKmhhc1R5cGUpCisgICAgICAgICAgICBtX3BsYXllci0+
Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLSAgICBpZiAobV9oYXNWaWRlbykKLSAgICAgICAg
bV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAgICAgIGlmICgqaGFzVHlwZSAmJiB0eXBlID09
IFZpZGVvKQorICAgICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAgfQogCiAg
ICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91dCBub3cu
Iik7CkBAIC05OTUsMTYgKzEwMTUsMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
VmVjdG9yPFN0cmluZz4gdmFsaWRWaWRlb1N0cmVhbXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVRyYWNrczsgKytpKSB7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsaWRTdHJlYW1z
OworICAgIFN0cmluZ1ByaW50U3RyZWFtIGdldFBhZFByb3BlcnR5OworICAgIGdldFBhZFByb3Bl
cnR5LnByaW50ZigiZ2V0LSVzLXBhZCIsIHR5cGVOYW1lKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZlRyYWNrczsgKytpKSB7CiAgICAgICAgIEdSZWZQdHI8R3N0UGFk
PiBwYWQ7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdldCgpLCAi
Z2V0LXZpZGVvLXBhZCIsIGksICZwYWQub3V0UHRyKCksIG51bGxwdHIpOworICAgICAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUobV9waXBlbGluZS5nZXQoKSwgZ2V0UGFkUHJvcGVydHkudG9DU3Ry
aW5nKCkuZGF0YSgpLCBpLCAmcGFkLm91dFB0cigpLCBudWxscHRyKTsKICAgICAgICAgQVNTRVJU
KHBhZCk7CiAKLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gIlYiICsgU3RyaW5nOjpudW1iZXIo
aSk7Ci0gICAgICAgIHZhbGlkVmlkZW9TdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0gICAgICAg
IGlmIChpIDwgbV92aWRlb1RyYWNrcy5zaXplKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9IG1fdmlkZW9UcmFja3MuZ2V0
KHN0cmVhbUlkKTsKKyAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gU3RyaW5nKHR5cGVOYW1lKS5z
dWJzdHJpbmcoMCwgMSkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSArIFN0cmluZzo6bnVtYmVy
KGkpOworICAgICAgICB2YWxpZFN0cmVhbXMuYXBwZW5kKHN0cmVhbUlkKTsKKworICAgICAgICBp
ZiAoaSA8IHRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUcmFja1ByaXZhdGVU
eXBlPiBleGlzdGluZ1RyYWNrID0gdHJhY2tzLmdldChzdHJlYW1JZCk7CiAgICAgICAgICAgICBp
ZiAoZXhpc3RpbmdUcmFjaykgewogICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNldElu
ZGV4KGkpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVlbiBwbGF5ZWQg
dHdpY2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKQEAgLTEwMTUsMTgg
KzEwMzksMjggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXll
ck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0byB0cmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMp
LCBpLCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCisgICAgICAgIGF1
dG8gdHJhY2sgPSBUcmFja1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBp
LCBwYWQpOworICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5cGUgPT0gQXVk
aW8gfHwgdHlwZSA9PSBWaWRlbykpCiAgICAgICAgICAgICB0cmFjay0+c2V0QWN0aXZlKHRydWUp
OwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKLSAgICAgICAgbV9wbGF5
ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICB0cmFja3MuYWRkKHN0cmVh
bUlkLCB0cmFjay5jb3B5UmVmKCkpOworCisgICAgICAgIFZhcmlhbnQ8QXVkaW9UcmFja1ByaXZh
dGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmPiB2YXJpYW50
VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICBzd2l0Y2ggKHZhcmlhbnRUcmFjay5pbmRleCgp
KSB7CisgICAgICAgIGNhc2UgQXVkaW86IG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKGdldDxBdWRp
b1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVhazsKKyAgICAgICAgY2FzZSBWaWRl
bzogbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soZ2V0PFZpZGVvVHJhY2tQcml2YXRlJj4odmFyaWFu
dFRyYWNrKSk7IGJyZWFrOworICAgICAgICBjYXNlIFRleHQ6IG1fcGxheWVyLT5hZGRUZXh0VHJh
Y2soZ2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsgYnJlYWs7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICBwdXJnZUludmFsaWRWaWRlb1RyYWNrcyh2YWxpZFZpZGVv
U3RyZWFtcyk7CisgICAgLy8gUHVyZ2UgaW52YWxpZCB0cmFja3MKKyAgICB0cmFja3MucmVtb3Zl
SWYoW3ZhbGlkU3RyZWFtc10oYXV0byYga2V5QW5kVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuICF2
YWxpZFN0cmVhbXMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKKyAgICB9KTsKIAogICAgIG1f
cGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIH0KKwogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Omhhc0ZpcnN0VmlkZW9TYW1wbGVSZWFjaGVkU2luaygpIGNvbnN0CiB7CiAg
ICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKQEAgLTEwNjEsMTI3ICsx
MDk1LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb1NpbmtDYXBz
Q2hhbmdlZChHc3RQYWQqIHZpZGVvU2lua1BhZCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjphdWRpb0NoYW5nZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
IHBsYXllcikKIHsKICAgICBwbGF5ZXItPm1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90
aWZpY2F0aW9uOjpBdWRpb0NoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxheWVyLT5ub3Rp
ZnlQbGF5ZXJPZkF1ZGlvKCk7CisgICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZUcmFjazxB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oKTsKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQotewotICAgIGlmIChV
TkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKLQotICAgIC8v
IElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3YW50IHRoZSB0cmFj
a3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgotICAgIGlmIChtX2lz
RW5kUmVhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgbnVtVHJhY2tzID0g
MDsKLSAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOwotICAgIEdzdEVs
ZW1lbnQqIGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBl
bGluZS5nZXQoKTsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tYXVkaW8iLCAmbnVtVHJh
Y2tzLCBudWxscHRyKTsKLQotICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTWVkaWEg
aGFzICVkIGF1ZGlvIHRyYWNrcyIsIG51bVRyYWNrcyk7Ci0gICAgYm9vbCBvbGRIYXNBdWRpbyA9
IG1faGFzQXVkaW87Ci0gICAgbV9oYXNBdWRpbyA9IG51bVRyYWNrcyA+IDA7Ci0gICAgaWYgKG9s
ZEhhc0F1ZGlvICE9IG1faGFzQXVkaW8pCi0gICAgICAgIG1fcGxheWVyLT5jaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoKTsKLQotICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHBpcGVsaW5lKCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVudC4g
QmFpbGluZyBvdXQgbm93LiIpOwotICAgICAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVVcGRhdGVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2YWxpZEF1
ZGlvU3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kp
IHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksICJnZXQtYXVkaW8tcGFkIiwgaSwgJnBhZC5vdXRQdHIo
KSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVChwYWQpOwotCi0gICAgICAgIFN0cmluZyBzdHJl
YW1JZCA9ICJBIiArIFN0cmluZzo6bnVtYmVyKGkpOwotICAgICAgICB2YWxpZEF1ZGlvU3RyZWFt
cy5hcHBlbmQoc3RyZWFtSWQpOwotICAgICAgICBpZiAoaSA8IG1fYXVkaW9UcmFja3Muc2l6ZSgp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGV4aXN0
aW5nVHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChzdHJlYW1JZCk7Ci0gICAgICAgICAgICBpZiAo
ZXhpc3RpbmdUcmFjaykgewotICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNldEluZGV4
KGkpOwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVlbiBwbGF5ZWQgdHdp
Y2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKLSAgICAgICAgICAgICAg
ICAvLyB0byB1cGRhdGUgdGhlIHBhZCBwb2ludGVyLgotICAgICAgICAgICAgICAgIGlmIChleGlz
dGluZ1RyYWNrLT5wYWQoKSAhPSBwYWQpCi0gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJh
Y2stPnNldFBhZChHUmVmUHRyKHBhZCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwotICAg
ICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCi0gICAgICAgICAgICB0cmFjay0+c2V0QWN0
aXZlKHRydWUpOwotICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwotICAg
ICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKLSAgICAg
ICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOwotICAgIH0KLQotICAgIHB1
cmdlSW52YWxpZEF1ZGlvVHJhY2tzKHZhbGlkQXVkaW9TdHJlYW1zKTsKLQotICAgIG1fcGxheWVy
LT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnRleHRDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBw
bGF5ZXIpCiB7CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVhZE5vdGlm
aWNhdGlvbjo6VGV4dENoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxheWVyLT5ub3RpZnlQ
bGF5ZXJPZlRleHQoKTsKKyAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZlRyYWNrPEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQotewotICAgIGlmIChV
TkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKLQotICAgIHVu
c2lnbmVkIG51bVRyYWNrcyA9IDA7Ci0gICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlzTWVkaWFT
b3VyY2UoKTsKLSAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2UgPyBtX3Nv
dXJjZS5nZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7Ci0gICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQs
ICJuLXRleHQiLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKLQotICAgIEdTVF9JTkZPX09CSkVDVChw
aXBlbGluZSgpLCAiTWVkaWEgaGFzICVkIHRleHQgdHJhY2tzIiwgbnVtVHJhY2tzKTsKLQotICAg
IGlmICh1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVudC4gQmFpbGluZyBvdXQgbm93LiIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4gdmFsaWRUZXh0
U3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVHJhY2tzOyArK2kpIHsK
LSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKG1fcGlwZWxpbmUuZ2V0KCksICJnZXQtdGV4dC1wYWQiLCBpLCAmcGFkLm91dFB0cigpLCBu
dWxscHRyKTsKLSAgICAgICAgQVNTRVJUKHBhZCk7Ci0KLSAgICAgICAgLy8gV2UgY2FuJ3QgYXNz
dW1lIHRoZSBwYWQgaGFzIGEgc3RpY2t5IGV2ZW50IGhlcmUgbGlrZSBpbXBsZW1lbnRlZCBpbgot
ICAgICAgICAvLyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyIGJlY2F1c2UgaXQgbWln
aHQgYmUgZW1pdHRlZCBhZnRlciB0aGUKLSAgICAgICAgLy8gdHJhY2sgd2FzIGNyZWF0ZWQuIFNv
IGZhbGxiYWNrIHRvIGEgZHVtbXkgc3RyZWFtIElEIGxpa2UgaW4gdGhlIEF1ZGlvCi0gICAgICAg
IC8vIGFuZCBWaWRlbyB0cmFja3MuCi0gICAgICAgIFN0cmluZyBzdHJlYW1JZCA9ICJUIiArIFN0
cmluZzo6bnVtYmVyKGkpOwotCi0gICAgICAgIHZhbGlkVGV4dFN0cmVhbXMuYXBwZW5kKHN0cmVh
bUlkKTsKLSAgICAgICAgaWYgKGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9
IG1fdGV4dFRyYWNrcy5nZXQoc3RyZWFtSWQpOwotICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJh
Y2spIHsKLSAgICAgICAgICAgICAgICBleGlzdGluZ1RyYWNrLT5zZXRJbmRleChpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmFjay0+cGFkKCkgPT0gcGFkKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGF1
dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFk
KTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsK
LSAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7Ci0gICAgfQotCi0g
ICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKLX0KLQogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVRleHRTYW1wbGUoR3N0U2FtcGxlKiBz
YW1wbGUsIGNvbnN0IGNoYXIqIHN0cmVhbUlkKQogewogICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X3RleHRUcmFja3MudmFsdWVzKCkpIHsKQEAgLTE1MjksNyArMTQ1Myw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxHc3RTdHJl
YW1Db2xsZWN0aW9uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9DaGFu
Z2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAg
cGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6VmlkZW9D
aGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZWaWRlbygp
OworICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVHJhY2s8VmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+KCk7CiAgICAgfSk7CiB9CiAKQEAgLTIxNDQsMjcgKzIwNjgsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdz
dFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoc3Rh
dGljX2Nhc3Q8R3N0VG9jRW50cnkqPihpLT5kYXRhKSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRBdWRpb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2
YWxpZFRyYWNrSWRzKQotewotICAgIG1fYXVkaW9UcmFja3MucmVtb3ZlSWYoW3ZhbGlkVHJhY2tJ
ZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiAhdmFsaWRUcmFja0lkcy5j
b250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAgIH0pOwotfQotCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VJbnZhbGlkVmlkZW9UcmFja3MoVmVjdG9yPFN0cmluZz4g
dmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3ZpZGVvVHJhY2tzLnJlbW92ZUlmKFt2YWxpZFRyYWNr
SWRzXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJhY2tJZHMu
Y29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZFRleHRUcmFja3MoVmVjdG9yPFN0cmluZz4g
dmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3RleHRUcmFja3MucmVtb3ZlSWYoW3ZhbGlkVHJhY2tJ
ZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiAhdmFsaWRUcmFja0lkcy5j
b250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAgIH0pOwotfQotCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6dXJpRGVjb2RlQmluRWxlbWVudEFkZGVkQ2FsbGJhY2soR3N0Qmlu
KiBiaW4sIEdzdEVsZW1lbnQqIGVsZW1lbnQsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
cGxheWVyKQogewogICAgIGlmIChnX3N0cmNtcDAoR19PQkpFQ1RfVFlQRV9OQU1FKGVsZW1lbnQp
LCAiR3N0RG93bmxvYWRCdWZmZXIiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCA0NzU4NGE2ZmMyNzExNWU0MmI1MGRkZTJmMzk1YjY3ZDcyNmVi
MTQ5Li5jMmFmOTExNDViNDRkZTgzNmE3ODQ2OWI5NWI5NGZiNDQ5YWRjMmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yOTYsOSArMjk2LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCByZWFkeVRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQg
bm90aWZ5UGxheWVyT2ZWaWRlbygpOwotICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZBdWRpbygpOwot
ICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRy
YWNrUHJpdmF0ZVR5cGU+IHZvaWQgbm90aWZ5UGxheWVyT2ZUcmFjaygpOwogCiAgICAgdm9pZCBl
bnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAgICAgdm9pZCBzZXRBdWRpb1N0cmVhbVByb3Bl
cnRpZXMoR09iamVjdCopOwpAQCAtNDMwLDEwICs0MjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFi
bGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIHZvaWQgcHVyZ2VJbnZhbGlk
QXVkaW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcyk7Ci0gICAgdm9pZCBwdXJn
ZUludmFsaWRWaWRlb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2YWxpZFRyYWNrSWRzKTsKLSAgICB2
b2lkIHB1cmdlSW52YWxpZFRleHRUcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcyk7
Ci0KICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiR1N0cmVhbWVyIjsgfQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431652</attachid>
            <date>2021-06-17 04:28:04 -0700</date>
            <delta_ts>2021-06-17 05:33:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210617132803.patch</filename>
            <type>text/plain</type>
            <size>16934</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMzYWQzZTFlNjk1NmI2
YjQ3Yjg1MDIxMjFmODk5NzAxZGZjNmQ4MC4uMWFjZTViY2E5ZWIzODQyMTA5N2Q5ZTc0MWNmZmVm
NTI5YWNjN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA2LTE3ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAg
UmVmYWN0b3JlZCB0aGUgbm90aWZ5UGxheWVyT2Z7QXVkaW8sVmlkZW8sVGV4dH0gZmFtaWx5IG9m
IG1ldGhvZHMgaW50byBhIHNpbmdsZSBub3RpZnlQbGF5ZXJPZlRyYWNrKCkgb25lLgorICAgICAg
ICBTb21lIFZhcmlhbnQgdmFyaWFibGVzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gbWFrZSBzZXZl
cmFsIGluY29tcGF0aWJsZSB0eXBlcyB3b3JrIHRvZ2V0aGVyIGFuZCB0byBhdXRvLWRldGVjdCB0
aGUgdHlwZSBvZiB0cmFjayBhcyBhbiBlbnVtLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKTogQWRkZWQgbWV0aG9kIHdpdGggYSBzaWdu
YXR1cmUgc2ltaWxhciB0byB0aGUgb25lcyB1c2VkIGJ5IHtBdWRpbyxWaWRlb31UcmFja1ByaXZh
dGVHU3RyZWFtZXIsIHNvIHRoYXQgaXQgZml0cyBpbnRvIHRoZSBub3RpZnlQbGF5ZXJPZlRyYWNr
KCkgdGVtcGxhdGUgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6IFRlbXBsYXRlIG1l
dGhvZCB0aGF0IHVuaWZpZXMgdGhlIG9sZCBub3RpZnlQbGF5ZXJPZntBdWRpbyxWaWRlbyxUZXh0
fSgpIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6IERlbGV0ZWQuIFJlZmFjdG9yZWQgaW50
byBub3RpZnlQbGF5ZXJPZlRyYWNrKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUZXh0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1
ZGlvQ2hhbmdlZENhbGxiYWNrKTogQ2FsbCB0aGUgbmV3IG5vdGlmeVBsYXllck9mVHJhY2soKSBy
ZWZhY3RvcmVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0ZXh0Q2hhbmdlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvQ2hhbmdlZENhbGxiYWNr
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnB1cmdlSW52YWxpZEF1ZGlvVHJhY2tzKTogRGVsZXRlZC4gTm93IGltcGxlbWVudGVkIGRpcmVj
dGx5IGluc2lkZSBub3RpZnlQbGF5ZXJPZlRyYWNrKCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52
YWxpZFRleHRUcmFja3MpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6IERlbGV0ZWQgbm90aWZ5UGxheWVy
T2Z7QXVkaW8sVmlkZW8sVGV4dH0oKSwgYWRkZWQgbm90aWZ5UGxheWVyT2ZUcmFjaygpLCBkZWxl
dGVkIHB1cmdlSW52YWxpZHtBdWRpbyxWaWRlbyxUZXh0fVRyYWNrcygpLgorCiAyMDIxLTA1LTI1
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIDxkaWFs
b2c+IGVsZW1lbnQgVUEgc3R5bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA2OTEyMjY0YzBmYjkzMWU0YjQwYzdhMGZkOGY1NjFh
OGExNDNjNWJkLi44NzRhZmZjMDA2YjkwYWJiZmEyY2I1ODcxMzJkYWFjNWUyZWZjMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAg
LTQ0LDYgKzQ0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgcGFkKSk7CiAgICAgfQogCisgICAg
c3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBh
ZD4gcGFkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShpbmRleCwgcGFkKTsKKyAgICB9
CisKICAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0
ZShnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRl
eCwgc3RyZWFtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IGY5OTAxNzI2MWViYzNkNDFkYzJhYmIxZWQ5NmFlYjZkOThlNTAxMDcuLmEw
YmMwNjI0NzA2ZjQ1OWE1N2E3ZjhhMzkwYjQ2ZDVhZGFhMjFkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05NjMsMzEgKzk2Myw2NSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3luY09uQ2xvY2soYm9vbCBzeW5j
KQogICAgIHNldFN5bmNPbkNsb2NrKGF1ZGlvU2luaygpLCBzeW5jKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQordGVtcGxhdGUg
PHR5cGVuYW1lIFRyYWNrUHJpdmF0ZVR5cGU+Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3BpcGVs
aW5lIHx8ICFtX3NvdXJjZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2lzTGVn
YWN5UGxheWJpbiB8fCBpc01lZGlhU291cmNlKCkpOworICAgIEFTU0VSVCh0eXBlTmFtZSk7CisK
KyAgICBlbnVtIFRyYWNrVHlwZSB7IEF1ZGlvID0gMCwgVmlkZW8gPSAxLCBUZXh0ID0gMiB9Owor
ICAgIFZhcmlhbnQ8SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+PiosIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyPj4qPiB2YXJpYW50VHJhY2tzID0gc3RhdGljX2Nhc3Q8SGFzaE1hcDxB
dG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+Kj4oMCk7CisgICAgYXV0byB0eXBl
KHN0YXRpY19jYXN0PFRyYWNrVHlwZT4odmFyaWFudFRyYWNrcy5pbmRleCgpKSk7CisgICAgY29u
c3QgY2hhciogdHlwZU5hbWU7CisgICAgYm9vbCogaGFzVHlwZTsKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIEF1ZGlvOgorICAgICAgICB0eXBlTmFtZSA9ICJhdWRpbyI7CisgICAgICAg
IGhhc1R5cGUgPSAmbV9oYXNBdWRpbzsKKyAgICAgICAgdmFyaWFudFRyYWNrcyA9ICZtX2F1ZGlv
VHJhY2tzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvOgorICAgICAgICB0eXBlTmFt
ZSA9ICJ2aWRlbyI7CisgICAgICAgIGhhc1R5cGUgPSAmbV9oYXNWaWRlbzsKKyAgICAgICAgdmFy
aWFudFRyYWNrcyA9ICZtX3ZpZGVvVHJhY2tzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRl
eHQ6CisgICAgICAgIHR5cGVOYW1lID0gInRleHQiOworICAgICAgICBoYXNUeXBlID0gbnVsbHB0
cjsKKyAgICAgICAgdmFyaWFudFRyYWNrcyA9ICZtX3RleHRUcmFja3M7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9
ICpnZXQ8SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+Kj4odmFy
aWFudFRyYWNrcyk7CiAKICAgICAvLyBJZ25vcmUgbm90aWZpY2F0aW9ucyBhZnRlciBhIEVPUy4g
V2UgZG9uJ3Qgd2FudCB0aGUgdHJhY2tzIHRvIGRpc2FwcGVhciB3aGVuIHRoZSB2aWRlbyBpcyBm
aW5pc2hlZC4KLSAgICBpZiAobV9pc0VuZFJlYWNoZWQpCisgICAgaWYgKG1faXNFbmRSZWFjaGVk
ICYmICh0eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0gVmlkZW8pKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1bnNpZ25lZCBudW1UcmFja3MgPSAwOworICAgIHVuc2lnbmVkIG51bWJlck9mVHJhY2tz
ID0gMDsKICAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOworCisgICAg
U3RyaW5nUHJpbnRTdHJlYW0gbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eTsKKyAgICBudW1iZXJPZlRy
YWNrc1Byb3BlcnR5LnByaW50Zigibi0lcyIsIHR5cGVOYW1lKTsKKwogICAgIEdzdEVsZW1lbnQq
IGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDogbV9waXBlbGluZS5n
ZXQoKTsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tdmlkZW8iLCAmbnVtVHJhY2tzLCBu
dWxscHRyKTsKKyAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgbnVtYmVyT2ZUcmFja3NQcm9wZXJ0
eS50b0NTdHJpbmcoKS5kYXRhKCksICZudW1iZXJPZlRyYWNrcywgbnVsbHB0cik7CiAKLSAgICBH
U1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCB2aWRlbyB0cmFja3MiLCBu
dW1UcmFja3MpOworICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTWVkaWEgaGFzICVk
ICVzIHRyYWNrcyIsIG51bWJlck9mVHJhY2tzLCB0eXBlTmFtZSk7CiAKLSAgICBib29sIG9sZEhh
c1ZpZGVvID0gbV9oYXNWaWRlbzsKLSAgICBtX2hhc1ZpZGVvID0gbnVtVHJhY2tzID4gMDsKLSAg
ICBpZiAob2xkSGFzVmlkZW8gIT0gbV9oYXNWaWRlbykKLSAgICAgICAgbV9wbGF5ZXItPmNoYXJh
Y3RlcmlzdGljQ2hhbmdlZCgpOworICAgIGlmIChoYXNUeXBlKSB7CisgICAgICAgIGJvb2wgb2xk
SGFzVHlwZSA9ICpoYXNUeXBlOworICAgICAgICAqaGFzVHlwZSA9IG51bWJlck9mVHJhY2tzID4g
MDsKKyAgICAgICAgaWYgKG9sZEhhc1R5cGUgIT0gKmhhc1R5cGUpCisgICAgICAgICAgICBtX3Bs
YXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLSAgICBpZiAobV9oYXNWaWRlbykKLSAg
ICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAgICAgIGlmICgqaGFzVHlwZSAmJiB0
eXBlID09IFZpZGVvKQorICAgICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CisgICAg
fQogCiAgICAgaWYgKHVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIlRyYWNrcyBtYW5hZ2VkIGJ5IHNvdXJjZSBlbGVtZW50LiBCYWlsaW5nIG91
dCBub3cuIik7CkBAIC05OTUsMTYgKzEwMjksMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgVmVjdG9yPFN0cmluZz4gdmFsaWRWaWRlb1N0cmVhbXM7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVRyYWNrczsgKytpKSB7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsaWRT
dHJlYW1zOworICAgIFN0cmluZ1ByaW50U3RyZWFtIGdldFBhZFByb3BlcnR5OworICAgIGdldFBh
ZFByb3BlcnR5LnByaW50ZigiZ2V0LSVzLXBhZCIsIHR5cGVOYW1lKTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlRyYWNrczsgKytpKSB7CiAgICAgICAgIEdSZWZQdHI8
R3N0UGFkPiBwYWQ7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdl
dCgpLCAiZ2V0LXZpZGVvLXBhZCIsIGksICZwYWQub3V0UHRyKCksIG51bGxwdHIpOworICAgICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9waXBlbGluZS5nZXQoKSwgZ2V0UGFkUHJvcGVydHku
dG9DU3RyaW5nKCkuZGF0YSgpLCBpLCAmcGFkLm91dFB0cigpLCBudWxscHRyKTsKICAgICAgICAg
QVNTRVJUKHBhZCk7CiAKLSAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gIlYiICsgU3RyaW5nOjpu
dW1iZXIoaSk7Ci0gICAgICAgIHZhbGlkVmlkZW9TdHJlYW1zLmFwcGVuZChzdHJlYW1JZCk7Ci0g
ICAgICAgIGlmIChpIDwgbV92aWRlb1RyYWNrcy5zaXplKCkpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9IG1fdmlkZW9UcmFj
a3MuZ2V0KHN0cmVhbUlkKTsKKyAgICAgICAgU3RyaW5nIHN0cmVhbUlkID0gU3RyaW5nKHR5cGVO
YW1lKS5zdWJzdHJpbmcoMCwgMSkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSArIFN0cmluZzo6
bnVtYmVyKGkpOworICAgICAgICB2YWxpZFN0cmVhbXMuYXBwZW5kKHN0cmVhbUlkKTsKKworICAg
ICAgICBpZiAoaSA8IHRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUcmFja1By
aXZhdGVUeXBlPiBleGlzdGluZ1RyYWNrID0gdHJhY2tzLmdldChzdHJlYW1JZCk7CiAgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdUcmFjaykgewogICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2st
PnNldEluZGV4KGkpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVlbiBw
bGF5ZWQgdHdpY2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKQEAgLTEw
MTUsMTggKzEwNTMsMjggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlm
eVBsYXllck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIo
KnRoaXMpLCBpLCBwYWQpOwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCisgICAg
ICAgIGF1dG8gdHJhY2sgPSBUcmFja1ByaXZhdGVUeXBlOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRo
aXMpLCBpLCBwYWQpOworICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkgJiYgKHR5cGUg
PT0gQXVkaW8gfHwgdHlwZSA9PSBWaWRlbykpCiAgICAgICAgICAgICB0cmFjay0+c2V0QWN0aXZl
KHRydWUpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKLSAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICB0cmFja3MuYWRk
KHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworCisgICAgICAgIFZhcmlhbnQ8QXVkaW9UcmFj
a1ByaXZhdGUmLCBWaWRlb1RyYWNrUHJpdmF0ZSYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmPiB2
YXJpYW50VHJhY2sodHJhY2suZ2V0KCkpOworICAgICAgICBzd2l0Y2ggKHZhcmlhbnRUcmFjay5p
bmRleCgpKSB7CisgICAgICAgIGNhc2UgQXVkaW86IG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKGdl
dDxBdWRpb1RyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVhazsKKyAgICAgICAgY2Fz
ZSBWaWRlbzogbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soZ2V0PFZpZGVvVHJhY2tQcml2YXRlJj4o
dmFyaWFudFRyYWNrKSk7IGJyZWFrOworICAgICAgICBjYXNlIFRleHQ6IG1fcGxheWVyLT5hZGRU
ZXh0VHJhY2soZ2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUmPih2YXJpYW50VHJhY2spKTsgYnJl
YWs7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXJnZUludmFsaWRWaWRlb1RyYWNrcyh2YWxp
ZFZpZGVvU3RyZWFtcyk7CisgICAgLy8gUHVyZ2UgaW52YWxpZCB0cmFja3MKKyAgICB0cmFja3Mu
cmVtb3ZlSWYoW3ZhbGlkU3RyZWFtc10oYXV0byYga2V5QW5kVmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuICF2YWxpZFN0cmVhbXMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKKyAgICB9KTsKIAog
ICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIH0KKwogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Omhhc0ZpcnN0VmlkZW9TYW1wbGVSZWFjaGVkU2luaygpIGNvbnN0
CiB7CiAgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKQEAgLTEwNjEs
MTI3ICsxMTA5LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb1Np
bmtDYXBzQ2hhbmdlZChHc3RQYWQqIHZpZGVvU2lua1BhZCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjphdWRpb0NoYW5nZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXItPm1fbm90aWZpZXItPm5vdGlmeShNYWluVGhy
ZWFkTm90aWZpY2F0aW9uOjpBdWRpb0NoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxheWVy
LT5ub3RpZnlQbGF5ZXJPZkF1ZGlvKCk7CisgICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZU
cmFjazxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4oKTsKICAgICB9KTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQotewotICAg
IGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKLQot
ICAgIC8vIElnbm9yZSBub3RpZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3YW50IHRo
ZSB0cmFja3MgdG8gZGlzYXBwZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgotICAgIGlm
IChtX2lzRW5kUmVhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgbnVtVHJh
Y2tzID0gMDsKLSAgICBib29sIHVzZU1lZGlhU291cmNlID0gaXNNZWRpYVNvdXJjZSgpOwotICAg
IEdzdEVsZW1lbnQqIGVsZW1lbnQgPSB1c2VNZWRpYVNvdXJjZSA/IG1fc291cmNlLmdldCgpIDog
bV9waXBlbGluZS5nZXQoKTsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgIm4tYXVkaW8iLCAm
bnVtVHJhY2tzLCBudWxscHRyKTsKLQotICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAi
TWVkaWEgaGFzICVkIGF1ZGlvIHRyYWNrcyIsIG51bVRyYWNrcyk7Ci0gICAgYm9vbCBvbGRIYXNB
dWRpbyA9IG1faGFzQXVkaW87Ci0gICAgbV9oYXNBdWRpbyA9IG51bVRyYWNrcyA+IDA7Ci0gICAg
aWYgKG9sZEhhc0F1ZGlvICE9IG1faGFzQXVkaW8pCi0gICAgICAgIG1fcGxheWVyLT5jaGFyYWN0
ZXJpc3RpY0NoYW5nZWQoKTsKLQotICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxl
bWVudC4gQmFpbGluZyBvdXQgbm93LiIpOwotICAgICAgICBtX3BsYXllci0+bWVkaWFFbmdpbmVV
cGRhdGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2
YWxpZEF1ZGlvU3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVHJhY2tz
OyArK2kpIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKLSAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksICJnZXQtYXVkaW8tcGFkIiwgaSwgJnBhZC5v
dXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVChwYWQpOwotCi0gICAgICAgIFN0cmlu
ZyBzdHJlYW1JZCA9ICJBIiArIFN0cmluZzo6bnVtYmVyKGkpOwotICAgICAgICB2YWxpZEF1ZGlv
U3RyZWFtcy5hcHBlbmQoc3RyZWFtSWQpOwotICAgICAgICBpZiAoaSA8IG1fYXVkaW9UcmFja3Mu
c2l6ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+
IGV4aXN0aW5nVHJhY2sgPSBtX2F1ZGlvVHJhY2tzLmdldChzdHJlYW1JZCk7Ci0gICAgICAgICAg
ICBpZiAoZXhpc3RpbmdUcmFjaykgewotICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNl
dEluZGV4KGkpOwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWRlbyBoYXMgYmVlbiBwbGF5
ZWQgdHdpY2UsIHRoZSB0cmFjayBpcyBzdGlsbCB0aGVyZSwgYnV0IHdlIG5lZWQKLSAgICAgICAg
ICAgICAgICAvLyB0byB1cGRhdGUgdGhlIHBhZCBwb2ludGVyLgotICAgICAgICAgICAgICAgIGlm
IChleGlzdGluZ1RyYWNrLT5wYWQoKSAhPSBwYWQpCi0gICAgICAgICAgICAgICAgICAgIGV4aXN0
aW5nVHJhY2stPnNldFBhZChHUmVmUHRyKHBhZCkpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQp
OwotICAgICAgICBpZiAoIXRyYWNrLT50cmFja0luZGV4KCkpCi0gICAgICAgICAgICB0cmFjay0+
c2V0QWN0aXZlKHRydWUpOwotICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkp
OwotICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsK
LSAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2sodHJhY2suZ2V0KCkpOwotICAgIH0KLQot
ICAgIHB1cmdlSW52YWxpZEF1ZGlvVHJhY2tzKHZhbGlkQXVkaW9TdHJlYW1zKTsKLQotICAgIG1f
cGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKiBwbGF5ZXIpCiB7CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVh
ZE5vdGlmaWNhdGlvbjo6VGV4dENoYW5nZWQsIFtwbGF5ZXJdIHsKLSAgICAgICAgcGxheWVyLT5u
b3RpZnlQbGF5ZXJPZlRleHQoKTsKKyAgICAgICAgcGxheWVyLT5ub3RpZnlQbGF5ZXJPZlRyYWNr
PEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQotewotICAg
IGlmIChVTkxJS0VMWSghbV9waXBlbGluZSB8fCAhbV9zb3VyY2UpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBBU1NFUlQobV9pc0xlZ2FjeVBsYXliaW4gfHwgaXNNZWRpYVNvdXJjZSgpKTsKLQot
ICAgIHVuc2lnbmVkIG51bVRyYWNrcyA9IDA7Ci0gICAgYm9vbCB1c2VNZWRpYVNvdXJjZSA9IGlz
TWVkaWFTb3VyY2UoKTsKLSAgICBHc3RFbGVtZW50KiBlbGVtZW50ID0gdXNlTWVkaWFTb3VyY2Ug
PyBtX3NvdXJjZS5nZXQoKSA6IG1fcGlwZWxpbmUuZ2V0KCk7Ci0gICAgZ19vYmplY3RfZ2V0KGVs
ZW1lbnQsICJuLXRleHQiLCAmbnVtVHJhY2tzLCBudWxscHRyKTsKLQotICAgIEdTVF9JTkZPX09C
SkVDVChwaXBlbGluZSgpLCAiTWVkaWEgaGFzICVkIHRleHQgdHJhY2tzIiwgbnVtVHJhY2tzKTsK
LQotICAgIGlmICh1c2VNZWRpYVNvdXJjZSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBp
cGVsaW5lKCksICJUcmFja3MgbWFuYWdlZCBieSBzb3VyY2UgZWxlbWVudC4gQmFpbGluZyBvdXQg
bm93LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4gdmFs
aWRUZXh0U3RyZWFtczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVHJhY2tzOyAr
K2kpIHsKLSAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKLSAgICAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKG1fcGlwZWxpbmUuZ2V0KCksICJnZXQtdGV4dC1wYWQiLCBpLCAmcGFkLm91dFB0
cigpLCBudWxscHRyKTsKLSAgICAgICAgQVNTRVJUKHBhZCk7Ci0KLSAgICAgICAgLy8gV2UgY2Fu
J3QgYXNzdW1lIHRoZSBwYWQgaGFzIGEgc3RpY2t5IGV2ZW50IGhlcmUgbGlrZSBpbXBsZW1lbnRl
ZCBpbgotICAgICAgICAvLyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyIGJlY2F1c2Ug
aXQgbWlnaHQgYmUgZW1pdHRlZCBhZnRlciB0aGUKLSAgICAgICAgLy8gdHJhY2sgd2FzIGNyZWF0
ZWQuIFNvIGZhbGxiYWNrIHRvIGEgZHVtbXkgc3RyZWFtIElEIGxpa2UgaW4gdGhlIEF1ZGlvCi0g
ICAgICAgIC8vIGFuZCBWaWRlbyB0cmFja3MuCi0gICAgICAgIFN0cmluZyBzdHJlYW1JZCA9ICJU
IiArIFN0cmluZzo6bnVtYmVyKGkpOwotCi0gICAgICAgIHZhbGlkVGV4dFN0cmVhbXMuYXBwZW5k
KHN0cmVhbUlkKTsKLSAgICAgICAgaWYgKGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdU
cmFjayA9IG1fdGV4dFRyYWNrcy5nZXQoc3RyZWFtSWQpOwotICAgICAgICAgICAgaWYgKGV4aXN0
aW5nVHJhY2spIHsKLSAgICAgICAgICAgICAgICBleGlzdGluZ1RyYWNrLT5zZXRJbmRleChpKTsK
LSAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmFjay0+cGFkKCkgPT0gcGFkKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKLSAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7Ci0gICAg
fQotCi0gICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKLX0KLQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVRleHRTYW1wbGUoR3N0U2Ft
cGxlKiBzYW1wbGUsIGNvbnN0IGNoYXIqIHN0cmVhbUlkKQogewogICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBtX3RleHRUcmFja3MudmFsdWVzKCkpIHsKQEAgLTE1MjksNyArMTQ2Nyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxH
c3RTdHJlYW1Db2xsZWN0aW9uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlk
ZW9DaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7
CiAgICAgcGxheWVyLT5tX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6
VmlkZW9DaGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVyT2ZW
aWRlbygpOworICAgICAgICBwbGF5ZXItPm5vdGlmeVBsYXllck9mVHJhY2s8VmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+KCk7CiAgICAgfSk7CiB9CiAKQEAgLTIxNDQsMjcgKzIwODIsNiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0Vu
dHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50
cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkqPihpLT5kYXRhKSk7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXJnZUludmFsaWRBdWRpb1RyYWNrcyhWZWN0b3I8U3Ry
aW5nPiB2YWxpZFRyYWNrSWRzKQotewotICAgIG1fYXVkaW9UcmFja3MucmVtb3ZlSWYoW3ZhbGlk
VHJhY2tJZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiAhdmFsaWRUcmFj
a0lkcy5jb250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAgIH0pOwotfQotCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VJbnZhbGlkVmlkZW9UcmFja3MoVmVjdG9yPFN0
cmluZz4gdmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3ZpZGVvVHJhY2tzLnJlbW92ZUlmKFt2YWxp
ZFRyYWNrSWRzXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4gIXZhbGlkVHJh
Y2tJZHMuY29udGFpbnMoa2V5QW5kVmFsdWUua2V5KTsKLSAgICB9KTsKLX0KLQotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlSW52YWxpZFRleHRUcmFja3MoVmVjdG9yPFN0
cmluZz4gdmFsaWRUcmFja0lkcykKLXsKLSAgICBtX3RleHRUcmFja3MucmVtb3ZlSWYoW3ZhbGlk
VHJhY2tJZHNdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiAhdmFsaWRUcmFj
a0lkcy5jb250YWlucyhrZXlBbmRWYWx1ZS5rZXkpOwotICAgIH0pOwotfQotCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXJpRGVjb2RlQmluRWxlbWVudEFkZGVkQ2FsbGJhY2so
R3N0QmluKiBiaW4sIEdzdEVsZW1lbnQqIGVsZW1lbnQsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciogcGxheWVyKQogewogICAgIGlmIChnX3N0cmNtcDAoR19PQkpFQ1RfVFlQRV9OQU1FKGVs
ZW1lbnQpLCAiR3N0RG93bmxvYWRCdWZmZXIiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA0NzU4NGE2ZmMyNzExNWU0MmI1MGRkZTJmMzk1YjY3
ZDcyNmViMTQ5Li5jMmFmOTExNDViNDRkZTgzNmE3ODQ2OWI5NWI5NGZiNDQ5YWRjMmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yOTYsOSAr
Mjk2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCByZWFkeVRpbWVyRmlyZWQoKTsKIAotICAg
IHZvaWQgbm90aWZ5UGxheWVyT2ZWaWRlbygpOwotICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZBdWRp
bygpOwotICAgIHZvaWQgbm90aWZ5UGxheWVyT2ZUZXh0KCk7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFRyYWNrUHJpdmF0ZVR5cGU+IHZvaWQgbm90aWZ5UGxheWVyT2ZUcmFjaygpOwogCiAgICAg
dm9pZCBlbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCk7CiAgICAgdm9pZCBzZXRBdWRpb1N0cmVh
bVByb3BlcnRpZXMoR09iamVjdCopOwpAQCAtNDMwLDEwICs0MjgsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9j
ZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIHZvaWQgcHVyZ2VJ
bnZhbGlkQXVkaW9UcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFja0lkcyk7Ci0gICAgdm9p
ZCBwdXJnZUludmFsaWRWaWRlb1RyYWNrcyhWZWN0b3I8U3RyaW5nPiB2YWxpZFRyYWNrSWRzKTsK
LSAgICB2b2lkIHB1cmdlSW52YWxpZFRleHRUcmFja3MoVmVjdG9yPFN0cmluZz4gdmFsaWRUcmFj
a0lkcyk7Ci0KICAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiR1N0cmVhbWVyIjsgfQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431655</attachid>
            <date>2021-06-17 05:33:14 -0700</date>
            <delta_ts>2021-06-17 05:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204686-20210617143312.patch</filename>
            <type>text/plain</type>
            <size>1777</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFjZTViY2E5ZWIzODQy
MTA5N2Q5ZTc0MWNmZmVmNTI5YWNjN2ZhNy4uODBiYzY3NGY3MWM5ZTQyMzYzYmNiODFjMmMwYTBk
ZDVkNWQzMTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTE3ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDY4NgorCisgICAgICAgIFVucmV2aWV3ZWQgV1BFL0dUSyBkZWJ1ZyBidWlsZCBmaXguCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZUcmFjayk6IFJlbW92ZWQgYXNzZXJ0IGxlZnQgdGhlcmUgZnJvbSBh
IHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHBhdGNoLgorCiAyMDIxLTA2LTE3ICBFbnJpcXVlIE9j
YcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gUmVmYWN0b3IgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
YTBiYzA2MjQ3MDZmNDU5YTU3YTdmOGEzOTBiNDZkNWFkYWEyMWRiMS4uOTcxZGNlMTYwZWYzMTJl
NDg1NzI2YzVlOWM1NGU1MWRjNDc4NmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk3MCw3ICs5NzAsNiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbiB8fCBpc01lZGlhU291cmNlKCkpOwot
ICAgIEFTU0VSVCh0eXBlTmFtZSk7CiAKICAgICBlbnVtIFRyYWNrVHlwZSB7IEF1ZGlvID0gMCwg
VmlkZW8gPSAxLCBUZXh0ID0gMiB9OwogICAgIFZhcmlhbnQ8SGFzaE1hcDxBdG9tU3RyaW5nLCBS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+PiosIEhhc2hNYXA8QXRvbVN0cmluZywg
UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcs
IFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qPiB2YXJpYW50VHJhY2tz
ID0gc3RhdGljX2Nhc3Q8SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQcml2YXRlVHlw
ZT4+Kj4oMCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>