<?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>206003</bug_id>
          
          <creation_ts>2020-01-09 07:18:30 -0800</creation_ts>
          <short_desc>[GStreamer] Rework WebKitWebSrc to improve robustness</short_desc>
          <delta_ts>2020-01-14 02:17:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cturner</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>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604608</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-09 07:18:30 -0800</bug_when>
    <thetext>[GStreamer] Rework WebKitWebSrc to improve robustness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604611</commentid>
    <comment_count>1</comment_count>
      <attachid>387224</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-09 07:20:47 -0800</bug_when>
    <thetext>Created attachment 387224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604629</commentid>
    <comment_count>2</comment_count>
      <attachid>387224</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-01-09 08:00:09 -0800</bug_when>
    <thetext>Comment on attachment 387224
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        waiting for more buffers that could be retrieved with the those

typo, that
type, the those

&gt; Source/WebCore/ChangeLog:13
&gt; +        the API that is not marked as fast.

that are not

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2618
&gt; +            if ((m_isBuffering &amp;&amp; !m_isLiveStream) || !m_playbackRate) {

Why do we not pause buffering live streams?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:361
&gt; +        &quot; (min %u)&quot;, boolForPrinting(priv-&gt;isDownloadSuspended), boolForPrinting(priv-&gt;doesHaveEOS), boolForPrinting(priv-&gt;haveSize)

why do we format MAX SIZE in min %u?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:363
&gt; +    if (priv-&gt;doesHaveEOS || !priv-&gt;haveSize || !priv-&gt;isSeekable || priv-&gt;size &lt;= SMALL_MEDIA_RESOURCE_MAX_SIZE) {

s/doesHaveEOS/haveEOS/

I understand the EOS condition, but it&apos;s not clear why the absence of a Content-Length, not being seekable and/or being a small resource forbids us from stopping/restarting a download.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:374
&gt; +    GST_TRACE_OBJECT(src, &quot;queue size %&quot; G_GUINT64_FORMAT &quot; (min %1.0lf)&quot;, queueSize

I don&apos;t think you need %lf, just %f is fine?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:375
&gt; +        , priv-&gt;size * HIGH_QUEUE_FACTOR_THRESHOLD * LOW_QUEUE_FACTOR_THRESHOLD);

This seems like an uncharacteristic line break for you :-)

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:399
&gt; +        , SMALL_MEDIA_RESOURCE_MAX_SIZE);

Ditto MIN/MAX question

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:400
&gt; +    if (!priv-&gt;haveSize || !priv-&gt;isSeekable || priv-&gt;size &lt;= SMALL_MEDIA_RESOURCE_MAX_SIZE) {

Why can we stop/restart in haveEOS now, but not in restartLoaderIfNeeded? There&apos;s duplicated checks in these mentioned methods you should take care of.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:415
&gt; +    priv-&gt;downloadStartTime = WallTime();

This looks like it is downloadStopTime, not start time...

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:429
&gt;              GST_DEBUG_OBJECT(src, &quot;Seeking, flushing adapter&quot;);

We are clearing now, not flushing. There seems to be some differences in behaviour here that are not obvious, particularly around pts/dts distance accounting the gstadapter. I don&apos;t know what effects this might have.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:450
&gt; +    // We don&apos;t read the GstAdapter methods marked as fast anymore because sometimes it was slower as we were waiting for more buffers that could be

than could be

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:451
&gt; +    // retrieved with the those methods to be available and we had enough if we retrieved it with the API that is not marked as fast.

error, the those. Please reword the comment. Also it&apos;s not clear what parts of this method the comment is even tied to anymore.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:453
&gt; +        , boolForPrinting(priv-&gt;doesHaveEOS), boolForPrinting(priv-&gt;isDownloadSuspended));

Again, I&apos;m not sure what our code style is, I get told to put these all on one line, but I prefer breaking like this, so....

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:474
&gt; +            GST_TRACE_OBJECT(src, &quot;available %&quot; G_GSIZE_FORMAT, queueSize);

available BYTES, helps log readers

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:481
&gt; +            // 1. We are the end of the known size of the file.

We are at the end of the file with a known size

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:482
&gt; +            // 2. Download is not suspended and no more data is arriving. We cannot wait forever, 10x1s seems safe and sensible.

The download, more data are arriving

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:487
&gt; +            GST_TRACE_OBJECT(src, &quot;is download suspended %s, tried %u&quot;, boolForPrinting(priv-&gt;isDownloadSuspended), retries + 1);

isDownloadSuspended? %s, num retries: %u (makes it easier on the log reader)

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:1152
&gt; +    // that first package delivery would include the time of sending out the request and getting the data back. Since we can&apos;t distingÃ¼ish the

encoding issue

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:1157
&gt; +        GST_TRACE_OBJECT(src, &quot;downloaded %u bytes in %lf seconds =~ %1.0lf bytes/second&quot;, priv-&gt;totalDownloadedBytes, timeSinceStart, priv-&gt;totalDownloadedBytes / timeSinceStart);

I&apos;m always nervous of unchecked division by zero, not matter how unlikely. Also the downloadStartTime being set in stopLoaderIfNecessary is smelling off here. Also %f instead of %lf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604665</commentid>
    <comment_count>3</comment_count>
      <attachid>387224</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-09 09:14:35 -0800</bug_when>
    <thetext>Comment on attachment 387224
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2618
&gt;&gt; +            if ((m_isBuffering &amp;&amp; !m_isLiveStream) || !m_playbackRate) {
&gt; 
&gt; Why do we not pause buffering live streams?

This fixes a bug that was introduced during restyling. I think I found an issue during testing and realized of the regression.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:361
&gt;&gt; +        &quot; (min %u)&quot;, boolForPrinting(priv-&gt;isDownloadSuspended), boolForPrinting(priv-&gt;doesHaveEOS), boolForPrinting(priv-&gt;haveSize)
&gt; 
&gt; why do we format MAX SIZE in min %u?

I think we name of the constant is misleading. For me is the MINIMAL size under which we don&apos;t stop/restart.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:363
&gt;&gt; +    if (priv-&gt;doesHaveEOS || !priv-&gt;haveSize || !priv-&gt;isSeekable || priv-&gt;size &lt;= SMALL_MEDIA_RESOURCE_MAX_SIZE) {
&gt; 
&gt; s/doesHaveEOS/haveEOS/
&gt; 
&gt; I understand the EOS condition, but it&apos;s not clear why the absence of a Content-Length, not being seekable and/or being a small resource forbids us from stopping/restarting a download.

In the case of a small resource it is just a matter of not bothering. If it&apos;s small we load it all and are happy. The case of being seekable is because we need to specify which range we want and if we can&apos;t do range requests, we can&apos;t seek.

These checks where already in the old code I just refactored it.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:375
&gt;&gt; +        , priv-&gt;size * HIGH_QUEUE_FACTOR_THRESHOLD * LOW_QUEUE_FACTOR_THRESHOLD);
&gt; 
&gt; This seems like an uncharacteristic line break for you :-)

Right? :) My limit is 150 chars.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:400
&gt;&gt; +    if (!priv-&gt;haveSize || !priv-&gt;isSeekable || priv-&gt;size &lt;= SMALL_MEDIA_RESOURCE_MAX_SIZE) {
&gt; 
&gt; Why can we stop/restart in haveEOS now, but not in restartLoaderIfNeeded? There&apos;s duplicated checks in these mentioned methods you should take care of.

Again, these checks were already in the original code, I just moved them around.

For me the sense of this is that when stopping we can&apos;t (or shouldn&apos;t) be in EOS as we are downloading. In the case of restart, if we already signalled EOS to the pipeline so it does not make sense to push any more data downstream so we are going to abort any restarting attempts.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:415
&gt;&gt; +    priv-&gt;downloadStartTime = WallTime();
&gt; 
&gt; This looks like it is downloadStopTime, not start time...

No, it&apos;s start time. It&apos;s the time we consider we started the download.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:429
&gt;&gt;              GST_DEBUG_OBJECT(src, &quot;Seeking, flushing adapter&quot;);
&gt; 
&gt; We are clearing now, not flushing. There seems to be some differences in behaviour here that are not obvious, particularly around pts/dts distance accounting the gstadapter. I don&apos;t know what effects this might have.

queueSize matches gst_adapter_available, which is the total size of bytes stored in it. Flushing the queuSize is the same as clearing and that&apos;s why I also removed queueSize, it was redundant and even gst_adapter_available is quick to call.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:453
&gt;&gt; +        , boolForPrinting(priv-&gt;doesHaveEOS), boolForPrinting(priv-&gt;isDownloadSuspended));
&gt; 
&gt; Again, I&apos;m not sure what our code style is, I get told to put these all on one line, but I prefer breaking like this, so....

The style does not set any fixed size, only something like &quot;they should fit a reasonably screen size&quot;. I set my limit to 150.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604666</commentid>
    <comment_count>4</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-01-09 09:17:52 -0800</bug_when>
    <thetext>Informal r+ from then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604714</commentid>
    <comment_count>5</comment_count>
      <attachid>387243</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-09 10:39:48 -0800</bug_when>
    <thetext>Created attachment 387243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605058</commentid>
    <comment_count>6</comment_count>
      <attachid>387243</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-01-10 03:58:33 -0800</bug_when>
    <thetext>Comment on attachment 387243
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +

Remove this extra blank line please.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:148
&gt; +    WallTime downloadStartTime { WallTime() };

Is the default constructor here really wise to use? I mean, the download hasn&apos;t started exactly when this struct is being initialized, right?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:149
&gt; +    guint totalDownloadedBytes { 0 };

Shouldn&apos;t we use uint64_t here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605101</commentid>
    <comment_count>7</comment_count>
      <attachid>387243</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-10 07:23:48 -0800</bug_when>
    <thetext>Comment on attachment 387243
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +
&gt; 
&gt; Remove this extra blank line please.

Sure.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:148
&gt;&gt; +    WallTime downloadStartTime { WallTime() };
&gt; 
&gt; Is the default constructor here really wise to use? I mean, the download hasn&apos;t started exactly when this struct is being initialized, right?

No, this is invalid, it will be initialized to now the first time we receive data.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:149
&gt;&gt; +    guint totalDownloadedBytes { 0 };
&gt; 
&gt; Shouldn&apos;t we use uint64_t here?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605163</commentid>
    <comment_count>8</comment_count>
      <attachid>387243</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-01-10 09:41:27 -0800</bug_when>
    <thetext>Comment on attachment 387243
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:148
&gt;&gt;&gt; +    WallTime downloadStartTime { WallTime() };
&gt;&gt; 
&gt;&gt; Is the default constructor here really wise to use? I mean, the download hasn&apos;t started exactly when this struct is being initialized, right?
&gt; 
&gt; No, this is invalid, it will be initialized to now the first time we receive data.

Perhaps use WallTime::nan() then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605790</commentid>
    <comment_count>9</comment_count>
      <attachid>387511</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-01-13 03:49:01 -0800</bug_when>
    <thetext>Created attachment 387511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606315</commentid>
    <comment_count>10</comment_count>
      <attachid>387511</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 02:16:24 -0800</bug_when>
    <thetext>Comment on attachment 387511
Patch

Clearing flags on attachment: 387511

Committed r254503: &lt;https://trac.webkit.org/changeset/254503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606316</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 02:16:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606317</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-14 02:17:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/58562312&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387224</attachid>
            <date>2020-01-09 07:20:47 -0800</date>
            <delta_ts>2020-01-09 10:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206003-20200109162045.patch</filename>
            <type>text/plain</type>
            <size>19965</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmExOWNmYjBiOGNkYjQy
ZDI1NjE4YzAyYzBiNjZlOGFhNjMzMTFkYS4uMDQyZTFmMmYzZjZmN2E1NzczZDYyYTdkZmRmMzZh
MjJlZjI5NThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAxLTA5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmV3b3JrIFdlYktpdFdlYlNyYyB0byBpbXByb3ZlIHJvYnVzdG5lc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjAwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29ya2VkIGhvdyB0
aGUgd2ViIHNvdXJjZSBkZWFscyB3aXRoIGRhdGEuIEl0J3MgbW9yZSBlYWdlciBub3cKKyAgICAg
ICAgaW4gcHVzaGluZyBkYXRhIGRvd25zdHJlYW0uIFdlIGRvbid0IHJlYWQgdGhlIEdzdEFkYXB0
ZXIgbWV0aG9kcworICAgICAgICBtYXJrZWQgYXMgZmFzdCBhbnltb3JlIGJlY2F1c2Ugc29tZXRp
bWVzIGl0IHdhcyBzbG93ZXIgYXMgd2Ugd2VyZQorICAgICAgICB3YWl0aW5nIGZvciBtb3JlIGJ1
ZmZlcnMgdGhhdCBjb3VsZCBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgdGhvc2UKKyAgICAgICAgbWV0
aG9kcyB0byBiZSBhdmFpbGFibGUgYW5kIHdlIGhhZCBlbm91Z2ggaWYgd2UgcmV0cmlldmVkIGl0
IHdpdGgKKyAgICAgICAgdGhlIEFQSSB0aGF0IGlzIG5vdCBtYXJrZWQgYXMgZmFzdC4KKworICAg
ICAgICBUaGUgc3RyZWFtaW5nIHRocmVhZCBsb2NrcyBub3cgd2hlbiBpdCBoYXMgbm8gZGF0YSB0
byBwdXNoCisgICAgICAgIGRvd25zdHJlYW0gYW5kIHJlc3RhcnRzIHRoZSBkb3dubG9hZCBpZiBu
ZWVkZWQuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBhbHNvIGZpeGVkIHRoZSBwb3NzaWJs
ZSByYWNlIGNvbmRpdGlvbiBvZgorICAgICAgICByZWNlaXZpbmcgYSBmbHVzaCBkdXJpbmcgdGhl
IHN0cmVhbWluZyB0aHJlYWQgd2FpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSBy
ZXdvcmsuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTogQWRkZWQgRkFMTFRIUk9VR0guCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChyZXN0YXJ0TG9hZGVySWZOZWVkZWQpOgorICAgICAgICAoc3RvcExvYWRl
cklmTmVlZGVkKTogUmVmYWN0b3JlZC4KKyAgICAgICAgKHdlYktpdFdlYlNyY0NyZWF0ZSk6IEF2
b2lkIGFkYXB0ZXIgbWV0aG9kcyBtYXJrZWQgYXMgZmFzdCwKKyAgICAgICAgb3RoZXJ3aXNlIHdl
IG1pZ2h0IGJlIHdhaXRpbmcgZm9yIGRhdGEgd2UgYWxyZWFkeSBoYXZlLiBTdHJlYW1pbmcKKyAg
ICAgICAgdGhyZWFkIGlzIG5vdyBnb2luZyB0byBsb2NrIHdhaXRpbmcgZm9yIGRhdGEgYW5kIGlz
IG1vcmUgZWFnZXIgaW4KKyAgICAgICAgcHVzaGluZyBkYXRhIGRvd25zdHJlYW0uCisgICAgICAg
ICh3ZWJLaXRXZWJTcmNTdG9wKTogTm8gbW9yZSBxdWV1ZVNpemUuCisgICAgICAgICh3ZWJLaXRX
ZWJTcmNEb1NlZWspOgorICAgICAgICAod2ViS2l0V2ViU3JjVW5Mb2NrKToKKyAgICAgICAgKHdl
YktpdFdlYlNyY0NoYW5nZVN0YXRlKTogTm90aWZ5IHN0cmVhbWluZyB0aHJlYWQuCisgICAgICAg
IChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Y2hlY2tVcGRhdGVCbG9ja3NpemUpOiBC
bG9ja3NpemUKKyAgICAgICAgYWRqdXN0bWVudCBpbXByb3ZlZC4gV2l0aCBmb3JtZXIgdmFsdWVz
IGJsb2Nrc2l6ZSBncmV3IHRvbyBmYXN0CisgICAgICAgIGFuZCBjb3VsZG4ndCBiZSByZWR1Y2Vk
IHNvIGVhc2lseS4gSSB0aGluayBub3cgaXQgYWRqdXN0cyBtb3JlCisgICAgICAgIHF1aWNrbHkg
dG8gdGhlIHJlYWwgbmV0d29yayB2YWx1ZXMuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRkZWQgcnVkaW1lbnRhcnkKKyAgICAgICAgYmFu
ZHdpdGggY2FsY3VsYXRpb24gYW5kIHVzZSBzdG9wTG9hZGVySWZOZWVkZWQuCisKIDIwMjAtMDEt
MDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgY3NzMy1pbWFnZXMgaW1hZ2Utb3JpZW50YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDM3OWZlYzg4ODIxMDYz
Y2Y5MTJkOWE3NmM3NTA4ZDlkOGY1ZTBlZC4uOWVhYjI3ODJkOGY5NjczNDQxNDMzN2NlYzA3YzFj
NzVlODlkMGVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTI1NzQsNiArMjU3NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEdTVF9TVEFURV9QQVVTRUQ6CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAg
ICAgY2FzZSBHU1RfU1RBVEVfUExBWUlORzoKICAgICAgICAgICAgIGlmIChtX2lzQnVmZmVyaW5n
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nUGVyY2VudGFnZSA9PSAxMDApIHsK
QEAgLTI2MTQsNyArMjYxNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVTdGF0ZXMoKQogICAgICAgICB9IGVsc2UgaWYgKG1fY3VycmVudFN0YXRlID09IEdTVF9T
VEFURV9QTEFZSU5HKSB7CiAgICAgICAgICAgICBtX2lzUGF1c2VkID0gZmFsc2U7CiAKLSAgICAg
ICAgICAgIGlmICgobV9pc0J1ZmZlcmluZyAmJiBtX2lzTGl2ZVN0cmVhbSkgfHwgIW1fcGxheWJh
Y2tSYXRlKSB7CisgICAgICAgICAgICBpZiAoKG1faXNCdWZmZXJpbmcgJiYgIW1faXNMaXZlU3Ry
ZWFtKSB8fCAhbV9wbGF5YmFja1JhdGUpIHsKICAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHBpcGVsaW5lKCksICJbQnVmZmVyaW5nXSBQYXVzaW5nIHN0cmVhbSBmb3IgYnVmZmVyaW5n
LiIpOwogICAgICAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNF
RCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDY0MTU0MTc5NzMwNzkwMzAxYWUxNzhlZjg0ZDdmOGFkN2VlZmVkNDcuLjAx
ZGVlODcxZDY4ODBiMjkwNzNiMmZjNzI5ZWEwMjdiN2Q5NWE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03Myw5ICs3Myw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVMaW1pdCB7IDEgfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVDb3VudCB7IDEgfTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVDb3VudCB7IDIgfTsKICAgICBz
dGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVGYWN0b3IgeyAyIH07Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBmbG9hdCBzX3JlZHVjZUJsb2Nrc2l6ZUxpbWl0IHsgMC4yMCB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgc19yZWR1Y2VCbG9ja3NpemVMaW1pdCB7IDAuNSB9Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVkdWNlQmxvY2tzaXplQ291bnQgeyAyIH07CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBzX3JlZHVjZUJsb2Nrc2l6ZUZhY3RvciB7IDAuNSB9
OwogICAgIGludCBtX3JlZHVjZUJsb2Nrc2l6ZUNvdW50IHsgMCB9OwpAQCAtMTQxLDExICsxNDEs
MTIgQEAgc3RydWN0IF9XZWJLaXRXZWJTcmNQcml2YXRlIHsKICAgICB1bnNpZ25lZCBtaW5pbXVt
QmxvY2tzaXplOwogICAgIExvY2sgYWRhcHRlckxvY2s7CiAgICAgQ29uZGl0aW9uIGFkYXB0ZXJD
b25kaXRpb247Ci0gICAgdWludDY0X3QgcXVldWVTaXplIHsgMCB9OwogICAgIGJvb2wgaXNEb3du
bG9hZFN1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgR1JlZlB0cjxHc3RBZGFwdGVyPiBhZGFwdGVy
OwogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGh0dHBIZWFkZXJzRXZlbnQ7CiAgICAgR1VuaXF1ZVB0
cjxHc3RTdHJ1Y3R1cmU+IGh0dHBIZWFkZXJzOworICAgIFdhbGxUaW1lIGRvd25sb2FkU3RhcnRU
aW1lIHsgV2FsbFRpbWUoKSB9OworICAgIGd1aW50IHRvdGFsRG93bmxvYWRlZEJ5dGVzIHsgMCB9
OwogfTsKIAogZW51bSB7CkBAIC0xODAsNiArMTgxLDggQEAgc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqLCBHc3RRdWVyeSopOwogc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1VuTG9jayhHc3RCYXNlU3JjKik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjVW5Mb2NrU3RvcChHc3RCYXNlU3JjKik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRD
b250ZXh0KEdzdEVsZW1lbnQqLCBHc3RDb250ZXh0Kik7CitzdGF0aWMgdm9pZCByZXN0YXJ0TG9h
ZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKik7CitzdGF0aWMgdm9pZCBzdG9wTG9hZGVySWZOZWVk
ZWQoV2ViS2l0V2ViU3JjKik7CiAKICNkZWZpbmUgd2Via2l0X3dlYl9zcmNfcGFyZW50X2NsYXNz
IHBhcmVudF9jbGFzcwogV0VCS0lUX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRXZWJTcmMs
IHdlYmtpdF93ZWJfc3JjLCBHU1RfVFlQRV9QVVNIX1NSQywKQEAgLTM0NSw2ICszNDgsNzMgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0Q29udGV4dChHc3RFbGVtZW50KiBlbGVtZW50LCBH
c3RDb250ZXh0KiBjb250ZXh0KQogICAgIEdTVF9FTEVNRU5UX0NMQVNTKHBhcmVudF9jbGFzcykt
PnNldF9jb250ZXh0KGVsZW1lbnQsIGNvbnRleHQpOwogfQogCitzdGF0aWMgdm9pZCByZXN0YXJ0
TG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKiBzcmMpCit7CisgICAgV2ViS2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmICghcHJpdi0+aXNEb3dubG9hZFN1c3Bl
bmRlZCkgeworICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImRvd25sb2FkIGFscmVhZHkg
YWN0aXZlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfVFJBQ0VfT0JKRUNU
KHNyYywgImlzIGRvd25sb2FkIHN1c3BlbmRlZCAlcywgZG9lcyBoYXZlIEVPUyAlcywgZG9lcyBo
YXZlIHNpemUgJXMsIGlzIHNlZWthYmxlICVzLCBzaXplICUiIEdfR1VJTlQ2NF9GT1JNQVQKKyAg
ICAgICAgIiAobWluICV1KSIsIGJvb2xGb3JQcmludGluZyhwcml2LT5pc0Rvd25sb2FkU3VzcGVu
ZGVkKSwgYm9vbEZvclByaW50aW5nKHByaXYtPmRvZXNIYXZlRU9TKSwgYm9vbEZvclByaW50aW5n
KHByaXYtPmhhdmVTaXplKQorICAgICAgICAsIGJvb2xGb3JQcmludGluZyhwcml2LT5pc1NlZWth
YmxlKSwgcHJpdi0+c2l6ZSwgU01BTExfTUVESUFfUkVTT1VSQ0VfTUFYX1NJWkUpOworICAgIGlm
IChwcml2LT5kb2VzSGF2ZUVPUyB8fCAhcHJpdi0+aGF2ZVNpemUgfHwgIXByaXYtPmlzU2Vla2Fi
bGUgfHwgcHJpdi0+c2l6ZSA8PSBTTUFMTF9NRURJQV9SRVNPVVJDRV9NQVhfU0laRSkgeworICAg
ICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImRvd25sb2FkIGNhbm5vdCBiZSBzdG9wcGVkL3Jl
c3RhcnRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEdTVF9UUkFDRV9PQkpFQ1Qo
c3JjLCAicmVhZCBwb3NpdGlvbiAlIiBHX0dVSU5UNjRfRk9STUFUICIsIHN0YXRlICVzIiwgcHJp
di0+cmVhZFBvc2l0aW9uLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShHU1RfU1RBVEUoc3Jj
KSkpOworICAgIGlmICghcHJpdi0+cmVhZFBvc2l0aW9uIHx8IHByaXYtPnJlYWRQb3NpdGlvbiA9
PSBwcml2LT5zaXplIHx8IEdTVF9TVEFURShzcmMpIDwgR1NUX1NUQVRFX1BBVVNFRCkgeworICAg
ICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImNhbid0IHJlc3RhcnQgZG93bmxvYWQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBxdWV1ZVNpemUgPSBnc3RfYWRhcHRl
cl9hdmFpbGFibGUocHJpdi0+YWRhcHRlci5nZXQoKSk7CisgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJxdWV1ZSBzaXplICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiAobWluICUxLjBsZikiLCBxdWV1
ZVNpemUKKyAgICAgICAgLCBwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xE
ICogTE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQpOworCisgICAgaWYgKHF1ZXVlU2l6ZSA+PSBw
cml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xEICogTE9XX1FVRVVFX0ZBQ1RP
Ul9USFJFU0hPTEQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJxdWV1ZSBzaXpl
IGFib3ZlIGxvdyB3YXRlcm1hcmssIG5vdCByZXN0YXJ0aW5nIGRvd25sb2FkIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgInJlc3RhcnRpbmcg
ZG93bmxvYWQiKTsKKyAgICBwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkID0gZmFsc2U7CisgICAg
d2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoR1NUX0JBU0VfU1JDX0NBU1Qoc3JjKSwgZmFsc2UpOwor
fQorCisKK3N0YXRpYyB2b2lkIHN0b3BMb2FkZXJJZk5lZWRlZChXZWJLaXRXZWJTcmMqIHNyYykK
K3sKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYg
KHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJkb3dubG9hZCBhbHJlYWR5IHN1c3BlbmRlZCIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJpcyBkb3dubG9hZCBzdXNwZW5kZWQgJXMs
IGRvZXMgaGF2ZSBzaXplICVzLCBpcyBzZWVrYWJsZSAlcywgc2l6ZSAlIiBHX0dVSU5UNjRfRk9S
TUFUICIgKG1pbiAldSkiCisgICAgICAgICwgYm9vbEZvclByaW50aW5nKHByaXYtPmlzRG93bmxv
YWRTdXNwZW5kZWQpLCBib29sRm9yUHJpbnRpbmcocHJpdi0+aGF2ZVNpemUpLCBib29sRm9yUHJp
bnRpbmcocHJpdi0+aXNTZWVrYWJsZSksIHByaXYtPnNpemUKKyAgICAgICAgLCBTTUFMTF9NRURJ
QV9SRVNPVVJDRV9NQVhfU0laRSk7CisgICAgaWYgKCFwcml2LT5oYXZlU2l6ZSB8fCAhcHJpdi0+
aXNTZWVrYWJsZSB8fCBwcml2LT5zaXplIDw9IFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpF
KSB7CisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiZG93bmxvYWQgY2Fubm90IGJlIHN0
b3BwZWQvcmVzdGFydGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3Qg
cXVldWVTaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwor
ICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAicXVldWUgc2l6ZSAlIiBHX0dVSU5UNjRfRk9STUFU
ICIgKG1heCAlMS4wbGYpIiwgcXVldWVTaXplLCBwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNU
T1JfVEhSRVNIT0xEKTsKKyAgICBpZiAocXVldWVTaXplIDw9IHByaXYtPnNpemUgKiBISUdIX1FV
RVVFX0ZBQ1RPUl9USFJFU0hPTEQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJx
dWV1ZSBzaXplIHVuZGVyIGhpZ2ggd2F0ZXJtYXJrLCBub3Qgc3RvcHBpbmcgZG93bmxvYWQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAic3Rv
cHBpbmcgZG93bmxvYWQiKTsKKyAgICBwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkID0gdHJ1ZTsK
KyAgICBwcml2LT5yZXNvdXJjZS0+c3RvcCgpOworICAgIHByaXYtPmRvd25sb2FkU3RhcnRUaW1l
ID0gV2FsbFRpbWUoKTsKK30KKwogc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3Jl
YXRlKEdzdFB1c2hTcmMqIHB1c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1ZmZlcikKIHsKICAgICBHc3RC
YXNlU3JjKiBiYXNlU3JjID0gR1NUX0JBU0VfU1JDX0NBU1QocHVzaFNyYyk7CkBAIC0zNTcsOSAr
NDI3LDcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hT
cmMqIHB1c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAgICAg
TG9ja0hvbGRlciBhZGFwdGVyTG9ja2VyKHByaXYtPmFkYXB0ZXJMb2NrKTsKICAgICAgICAgICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2Vla2luZywgZmx1c2hpbmcgYWRhcHRlciIpOwotICAg
ICAgICAgICAgLy8gRGlzY2FyZCBhbGwgdGhlIGJ1ZmZlcnMgY29taW5nIGJlZm9yZSB0aGUgcmVx
dWVzdGVkIHNlZWsgcG9zaXRpb24uCi0gICAgICAgICAgICBnc3RfYWRhcHRlcl9mbHVzaChwcml2
LT5hZGFwdGVyLmdldCgpLCBwcml2LT5xdWV1ZVNpemUpOwotICAgICAgICAgICAgcHJpdi0+cXVl
dWVTaXplID0gMDsKKyAgICAgICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKHByaXYtPmFkYXB0ZXIu
Z2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RlZFBvc2l0aW9uID0g
cHJpdi0+cmVxdWVzdGVkUG9zaXRpb247CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3AoYmFzZVNy
Yyk7CkBAIC0zNzksMTQgKzQ0NywxMCBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJT
cmNDcmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImZsdXNoaW5nOiAlcywg
ZG9lc0hhdmVFT1M6ICVzLCBxdWV1ZVNpemU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiwgaXNEb3du
bG9hZFN1c3BlbmRlZDogJXMiLAotICAgICAgICBib29sRm9yUHJpbnRpbmcocHJpdi0+aXNGbHVz
aGluZyksIGJvb2xGb3JQcmludGluZyhwcml2LT5kb2VzSGF2ZUVPUyksIHByaXYtPnF1ZXVlU2l6
ZSwKLSAgICAgICAgYm9vbEZvclByaW50aW5nKHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpKTsK
LQotICAgIGlmIChwcml2LT5pc0ZsdXNoaW5nKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiRmx1c2hpbmciKTsKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOwotICAg
IH0KKyAgICAvLyBXZSBkb24ndCByZWFkIHRoZSBHc3RBZGFwdGVyIG1ldGhvZHMgbWFya2VkIGFz
IGZhc3QgYW55bW9yZSBiZWNhdXNlIHNvbWV0aW1lcyBpdCB3YXMgc2xvd2VyIGFzIHdlIHdlcmUg
d2FpdGluZyBmb3IgbW9yZSBidWZmZXJzIHRoYXQgY291bGQgYmUKKyAgICAvLyByZXRyaWV2ZWQg
d2l0aCB0aGUgdGhvc2UgbWV0aG9kcyB0byBiZSBhdmFpbGFibGUgYW5kIHdlIGhhZCBlbm91Z2gg
aWYgd2UgcmV0cmlldmVkIGl0IHdpdGggdGhlIEFQSSB0aGF0IGlzIG5vdCBtYXJrZWQgYXMgZmFz
dC4KKyAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImZsdXNoaW5nOiAlcywgZG9lc0hhdmVFT1M6
ICVzLCBpc0Rvd25sb2FkU3VzcGVuZGVkOiAlcyIsIGJvb2xGb3JQcmludGluZyhwcml2LT5pc0Zs
dXNoaW5nKQorICAgICAgICAsIGJvb2xGb3JQcmludGluZyhwcml2LT5kb2VzSGF2ZUVPUyksIGJv
b2xGb3JQcmludGluZyhwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkKSk7CiAKICAgICBpZiAocHJp
di0+ZG9lc0hhdmVFT1MpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJFT1MiKTsK
QEAgLTM5NCwyOCArNDU4LDQzIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYktpdFdlYlNyY0Ny
ZWF0ZShHc3RQdXNoU3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIpCiAgICAgfQogCiAg
ICAgdW5zaWduZWQgc2l6ZSA9IGdzdF9iYXNlX3NyY19nZXRfYmxvY2tzaXplKGJhc2VTcmMpOwot
ICAgIGJvb2wgaXNBZGFwdGVyRHJhaW5lZCA9IGZhbHNlOworICAgIHNpemVfdCBxdWV1ZVNpemU7
CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGFkYXB0ZXJMb2NrZXIocHJpdi0+YWRhcHRlckxv
Y2spOwogICAgICAgICB1bnNpZ25lZCByZXRyaWVzID0gMDsKLSAgICAgICAgc2l6ZV90IGF2YWls
YWJsZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZV9mYXN0KHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwot
ICAgICAgICB3aGlsZSAoYXZhaWxhYmxlIDwgc2l6ZSAmJiAhaXNBZGFwdGVyRHJhaW5lZCkgewot
ICAgICAgICAgICAgcHJpdi0+YWRhcHRlckNvbmRpdGlvbi53YWl0Rm9yKHByaXYtPmFkYXB0ZXJM
b2NrLCAxMDBfbXMsIFsmXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdzdF9hZGFwdGVyX2F2
YWlsYWJsZV9mYXN0KHByaXYtPmFkYXB0ZXIuZ2V0KCkpID49IHNpemU7CisgICAgICAgIHF1ZXVl
U2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZShwcml2LT5hZGFwdGVyLmdldCgpKTsKKyAgICAg
ICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJhdmFpbGFibGUgJSIgR19HU0laRV9GT1JNQVQgIiwg
YmxvY2sgc2l6ZSAldSIsIHF1ZXVlU2l6ZSwgc2l6ZSk7CisgICAgICAgIHdoaWxlICghcXVldWVT
aXplICYmICFwcml2LT5pc0ZsdXNoaW5nKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHNyYywgImxldCdzIHRyeSB0byByZXN0YXJ0IHRoZSBkb3dubG9hZCBpZiBwb3NzaWJsZSBhbmQg
d2FpdCBhIGJpdCBpZiBubyBkYXRhIik7CisgICAgICAgICAgICBwcml2LT5hZGFwdGVyQ29uZGl0
aW9uLndhaXRGb3IocHJpdi0+YWRhcHRlckxvY2ssIDFfcywgWyZdIHsKKyAgICAgICAgICAgICAg
ICByZXN0YXJ0TG9hZGVySWZOZWVkZWQoc3JjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJp
di0+aXNGbHVzaGluZyB8fCAoIXByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgJiYgZ3N0X2FkYXB0
ZXJfYXZhaWxhYmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgcmV0cmllcysrOwotICAgICAgICAgICAgYXZhaWxhYmxlID0gZ3N0X2FkYXB0ZXJf
YXZhaWxhYmxlX2Zhc3QocHJpdi0+YWRhcHRlci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoYXZh
aWxhYmxlICYmIGF2YWlsYWJsZSA8IHNpemUpIHsKLSAgICAgICAgICAgICAgICBHU1RfVFJBQ0Vf
T0JKRUNUKHNyYywgImRpZCBub3QgZ2V0IHRoZSAldSBibG9ja3NpemUgYnl0ZXMsIGxldCdzIHB1
c2ggdGhlICUiIEdfR1NJWkVfRk9STUFUICIgYnl0ZXMgd2UgZ290Iiwgc2l6ZSwgYXZhaWxhYmxl
KTsKLSAgICAgICAgICAgICAgICBzaXplID0gYXZhaWxhYmxlOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXRyaWVzID4gMykKLSAgICAgICAgICAgICAgICBpc0FkYXB0ZXJEcmFpbmVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIHF1ZXVlU2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZShwcml2LT5h
ZGFwdGVyLmdldCgpKTsKKyAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiYXZhaWxh
YmxlICUiIEdfR1NJWkVfRk9STUFULCBxdWV1ZVNpemUpOworICAgICAgICAgICAgaWYgKHF1ZXVl
U2l6ZSB8fCBwcml2LT5pc0ZsdXNoaW5nKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBk
YXRhIG9yIHdlJ3JlIGZsdXNoaW5nLiBXZSBjYW4gYnJlYWsgdGhlIGxvb3AgaGVyZS4KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIGtlZXAgd2FpdGluZyBidXQgd2UgY291bGQgYmUgaW4gRU9TLiBMZXQncyBjaGVjayB0aGUg
dHdvIHBvc3NpYmlsaXRpZXM6CisgICAgICAgICAgICAvLyAxLiBXZSBhcmUgdGhlIGVuZCBvZiB0
aGUga25vd24gc2l6ZSBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAgIC8vIDIuIERvd25sb2FkIGlz
IG5vdCBzdXNwZW5kZWQgYW5kIG5vIG1vcmUgZGF0YSBpcyBhcnJpdmluZy4gV2UgY2Fubm90IHdh
aXQgZm9yZXZlciwgMTB4MXMgc2VlbXMgc2FmZSBhbmQgc2Vuc2libGUuCisgICAgICAgICAgICBp
ZiAocHJpdi0+aGF2ZVNpemUgJiYgcHJpdi0+cmVhZFBvc2l0aW9uID49IHByaXYtPnNpemUpIHsK
KyAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIldhaXRpbmcgZm9yIGRhdGEg
YmV5b25kIHRoZSBlbmQsIHNpZ25hbGxpbmcgRU9TIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEdTVF9GTE9XX0VPUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpF
Q1Qoc3JjLCAiaXMgZG93bmxvYWQgc3VzcGVuZGVkICVzLCB0cmllZCAldSIsIGJvb2xGb3JQcmlu
dGluZyhwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkKSwgcmV0cmllcyArIDEpOworICAgICAgICAg
ICAgaWYgKCFwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkICYmICsrcmV0cmllcyA+PSAxMCkgewor
ICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiQWRhcHRlciBzdGlsbCBlbXB0
eSBhZnRlciAxMHMgb2Ygd2FpdGluZywgYXNzdW1pbmcgRU9TIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX0VPUzsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChpc0FkYXB0ZXJEcmFpbmVkKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiQWRhcHRlciBzdGlsbCBlbXB0eSBhZnRlciA0MDAgbWlsbGktc2Vjb25kcyBvZiB3YWl0aW5n
LCBhc3N1bWluZyBFT1MiKTsKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKKyAgICBpZiAo
cHJpdi0+aXNGbHVzaGluZykgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkZsdXNo
aW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKICAgICB9CiAKICAgICBp
ZiAocHJpdi0+aGF2ZVNpemUgJiYgIXByaXYtPmlzRHVyYXRpb25TZXQpIHsKQEAgLTQyOSwxNCAr
NTA4LDE3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYktpdFdlYlNyY0NyZWF0ZShHc3RQdXNo
U3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIpCiAgICAgICAgIGdzdF9wYWRfcHVzaF9l
dmVudChHU1RfQkFTRV9TUkNfUEFEKGJhc2VTcmMpLCBwcml2LT5odHRwSGVhZGVyc0V2ZW50Lmxl
YWtSZWYoKSk7CiAKICAgICB7Ci0gICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiVGFraW5n
ICV1IGJ5dGVzIGZyb20gYWRhcHRlciIsIHNpemUpOwogICAgICAgICBMb2NrSG9sZGVyIGFkYXB0
ZXJMb2NrZXIocHJpdi0+YWRhcHRlckxvY2spOworICAgICAgICBxdWV1ZVNpemUgPSBnc3RfYWRh
cHRlcl9hdmFpbGFibGUocHJpdi0+YWRhcHRlci5nZXQoKSk7CisgICAgICAgIGlmIChxdWV1ZVNp
emUgPCBzaXplKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIkRpZCBub3Qg
Z2V0IHRoZSAldSBibG9ja3NpemUgYnl0ZXMsIGxldCdzIHB1c2ggdGhlICUiIEdfR1NJWkVfRk9S
TUFUICIgYnl0ZXMgd2UgZ290Iiwgc2l6ZSwgcXVldWVTaXplKTsKKyAgICAgICAgICAgIHNpemUg
PSBxdWV1ZVNpemU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgR1NUX1RSQUNFX09CSkVD
VChzcmMsICJUYWtpbmcgJXUgYnl0ZXMgZnJvbSBhZGFwdGVyIiwgc2l6ZSk7CiAgICAgICAgIGlm
IChzaXplKSB7Ci0gICAgICAgICAgICAqYnVmZmVyID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXJf
ZmFzdChwcml2LT5hZGFwdGVyLmdldCgpLCBzaXplKTsKKyAgICAgICAgICAgICpidWZmZXIgPSBn
c3RfYWRhcHRlcl90YWtlX2J1ZmZlcihwcml2LT5hZGFwdGVyLmdldCgpLCBzaXplKTsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCpidWZmZXIpOwogCi0gICAgICAgICAgICBwcml2LT5xdWV1
ZVNpemUgLT0gc2l6ZTsKLQogICAgICAgICAgICAgR1NUX0JVRkZFUl9PRkZTRVQoKmJ1ZmZlcikg
PSBiYXNlU3JjLT5zZWdtZW50LnBvc2l0aW9uOwogICAgICAgICAgICAgR1NUX0JVRkZFUl9PRkZT
RVRfRU5EKCpidWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVQoKmJ1ZmZlcikgKyBzaXplOwogICAg
ICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJCdWZmZXIgYm91bmRzIHNldCB0byAlIiBH
X0dVSU5UNjRfRk9STUFUICItJSIgR19HVUlOVDY0X0ZPUk1BVCwgR1NUX0JVRkZFUl9PRkZTRVQo
KmJ1ZmZlciksIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCgqYnVmZmVyKSk7CkBAIC00NDksMTggKzUz
MSwxMSBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNy
YyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgICAgICAgICAgfSBlbHNlIGlmIChw
cml2LT53YXNTZWVraW5nKQogICAgICAgICAgICAgICAgIHByaXYtPndhc1NlZWtpbmcgPSBmYWxz
ZTsKIAotICAgICAgICAgICAgaWYgKCFwcml2LT5kb2VzSGF2ZUVPUyAmJiBwcml2LT5oYXZlU2l6
ZSAmJiBwcml2LT5pc1NlZWthYmxlCi0gICAgICAgICAgICAgICAgJiYgKHByaXYtPnNpemUgPiBT
TUFMTF9NRURJQV9SRVNPVVJDRV9NQVhfU0laRSkgJiYgcHJpdi0+cmVhZFBvc2l0aW9uCi0gICAg
ICAgICAgICAgICAgJiYgKHByaXYtPnJlYWRQb3NpdGlvbiAhPSBwcml2LT5zaXplKQotICAgICAg
ICAgICAgICAgICYmIChwcml2LT5xdWV1ZVNpemUgPCAocHJpdi0+c2l6ZSAqIEhJR0hfUVVFVUVf
RkFDVE9SX1RIUkVTSE9MRCAqIExPV19RVUVVRV9GQUNUT1JfVEhSRVNIT0xEKSkKLSAgICAgICAg
ICAgICAgICAmJiBHU1RfU1RBVEUoc3JjKSA+PSBHU1RfU1RBVEVfUEFVU0VEICYmIHByaXYtPmlz
RG93bmxvYWRTdXNwZW5kZWQpIHsKLSAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIltCdWZmZXJpbmddIEFkYXB0ZXIgcnVubmluZyBvdXQgb2YgZGF0YSwgcmVzdGFydGluZyBk
b3dubG9hZCIpOwotICAgICAgICAgICAgICAgIHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChiYXNlU3JjLCBm
YWxzZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUKHNyYywgIkVtcHR5IGFkYXB0ZXI/Iik7CisgICAgICAgICAgICByZXN0YXJ0
TG9hZGVySWZOZWVkZWQoc3JjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc3JjLCAiRW1wdHkgYWRhcHRlciEiKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIEdTVF9GTE9XX09L
OwpAQCAtNjcxLDcgKzc0Niw2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKEdz
dEJhc2VTcmMqIGJhc2VTcmMpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGFkYXB0ZXJMb2Nr
ZXIocHJpdi0+YWRhcHRlckxvY2spOwogICAgICAgICBnc3RfYWRhcHRlcl9jbGVhcihwcml2LT5h
ZGFwdGVyLmdldCgpKTsKLSAgICAgICAgcHJpdi0+cXVldWVTaXplID0gMDsKICAgICB9CiAKICAg
ICB3ZWJraXRXZWJTcmNSZXNldChzcmMpOwpAQCAtNzI5LDYgKzgwMyw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJLaXRXZWJTcmNEb1NlZWsoR3N0QmFzZVNyYyogYmFzZVNyYywgR3N0U2VnbWVudCog
c2VnbWVudCkKICAgICBwcml2LT5pc1NlZWtpbmcgPSB0cnVlOwogICAgIHByaXYtPnJlcXVlc3Rl
ZFBvc2l0aW9uID0gc2VnbWVudC0+c3RhcnQ7CiAgICAgcHJpdi0+c3RvcFBvc2l0aW9uID0gc2Vn
bWVudC0+c3RvcDsKKyAgICBwcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAg
IHJldHVybiBUUlVFOwogfQogCkBAIC03NjcsNiArODQyLDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1VuTG9jayhHc3RCYXNlU3JjKiBiYXNlU3JjKQogICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiVW5sb2NrIik7CiAgICAgc3JjLT5wcml2LT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAg
ICBzcmMtPnByaXYtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIHNyYy0+cHJp
di0+YWRhcHRlckNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApA
QCAtNzk2LDggKzg3MiwxMCBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2Vi
U3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdAogICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFkgY2FuY2VsbGluZyBuZXR3b3JrIHJlcXVl
c3RzIik7CiAgICAgICAgIHNyYy0+cHJpdi0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgIHNy
Yy0+cHJpdi0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIHNyYy0+cHJp
di0+YWRhcHRlckNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfSBk
ZWZhdWx0OgorICAgIH0KKyAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTkxOCw3ICs5OTYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpjaGVj
a1VwZGF0ZUJsb2Nrc2l6ZSh1bnNpZ25lZCBieXRlc1JlYWQpCiAgICAgdW5zaWduZWQgYmxvY2tz
aXplID0gZ3N0X2Jhc2Vfc3JjX2dldF9ibG9ja3NpemUoYmFzZVNyYyk7CiAgICAgR1NUX0xPR19P
QkpFQ1Qoc3JjLCAiQ2hlY2tpbmcgdG8gdXBkYXRlIGJsb2Nrc2l6ZS4gUmVhZDogJXUsIGN1cnJl
bnQgYmxvY2tzaXplOiAldSIsIGJ5dGVzUmVhZCwgYmxvY2tzaXplKTsKIAotICAgIGlmIChieXRl
c1JlYWQgPj0gYmxvY2tzaXplICogc19ncm93QmxvY2tzaXplTGltaXQpIHsKKyAgICBpZiAoYnl0
ZXNSZWFkID4gYmxvY2tzaXplICogc19ncm93QmxvY2tzaXplTGltaXQpIHsKICAgICAgICAgbV9y
ZWR1Y2VCbG9ja3NpemVDb3VudCA9IDA7CiAgICAgICAgIG1faW5jcmVhc2VCbG9ja3NpemVDb3Vu
dCsrOwogCkBAIC0xMDcwLDYgKzExNDgsMTcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGMKIAog
ICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+cmVzcG9uc2VMb2NrKTsKKyAgICAvLyBSb3Vn
aCBiYW5kd2lkdGggY2FsY3VsYXRpb24uIFdlIGlnbm9yZSBoZXJlIHRoZSBmaXJzdCBkYXRhIHBh
Y2thZ2UgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIHRvIHJlc2V0IHRoZSBjb3VudGVycyB3aGVuIHdl
IGlzc3VlIHRoZSByZXF1ZXN0IGFuZAorICAgIC8vIHRoYXQgZmlyc3QgcGFja2FnZSBkZWxpdmVy
eSB3b3VsZCBpbmNsdWRlIHRoZSB0aW1lIG9mIHNlbmRpbmcgb3V0IHRoZSByZXF1ZXN0IGFuZCBn
ZXR0aW5nIHRoZSBkYXRhIGJhY2suIFNpbmNlIHdlIGNhbid0IGRpc3RpbmfDvGlzaCB0aGUKKyAg
ICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0
byBpZ25vcmUgaXQuCisgICAgaWYgKHByaXYtPmRvd25sb2FkU3RhcnRUaW1lKSB7CisgICAgICAg
IHByaXYtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGxlbmd0aDsKKyAgICAgICAgZG91YmxlIHRp
bWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIHByaXYtPmRvd25sb2FkU3RhcnRUaW1l
KS5zZWNvbmRzKCk7CisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiZG93bmxvYWRlZCAl
dSBieXRlcyBpbiAlbGYgc2Vjb25kcyA9fiAlMS4wbGYgYnl0ZXMvc2Vjb25kIiwgcHJpdi0+dG90
YWxEb3dubG9hZGVkQnl0ZXMsIHRpbWVTaW5jZVN0YXJ0LCBwcml2LT50b3RhbERvd25sb2FkZWRC
eXRlcyAvIHRpbWVTaW5jZVN0YXJ0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcml2LT5kb3du
bG9hZFN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgcHJpdi0+dG90YWxEb3du
bG9hZGVkQnl0ZXMgPSAwOworICAgIH0KIAogICAgIHVpbnQ2NF90IG5ld1Bvc2l0aW9uID0gcHJp
di0+cmVhZFBvc2l0aW9uICsgbGVuZ3RoOwogICAgIGlmIChMSUtFTFkgKHByaXYtPnJlcXVlc3Rl
ZFBvc2l0aW9uID09IHByaXYtPnJlYWRQb3NpdGlvbikpCkBAIC0xMTA0LDE4ICsxMTkzLDggQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IGMKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRl
ckxvY2tlcihwcml2LT5hZGFwdGVyTG9jayk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
Z3N0X2J1ZmZlcl9uZXdfd3JhcHBlZChnX21lbWR1cChkYXRhLCBsZW5ndGgpLCBsZW5ndGgpOwot
ICAgICAgICBwcml2LT5xdWV1ZVNpemUgKz0gbGVuZ3RoOwogICAgICAgICBnc3RfYWRhcHRlcl9w
dXNoKHByaXYtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgICAgIEdTVF9UUkFDRV9PQkpF
Q1Qoc3JjLCAiW0J1ZmZlcmluZ10gaXNEb3dubG9hZFN1c3BlbmRlZDogJXMiLCBib29sRm9yUHJp
bnRpbmcocHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCkpOwotICAgICAgICBpZiAocHJpdi0+aGF2
ZVNpemUgJiYgKHByaXYtPnNpemUgPiBTTUFMTF9NRURJQV9SRVNPVVJDRV9NQVhfU0laRSkgJiYg
KHByaXYtPnF1ZXVlU2l6ZSA+IChwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNI
T0xEKSkKLSAgICAgICAgICAgICYmICFwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkICYmIHByaXYt
PmlzU2Vla2FibGUpIHsKLSAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiW0J1ZmZl
cmluZ10gcXVldWVTaXplOiAlIiBHX0dVSU5UNjRfRk9STUFUICIsIHRocmVzaG9sZDogJWYiLCBw
cml2LT5xdWV1ZVNpemUsCi0gICAgICAgICAgICAgICAgcHJpdi0+c2l6ZSAqIEhJR0hfUVVFVUVf
RkFDVE9SX1RIUkVTSE9MRCk7Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIltC
dWZmZXJpbmddIFN0b3BwaW5nIHJlc291cmNlIGxvYWRlciIpOwotICAgICAgICAgICAgcHJpdi0+
aXNEb3dubG9hZFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+
c3RvcCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHN0b3BMb2Fk
ZXJJZk5lZWRlZChzcmMpOwogICAgICAgICBwcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlmeU9u
ZSgpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387243</attachid>
            <date>2020-01-09 10:39:48 -0800</date>
            <delta_ts>2020-01-13 03:48:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206003-20200109193946.patch</filename>
            <type>text/plain</type>
            <size>20428</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmExOWNmYjBiOGNkYjQy
ZDI1NjE4YzAyYzBiNjZlOGFhNjMzMTFkYS4uMWQ0MGMxZmY3OTRkNGVlZjgxMzFjYzk4MzQxNjc3
MjA0MzAwZmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAxLTA5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmV3b3JrIFdlYktpdFdlYlNyYyB0byBpbXByb3ZlIHJvYnVzdG5lc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjAwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29ya2VkIGhvdyB0
aGUgd2ViIHNvdXJjZSBkZWFscyB3aXRoIGRhdGEuIEl0J3MgbW9yZSBlYWdlciBub3cKKyAgICAg
ICAgaW4gcHVzaGluZyBkYXRhIGRvd25zdHJlYW0uICBXZSBkb24ndCB1c2UgdGhlIEdzdEFkYXB0
ZXIgbWV0aG9kcworICAgICAgICBtYXJrZWQgYXMgZmFzdCBhbnltb3JlIGJlY2F1c2Ugc29tZXRp
bWVzIGl0IHdhcyBzbG93ZXIuIFRoZSByZWFzb24KKyAgICAgICAgd2h5IHRoaXMgd2FzIHNsb3dl
ciBpcyB0aGF0IHdlIGNhbiBiZSB3YWl0aW5nIGZvciBtb3JlICJmYXN0IgorICAgICAgICAodGhh
dCBjb3VsZCBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgX2Zhc3QgQVBJKSBidWZmZXJzIHRvIGJlCisg
ICAgICAgIGF2YWlsYWJsZSBldmVuIGluIGNhc2VzIHdoZXJlIHRoZSBxdWV1ZSBpcyBub3QgZW1w
dHkuIFRoZXNlIG90aGVyCisgICAgICAgIGJ1ZmZlcnMgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRo
ZSAibm9uIF9mYXN0IiBBUEkuCisKKworICAgICAgICBUaGUgc3RyZWFtaW5nIHRocmVhZCBsb2Nr
cyBub3cgd2hlbiBpdCBoYXMgbm8gZGF0YSB0byBwdXNoCisgICAgICAgIGRvd25zdHJlYW0gYW5k
IHJlc3RhcnRzIHRoZSBkb3dubG9hZCBpZiBuZWVkZWQuCisKKyAgICAgICAgSW4gdGhpcyBwYXRj
aCB3ZSBhbHNvIGZpeGVkIHRoZSBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBvZgorICAgICAgICBy
ZWNlaXZpbmcgYSBmbHVzaCBkdXJpbmcgdGhlIHN0cmVhbWluZyB0aHJlYWQgd2FpdC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSByZXdvcmsuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTog
QWRkZWQgRkFMTFRIUk9VR0guCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChyZXN0YXJ0TG9hZGVySWZO
ZWVkZWQpOgorICAgICAgICAoc3RvcExvYWRlcklmTmVlZGVkKTogUmVmYWN0b3JlZC4KKyAgICAg
ICAgKHdlYktpdFdlYlNyY0NyZWF0ZSk6IEF2b2lkIGFkYXB0ZXIgbWV0aG9kcyBtYXJrZWQgYXMg
ZmFzdCwKKyAgICAgICAgb3RoZXJ3aXNlIHdlIG1pZ2h0IGJlIHdhaXRpbmcgZm9yIGRhdGEgd2Ug
YWxyZWFkeSBoYXZlLiBTdHJlYW1pbmcKKyAgICAgICAgdGhyZWFkIGlzIG5vdyBnb2luZyB0byBs
b2NrIHdhaXRpbmcgZm9yIGRhdGEgYW5kIGlzIG1vcmUgZWFnZXIgaW4KKyAgICAgICAgcHVzaGlu
ZyBkYXRhIGRvd25zdHJlYW0uCisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogTm8gbW9yZSBx
dWV1ZVNpemUuCisgICAgICAgICh3ZWJLaXRXZWJTcmNEb1NlZWspOgorICAgICAgICAod2ViS2l0
V2ViU3JjVW5Mb2NrKToKKyAgICAgICAgKHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKTogTm90aWZ5
IHN0cmVhbWluZyB0aHJlYWQuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6Y2hlY2tVcGRhdGVCbG9ja3NpemUpOiBCbG9ja3NpemUKKyAgICAgICAgYWRqdXN0bWVudCBp
bXByb3ZlZC4gV2l0aCBmb3JtZXIgdmFsdWVzIGJsb2Nrc2l6ZSBncmV3IHRvbyBmYXN0CisgICAg
ICAgIGFuZCBjb3VsZG4ndCBiZSByZWR1Y2VkIHNvIGVhc2lseS4gSSB0aGluayBub3cgaXQgYWRq
dXN0cyBtb3JlCisgICAgICAgIHF1aWNrbHkgdG8gdGhlIHJlYWwgbmV0d29yayB2YWx1ZXMuCisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKTogQWRk
ZWQgcnVkaW1lbnRhcnkKKyAgICAgICAgYmFuZHdpdGggY2FsY3VsYXRpb24gYW5kIHVzZSBzdG9w
TG9hZGVySWZOZWVkZWQuCisKIDIwMjAtMDEtMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgY3NzMy1pbWFnZXMgaW1hZ2Ut
b3JpZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDM3OWZlYzg4ODIxMDYzY2Y5MTJkOWE3NmM3NTA4ZDlkOGY1ZTBlZC4uOWVh
YjI3ODJkOGY5NjczNDQxNDMzN2NlYzA3YzFjNzVlODlkMGVjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1NzQsNiArMjU3NCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdTVF9TVEFURV9QQVVTRUQ6CisgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBHU1RfU1RBVEVfUExBWUlORzoKICAg
ICAgICAgICAgIGlmIChtX2lzQnVmZmVyaW5nKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fYnVm
ZmVyaW5nUGVyY2VudGFnZSA9PSAxMDApIHsKQEAgLTI2MTQsNyArMjYxNSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICB9IGVsc2Ug
aWYgKG1fY3VycmVudFN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKSB7CiAgICAgICAgICAgICBt
X2lzUGF1c2VkID0gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmICgobV9pc0J1ZmZlcmluZyAmJiBt
X2lzTGl2ZVN0cmVhbSkgfHwgIW1fcGxheWJhY2tSYXRlKSB7CisgICAgICAgICAgICBpZiAoKG1f
aXNCdWZmZXJpbmcgJiYgIW1faXNMaXZlU3RyZWFtKSB8fCAhbV9wbGF5YmFja1JhdGUpIHsKICAg
ICAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJbQnVmZmVyaW5nXSBQ
YXVzaW5nIHN0cmVhbSBmb3IgYnVmZmVyaW5nLiIpOwogICAgICAgICAgICAgICAgIGNoYW5nZVBp
cGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDY0MTU0MTc5NzMwNzkwMzAx
YWUxNzhlZjg0ZDdmOGFkN2VlZmVkNDcuLjNkYWU4MWFhNjhkODU4Y2M2ZGFiMDllZDk5YmE5YWU1
N2IyYTU5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC03Myw5ICs3Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludCBz
X2dyb3dCbG9ja3NpemVMaW1pdCB7IDEgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dy
b3dCbG9ja3NpemVDb3VudCB7IDEgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dC
bG9ja3NpemVDb3VudCB7IDIgfTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9j
a3NpemVGYWN0b3IgeyAyIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBzX3JlZHVjZUJs
b2Nrc2l6ZUxpbWl0IHsgMC4yMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgc19yZWR1
Y2VCbG9ja3NpemVMaW1pdCB7IDAuNSB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcmVk
dWNlQmxvY2tzaXplQ291bnQgeyAyIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBzX3Jl
ZHVjZUJsb2Nrc2l6ZUZhY3RvciB7IDAuNSB9OwogICAgIGludCBtX3JlZHVjZUJsb2Nrc2l6ZUNv
dW50IHsgMCB9OwpAQCAtMTQxLDExICsxNDEsMTIgQEAgc3RydWN0IF9XZWJLaXRXZWJTcmNQcml2
YXRlIHsKICAgICB1bnNpZ25lZCBtaW5pbXVtQmxvY2tzaXplOwogICAgIExvY2sgYWRhcHRlckxv
Y2s7CiAgICAgQ29uZGl0aW9uIGFkYXB0ZXJDb25kaXRpb247Ci0gICAgdWludDY0X3QgcXVldWVT
aXplIHsgMCB9OwogICAgIGJvb2wgaXNEb3dubG9hZFN1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAg
R1JlZlB0cjxHc3RBZGFwdGVyPiBhZGFwdGVyOwogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGh0dHBI
ZWFkZXJzRXZlbnQ7CiAgICAgR1VuaXF1ZVB0cjxHc3RTdHJ1Y3R1cmU+IGh0dHBIZWFkZXJzOwor
ICAgIFdhbGxUaW1lIGRvd25sb2FkU3RhcnRUaW1lIHsgV2FsbFRpbWUoKSB9OworICAgIGd1aW50
IHRvdGFsRG93bmxvYWRlZEJ5dGVzIHsgMCB9OwogfTsKIAogZW51bSB7CkBAIC0xODAsNiArMTgx
LDggQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqLCBHc3RR
dWVyeSopOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1VuTG9jayhHc3RCYXNlU3JjKik7
CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrU3RvcChHc3RCYXNlU3JjKik7CiBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRDb250ZXh0KEdzdEVsZW1lbnQqLCBHc3RDb250ZXh0
Kik7CitzdGF0aWMgdm9pZCByZXN0YXJ0TG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKik7Citz
dGF0aWMgdm9pZCBzdG9wTG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKik7CiAKICNkZWZpbmUg
d2Via2l0X3dlYl9zcmNfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwogV0VCS0lUX0RFRklORV9U
WVBFX1dJVEhfQ09ERShXZWJLaXRXZWJTcmMsIHdlYmtpdF93ZWJfc3JjLCBHU1RfVFlQRV9QVVNI
X1NSQywKQEAgLTM0NSw2ICszNDgsNzIgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0Q29u
dGV4dChHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RDb250ZXh0KiBjb250ZXh0KQogICAgIEdTVF9F
TEVNRU5UX0NMQVNTKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0KGVsZW1lbnQsIGNvbnRleHQp
OwogfQogCitzdGF0aWMgdm9pZCByZXN0YXJ0TG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKiBz
cmMpCit7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAg
IGlmICghcHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCkgeworICAgICAgICBHU1RfVFJBQ0VfT0JK
RUNUKHNyYywgImRvd25sb2FkIGFscmVhZHkgYWN0aXZlIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImlzIGRvd25sb2FkIHN1c3BlbmRlZCAl
cywgZG9lcyBoYXZlIEVPUyAlcywgZG9lcyBoYXZlIHNpemUgJXMsIGlzIHNlZWthYmxlICVzLCBz
aXplICUiIEdfR1VJTlQ2NF9GT1JNQVQKKyAgICAgICAgIiAobWluICV1KSIsIGJvb2xGb3JQcmlu
dGluZyhwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkKSwgYm9vbEZvclByaW50aW5nKHByaXYtPmRv
ZXNIYXZlRU9TKSwgYm9vbEZvclByaW50aW5nKHByaXYtPmhhdmVTaXplKQorICAgICAgICAsIGJv
b2xGb3JQcmludGluZyhwcml2LT5pc1NlZWthYmxlKSwgcHJpdi0+c2l6ZSwgU01BTExfTUVESUFf
UkVTT1VSQ0VfTUFYX1NJWkUpOworICAgIGlmIChwcml2LT5kb2VzSGF2ZUVPUyB8fCAhcHJpdi0+
aGF2ZVNpemUgfHwgIXByaXYtPmlzU2Vla2FibGUgfHwgcHJpdi0+c2l6ZSA8PSBTTUFMTF9NRURJ
QV9SRVNPVVJDRV9NQVhfU0laRSkgeworICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImRv
d25sb2FkIGNhbm5vdCBiZSBzdG9wcGVkL3Jlc3RhcnRlZCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAicmVhZCBwb3NpdGlvbiAlIiBHX0dVSU5U
NjRfRk9STUFUICIsIHN0YXRlICVzIiwgcHJpdi0+cmVhZFBvc2l0aW9uLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShHU1RfU1RBVEUoc3JjKSkpOworICAgIGlmICghcHJpdi0+cmVhZFBvc2l0
aW9uIHx8IHByaXYtPnJlYWRQb3NpdGlvbiA9PSBwcml2LT5zaXplIHx8IEdTVF9TVEFURShzcmMp
IDwgR1NUX1NUQVRFX1BBVVNFRCkgeworICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImNh
bid0IHJlc3RhcnQgZG93bmxvYWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNp
emVfdCBxdWV1ZVNpemUgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUocHJpdi0+YWRhcHRlci5nZXQo
KSk7CisgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJxdWV1ZSBzaXplICUiIEdfR1VJTlQ2NF9G
T1JNQVQgIiAobWluICUxLjBmKSIsIHF1ZXVlU2l6ZQorICAgICAgICAsIHByaXYtPnNpemUgKiBI
SUdIX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQgKiBMT1dfUVVFVUVfRkFDVE9SX1RIUkVTSE9MRCk7
CisKKyAgICBpZiAocXVldWVTaXplID49IHByaXYtPnNpemUgKiBISUdIX1FVRVVFX0ZBQ1RPUl9U
SFJFU0hPTEQgKiBMT1dfUVVFVUVfRkFDVE9SX1RIUkVTSE9MRCkgeworICAgICAgICBHU1RfVFJB
Q0VfT0JKRUNUKHNyYywgInF1ZXVlIHNpemUgYWJvdmUgbG93IHdhdGVybWFyaywgbm90IHJlc3Rh
cnRpbmcgZG93bmxvYWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAicmVzdGFydGluZyBkb3dubG9hZCIpOworICAgIHByaXYtPmlzRG93bmxv
YWRTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChHU1RfQkFT
RV9TUkNfQ0FTVChzcmMpLCBmYWxzZSk7Cit9CisKKworc3RhdGljIHZvaWQgc3RvcExvYWRlcklm
TmVlZGVkKFdlYktpdFdlYlNyYyogc3JjKQoreworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAocHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCkgewor
ICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImRvd25sb2FkIGFscmVhZHkgc3VzcGVuZGVk
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywg
ImlzIGRvd25sb2FkIHN1c3BlbmRlZCAlcywgZG9lcyBoYXZlIHNpemUgJXMsIGlzIHNlZWthYmxl
ICVzLCBzaXplICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiAobWluICV1KSIKKyAgICAgICAgLCBib29s
Rm9yUHJpbnRpbmcocHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCksIGJvb2xGb3JQcmludGluZyhw
cml2LT5oYXZlU2l6ZSksIGJvb2xGb3JQcmludGluZyhwcml2LT5pc1NlZWthYmxlKSwgcHJpdi0+
c2l6ZQorICAgICAgICAsIFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFKTsKKyAgICBpZiAo
IXByaXYtPmhhdmVTaXplIHx8ICFwcml2LT5pc1NlZWthYmxlIHx8IHByaXYtPnNpemUgPD0gU01B
TExfTUVESUFfUkVTT1VSQ0VfTUFYX1NJWkUpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJkb3dubG9hZCBjYW5ub3QgYmUgc3RvcHBlZC9yZXN0YXJ0ZWQiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHNpemVfdCBxdWV1ZVNpemUgPSBnc3RfYWRhcHRlcl9hdmFpbGFi
bGUocHJpdi0+YWRhcHRlci5nZXQoKSk7CisgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJxdWV1
ZSBzaXplICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiAobWF4ICUxLjBmKSIsIHF1ZXVlU2l6ZSwgcHJp
di0+c2l6ZSAqIEhJR0hfUVVFVUVfRkFDVE9SX1RIUkVTSE9MRCk7CisgICAgaWYgKHF1ZXVlU2l6
ZSA8PSBwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xEKSB7CisgICAgICAg
IEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAicXVldWUgc2l6ZSB1bmRlciBoaWdoIHdhdGVybWFyaywg
bm90IHN0b3BwaW5nIGRvd25sb2FkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgInN0b3BwaW5nIGRvd25sb2FkIik7CisgICAgcHJpdi0+aXNE
b3dubG9hZFN1c3BlbmRlZCA9IHRydWU7CisgICAgcHJpdi0+cmVzb3VyY2UtPnN0b3AoKTsKK30K
Kwogc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqIHB1
c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1ZmZlcikKIHsKICAgICBHc3RCYXNlU3JjKiBiYXNlU3JjID0g
R1NUX0JBU0VfU1JDX0NBU1QocHVzaFNyYyk7CkBAIC0zNTcsOSArNDI2LDcgQEAgc3RhdGljIEdz
dEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqIHB1c2hTcmMsIEdzdEJ1
ZmZlcioqIGJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBhZGFwdGVy
TG9ja2VyKHByaXYtPmFkYXB0ZXJMb2NrKTsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiU2Vla2luZywgZmx1c2hpbmcgYWRhcHRlciIpOwotICAgICAgICAgICAgLy8gRGlzY2Fy
ZCBhbGwgdGhlIGJ1ZmZlcnMgY29taW5nIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHNlZWsgcG9zaXRp
b24uCi0gICAgICAgICAgICBnc3RfYWRhcHRlcl9mbHVzaChwcml2LT5hZGFwdGVyLmdldCgpLCBw
cml2LT5xdWV1ZVNpemUpOwotICAgICAgICAgICAgcHJpdi0+cXVldWVTaXplID0gMDsKKyAgICAg
ICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgICAgIHVpbnQ2NF90IHJlcXVlc3RlZFBvc2l0aW9uID0gcHJpdi0+cmVxdWVzdGVkUG9z
aXRpb247CiAgICAgICAgIHdlYktpdFdlYlNyY1N0b3AoYmFzZVNyYyk7CkBAIC0zNzksMTQgKzQ0
NiwxMSBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNy
YyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImZsdXNoaW5nOiAlcywgZG9lc0hhdmVFT1M6ICVzLCBx
dWV1ZVNpemU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiwgaXNEb3dubG9hZFN1c3BlbmRlZDogJXMi
LAotICAgICAgICBib29sRm9yUHJpbnRpbmcocHJpdi0+aXNGbHVzaGluZyksIGJvb2xGb3JQcmlu
dGluZyhwcml2LT5kb2VzSGF2ZUVPUyksIHByaXYtPnF1ZXVlU2l6ZSwKLSAgICAgICAgYm9vbEZv
clByaW50aW5nKHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpKTsKLQotICAgIGlmIChwcml2LT5p
c0ZsdXNoaW5nKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiRmx1c2hpbmciKTsK
LSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOwotICAgIH0KKyAgICAvLyBXZSBkb24n
dCB1c2UgdGhlIEdzdEFkYXB0ZXIgbWV0aG9kcyBtYXJrZWQgYXMgZmFzdCBhbnltb3JlIGJlY2F1
c2Ugc29tZXRpbWVzIGl0IHdhcyBzbG93ZXIuIFRoZSByZWFzb24gd2h5IHRoaXMgd2FzIHNsb3dl
ciBpcyB0aGF0IHdlIGNhbiBiZQorICAgIC8vIHdhaXRpbmcgZm9yIG1vcmUgImZhc3QiICh0aGF0
IGNvdWxkIGJlIHJldHJpZXZlZCB3aXRoIHRoZSBfZmFzdCBBUEkpIGJ1ZmZlcnMgdG8gYmUgYXZh
aWxhYmxlIGV2ZW4gaW4gY2FzZXMgd2hlcmUgdGhlIHF1ZXVlIGlzIG5vdCBlbXB0eS4gVGhlc2UK
KyAgICAvLyBvdGhlciBidWZmZXJzIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgIm5vbiBfZmFz
dCIgQVBJLgorICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiZmx1c2hpbmc6ICVzLCBkb2VzSGF2
ZUVPUzogJXMsIGlzRG93bmxvYWRTdXNwZW5kZWQ6ICVzIiwgYm9vbEZvclByaW50aW5nKHByaXYt
PmlzRmx1c2hpbmcpCisgICAgICAgICwgYm9vbEZvclByaW50aW5nKHByaXYtPmRvZXNIYXZlRU9T
KSwgYm9vbEZvclByaW50aW5nKHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpKTsKIAogICAgIGlm
IChwcml2LT5kb2VzSGF2ZUVPUykgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkVP
UyIpOwpAQCAtMzk0LDI4ICs0NTgsNDMgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2Vi
U3JjQ3JlYXRlKEdzdFB1c2hTcmMqIHB1c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1ZmZlcikKICAgICB9
CiAKICAgICB1bnNpZ25lZCBzaXplID0gZ3N0X2Jhc2Vfc3JjX2dldF9ibG9ja3NpemUoYmFzZVNy
Yyk7Ci0gICAgYm9vbCBpc0FkYXB0ZXJEcmFpbmVkID0gZmFsc2U7CisgICAgc2l6ZV90IHF1ZXVl
U2l6ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRlckxvY2tlcihwcml2LT5hZGFw
dGVyTG9jayk7CiAgICAgICAgIHVuc2lnbmVkIHJldHJpZXMgPSAwOwotICAgICAgICBzaXplX3Qg
YXZhaWxhYmxlID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlX2Zhc3QocHJpdi0+YWRhcHRlci5nZXQo
KSk7Ci0gICAgICAgIHdoaWxlIChhdmFpbGFibGUgPCBzaXplICYmICFpc0FkYXB0ZXJEcmFpbmVk
KSB7Ci0gICAgICAgICAgICBwcml2LT5hZGFwdGVyQ29uZGl0aW9uLndhaXRGb3IocHJpdi0+YWRh
cHRlckxvY2ssIDEwMF9tcywgWyZdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3N0X2FkYXB0
ZXJfYXZhaWxhYmxlX2Zhc3QocHJpdi0+YWRhcHRlci5nZXQoKSkgPj0gc2l6ZTsKKyAgICAgICAg
cXVldWVTaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwor
ICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImF2YWlsYWJsZSBieXRlcyAlIiBHX0dTSVpF
X0ZPUk1BVCAiLCBibG9jayBzaXplICV1IiwgcXVldWVTaXplLCBzaXplKTsKKyAgICAgICAgd2hp
bGUgKCFxdWV1ZVNpemUgJiYgIXByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAgICAgICAgIEdTVF9U
UkFDRV9PQkpFQ1Qoc3JjLCAibGV0J3MgdHJ5IHRvIHJlc3RhcnQgdGhlIGRvd25sb2FkIGlmIHBv
c3NpYmxlIGFuZCB3YWl0IGEgYml0IGlmIG5vIGRhdGEiKTsKKyAgICAgICAgICAgIHByaXYtPmFk
YXB0ZXJDb25kaXRpb24ud2FpdEZvcihwcml2LT5hZGFwdGVyTG9jaywgMV9zLCBbJl0geworICAg
ICAgICAgICAgICAgIHJlc3RhcnRMb2FkZXJJZk5lZWRlZChzcmMpOworICAgICAgICAgICAgICAg
IHJldHVybiBwcml2LT5pc0ZsdXNoaW5nIHx8ICghcHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCAm
JiBnc3RfYWRhcHRlcl9hdmFpbGFibGUocHJpdi0+YWRhcHRlci5nZXQoKSkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICByZXRyaWVzKys7Ci0gICAgICAgICAgICBhdmFpbGFibGUgPSBn
c3RfYWRhcHRlcl9hdmFpbGFibGVfZmFzdChwcml2LT5hZGFwdGVyLmdldCgpKTsKLSAgICAgICAg
ICAgIGlmIChhdmFpbGFibGUgJiYgYXZhaWxhYmxlIDwgc2l6ZSkgewotICAgICAgICAgICAgICAg
IEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiZGlkIG5vdCBnZXQgdGhlICV1IGJsb2Nrc2l6ZSBieXRl
cywgbGV0J3MgcHVzaCB0aGUgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyB3ZSBnb3QiLCBzaXpl
LCBhdmFpbGFibGUpOwotICAgICAgICAgICAgICAgIHNpemUgPSBhdmFpbGFibGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKHJldHJpZXMgPiAzKQotICAgICAgICAgICAgICAgIGlzQWRhcHRlckRy
YWluZWQgPSB0cnVlOworICAgICAgICAgICAgcXVldWVTaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxh
YmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOworICAgICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJhdmFpbGFibGUgJSIgR19HU0laRV9GT1JNQVQsIHF1ZXVlU2l6ZSk7CisgICAgICAgICAg
ICBpZiAocXVldWVTaXplIHx8IHByaXYtPmlzRmx1c2hpbmcpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBoYXZlIGRhdGEgb3Igd2UncmUgZmx1c2hpbmcuIFdlIGNhbiBicmVhayB0aGUgbG9vcCBo
ZXJlLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBXZSBzaG91bGQga2VlcCB3YWl0aW5nIGJ1dCB3ZSBjb3VsZCBiZSBpbiBFT1MuIExldCdz
IGNoZWNrIHRoZSB0d28gcG9zc2liaWxpdGllczoKKyAgICAgICAgICAgIC8vIDEuIFdlIGFyZSBh
dCB0aGUgZW5kIG9mIHRoZSBmaWxlIHdpdGggYSBrbm93biBzaXplLgorICAgICAgICAgICAgLy8g
Mi4gVGhlIGRvd25sb2FkIGlzIG5vdCBzdXNwZW5kZWQgYW5kIG5vIG1vcmUgZGF0YSBhcmUgYXJy
aXZpbmcuIFdlIGNhbm5vdCB3YWl0IGZvcmV2ZXIsIDEweDFzIHNlZW1zIHNhZmUgYW5kIHNlbnNp
YmxlLgorICAgICAgICAgICAgaWYgKHByaXYtPmhhdmVTaXplICYmIHByaXYtPnJlYWRQb3NpdGlv
biA+PSBwcml2LT5zaXplKSB7CisgICAgICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJXYWl0aW5nIGZvciBkYXRhIGJleW9uZCB0aGUgZW5kLCBzaWduYWxsaW5nIEVPUyIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19FT1M7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImlzIGRvd25sb2FkIHN1c3BlbmRlZD8gJXMsIG51
bSByZXRyaWVzICV1IiwgYm9vbEZvclByaW50aW5nKHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQp
LCByZXRyaWVzICsgMSk7CisgICAgICAgICAgICBpZiAoIXByaXYtPmlzRG93bmxvYWRTdXNwZW5k
ZWQgJiYgKytyZXRyaWVzID49IDEwKSB7CisgICAgICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJBZGFwdGVyIHN0aWxsIGVtcHR5IGFmdGVyIDEwcyBvZiB3YWl0aW5nLCBhc3N1bWlu
ZyBFT1MiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGlzQWRhcHRlckRyYWluZWQpIHsKLSAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJBZGFwdGVyIHN0aWxsIGVtcHR5IGFmdGVyIDQw
MCBtaWxsaS1zZWNvbmRzIG9mIHdhaXRpbmcsIGFzc3VtaW5nIEVPUyIpOwotICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfRU9TOworICAgIGlmIChwcml2LT5pc0ZsdXNoaW5nKSB7CisgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiRmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9X
X0ZMVVNISU5HOwogICAgIH0KIAogICAgIGlmIChwcml2LT5oYXZlU2l6ZSAmJiAhcHJpdi0+aXNE
dXJhdGlvblNldCkgewpAQCAtNDI5LDE0ICs1MDgsMTcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4g
d2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqIHB1c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1ZmZl
cikKICAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KEdTVF9CQVNFX1NSQ19QQUQoYmFzZVNyYyks
IHByaXYtPmh0dHBIZWFkZXJzRXZlbnQubGVha1JlZigpKTsKIAogICAgIHsKLSAgICAgICAgR1NU
X1RSQUNFX09CSkVDVChzcmMsICJUYWtpbmcgJXUgYnl0ZXMgZnJvbSBhZGFwdGVyIiwgc2l6ZSk7
CiAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRlckxvY2tlcihwcml2LT5hZGFwdGVyTG9jayk7Cisg
ICAgICAgIHF1ZXVlU2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZShwcml2LT5hZGFwdGVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKHF1ZXVlU2l6ZSA8IHNpemUpIHsKKyAgICAgICAgICAgIEdTVF9U
UkFDRV9PQkpFQ1Qoc3JjLCAiRGlkIG5vdCBnZXQgdGhlICV1IGJsb2Nrc2l6ZSBieXRlcywgbGV0
J3MgcHVzaCB0aGUgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyB3ZSBnb3QiLCBzaXplLCBxdWV1
ZVNpemUpOworICAgICAgICAgICAgc2l6ZSA9IHF1ZXVlU2l6ZTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIlRha2luZyAldSBieXRlcyBmcm9tIGFk
YXB0ZXIiLCBzaXplKTsKICAgICAgICAgaWYgKHNpemUpIHsKLSAgICAgICAgICAgICpidWZmZXIg
PSBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlcl9mYXN0KHByaXYtPmFkYXB0ZXIuZ2V0KCksIHNpemUp
OworICAgICAgICAgICAgKmJ1ZmZlciA9IGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyKHByaXYtPmFk
YXB0ZXIuZ2V0KCksIHNpemUpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKmJ1ZmZlcik7
CiAKLSAgICAgICAgICAgIHByaXYtPnF1ZXVlU2l6ZSAtPSBzaXplOwotCiAgICAgICAgICAgICBH
U1RfQlVGRkVSX09GRlNFVCgqYnVmZmVyKSA9IGJhc2VTcmMtPnNlZ21lbnQucG9zaXRpb247CiAg
ICAgICAgICAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoKmJ1ZmZlcikgPSBHU1RfQlVGRkVSX09G
RlNFVCgqYnVmZmVyKSArIHNpemU7CiAgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywg
IkJ1ZmZlciBib3VuZHMgc2V0IHRvICUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0lIiBHX0dVSU5UNjRf
Rk9STUFULCBHU1RfQlVGRkVSX09GRlNFVCgqYnVmZmVyKSwgR1NUX0JVRkZFUl9PRkZTRVRfRU5E
KCpidWZmZXIpKTsKQEAgLTQ0OSwxOCArNTMxLDExIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdl
YktpdFdlYlNyY0NyZWF0ZShHc3RQdXNoU3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIp
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHByaXYtPndhc1NlZWtpbmcpCiAgICAgICAgICAgICAg
ICAgcHJpdi0+d2FzU2Vla2luZyA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAoIXByaXYtPmRv
ZXNIYXZlRU9TICYmIHByaXYtPmhhdmVTaXplICYmIHByaXYtPmlzU2Vla2FibGUKLSAgICAgICAg
ICAgICAgICAmJiAocHJpdi0+c2l6ZSA+IFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFKSAm
JiBwcml2LT5yZWFkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAmJiAocHJpdi0+cmVhZFBvc2l0
aW9uICE9IHByaXYtPnNpemUpCi0gICAgICAgICAgICAgICAgJiYgKHByaXYtPnF1ZXVlU2l6ZSA8
IChwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xEICogTE9XX1FVRVVFX0ZB
Q1RPUl9USFJFU0hPTEQpKQotICAgICAgICAgICAgICAgICYmIEdTVF9TVEFURShzcmMpID49IEdT
VF9TVEFURV9QQVVTRUQgJiYgcHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCkgewotICAgICAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiW0J1ZmZlcmluZ10gQWRhcHRlciBydW5uaW5n
IG91dCBvZiBkYXRhLCByZXN0YXJ0aW5nIGRvd25sb2FkIik7Ci0gICAgICAgICAgICAgICAgcHJp
di0+aXNEb3dubG9hZFN1c3BlbmRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHdlYktpdFdl
YlNyY01ha2VSZXF1ZXN0KGJhc2VTcmMsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRW1wdHkgYWRhcHRl
cj8iKTsKKyAgICAgICAgICAgIHJlc3RhcnRMb2FkZXJJZk5lZWRlZChzcmMpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJFbXB0eSBhZGFwdGVy
ISIpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CkBAIC01NDgsNiArNjIzLDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJhc2VTcmMsIGJvb2wg
bm90aWZ5QXN5bmNDb20KICAgICBwcml2LT5pc0R1cmF0aW9uU2V0ID0gZmFsc2U7CiAgICAgcHJp
di0+ZG9lc0hhdmVFT1MgPSBmYWxzZTsKICAgICBwcml2LT5pc0ZsdXNoaW5nID0gZmFsc2U7Cisg
ICAgcHJpdi0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZSgpOwogCiAgICAgcHJpdi0+ZGlk
UGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOwogCkBAIC02NzEsNyArNzQ3LDYgQEAgc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0b3AoR3N0QmFzZVNyYyogYmFzZVNyYykKICAgICB7
CiAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRlckxvY2tlcihwcml2LT5hZGFwdGVyTG9jayk7CiAg
ICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwotICAgICAgICBw
cml2LT5xdWV1ZVNpemUgPSAwOwogICAgIH0KIAogICAgIHdlYmtpdFdlYlNyY1Jlc2V0KHNyYyk7
CkBAIC03MjksNiArODA0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY0RvU2VlayhH
c3RCYXNlU3JjKiBiYXNlU3JjLCBHc3RTZWdtZW50KiBzZWdtZW50KQogICAgIHByaXYtPmlzU2Vl
a2luZyA9IHRydWU7CiAgICAgcHJpdi0+cmVxdWVzdGVkUG9zaXRpb24gPSBzZWdtZW50LT5zdGFy
dDsKICAgICBwcml2LT5zdG9wUG9zaXRpb24gPSBzZWdtZW50LT5zdG9wOworICAgIHByaXYtPmFk
YXB0ZXJDb25kaXRpb24ubm90aWZ5T25lKCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTc2
Nyw2ICs4NDMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrKEdzdEJhc2VT
cmMqIGJhc2VTcmMpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJVbmxvY2siKTsKICAgICBz
cmMtPnByaXYtPmlzRmx1c2hpbmcgPSB0cnVlOwogICAgIHNyYy0+cHJpdi0+cmVzcG9uc2VDb25k
aXRpb24ubm90aWZ5T25lKCk7CisgICAgc3JjLT5wcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlm
eU9uZSgpOwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC03OTYsOCArODczLDEwIEBAIHN0YXRp
YyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50
KiBlbGVtZW50LCBHc3RTdGF0CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUEFVU0VE
LT5SRUFEWSBjYW5jZWxsaW5nIG5ldHdvcmsgcmVxdWVzdHMiKTsKICAgICAgICAgc3JjLT5wcml2
LT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAgICAgICAgc3JjLT5wcml2LT5yZXNwb25zZUNvbmRpdGlv
bi5ub3RpZnlPbmUoKTsKKyAgICAgICAgc3JjLT5wcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlm
eU9uZSgpOwogICAgICAgICBicmVhazsKLSAgICB9IGRlZmF1bHQ6CisgICAgfQorICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtOTE4LDcgKzk5Nyw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmNoZWNrVXBkYXRlQmxvY2tzaXplKHVuc2lnbmVk
IGJ5dGVzUmVhZCkKICAgICB1bnNpZ25lZCBibG9ja3NpemUgPSBnc3RfYmFzZV9zcmNfZ2V0X2Js
b2Nrc2l6ZShiYXNlU3JjKTsKICAgICBHU1RfTE9HX09CSkVDVChzcmMsICJDaGVja2luZyB0byB1
cGRhdGUgYmxvY2tzaXplLiBSZWFkOiAldSwgY3VycmVudCBibG9ja3NpemU6ICV1IiwgYnl0ZXNS
ZWFkLCBibG9ja3NpemUpOwogCi0gICAgaWYgKGJ5dGVzUmVhZCA+PSBibG9ja3NpemUgKiBzX2dy
b3dCbG9ja3NpemVMaW1pdCkgeworICAgIGlmIChieXRlc1JlYWQgPiBibG9ja3NpemUgKiBzX2dy
b3dCbG9ja3NpemVMaW1pdCkgewogICAgICAgICBtX3JlZHVjZUJsb2Nrc2l6ZUNvdW50ID0gMDsK
ICAgICAgICAgbV9pbmNyZWFzZUJsb2Nrc2l6ZUNvdW50Kys7CiAKQEAgLTEwNzAsNiArMTE0OSwx
OCBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgYwogCiAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAi
SGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbGVuZ3RoKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihw
cml2LT5yZXNwb25zZUxvY2spOworICAgIC8vIFJvdWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4g
V2UgaWdub3JlIGhlcmUgdGhlIGZpcnN0IGRhdGEgcGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhh
dmUgdG8gcmVzZXQgdGhlIGNvdW50ZXJzIHdoZW4gd2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCisg
ICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUg
b2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2lu
Y2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCisgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhl
IHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgorICAgIGlmIChwcml2
LT5kb3dubG9hZFN0YXJ0VGltZSkgeworICAgICAgICBwcml2LT50b3RhbERvd25sb2FkZWRCeXRl
cyArPSBsZW5ndGg7CisgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6
bm93KCkgLSBwcml2LT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOworICAgICAgICBHU1Rf
VFJBQ0VfT0JKRUNUKHNyYywgImRvd25sb2FkZWQgJXUgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAl
MS4wZiBieXRlcy9zZWNvbmQiLCBwcml2LT50b3RhbERvd25sb2FkZWRCeXRlcywgdGltZVNpbmNl
U3RhcnQKKyAgICAgICAgICAgICwgdGltZVNpbmNlU3RhcnQgPyBwcml2LT50b3RhbERvd25sb2Fk
ZWRCeXRlcyAvIHRpbWVTaW5jZVN0YXJ0IDogMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJp
di0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisgICAgICAgIHByaXYtPnRv
dGFsRG93bmxvYWRlZEJ5dGVzID0gMDsKKyAgICB9CiAKICAgICB1aW50NjRfdCBuZXdQb3NpdGlv
biA9IHByaXYtPnJlYWRQb3NpdGlvbiArIGxlbmd0aDsKICAgICBpZiAoTElLRUxZIChwcml2LT5y
ZXF1ZXN0ZWRQb3NpdGlvbiA9PSBwcml2LT5yZWFkUG9zaXRpb24pKQpAQCAtMTEwNCwxOCArMTE5
NSw4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjCiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGFkYXB0ZXJMb2NrZXIocHJpdi0+YWRhcHRlckxvY2spOwogICAgICAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQoZ19tZW1kdXAoZGF0YSwgbGVuZ3RoKSwgbGVu
Z3RoKTsKLSAgICAgICAgcHJpdi0+cXVldWVTaXplICs9IGxlbmd0aDsKICAgICAgICAgZ3N0X2Fk
YXB0ZXJfcHVzaChwcml2LT5hZGFwdGVyLmdldCgpLCBidWZmZXIpOwotICAgICAgICBHU1RfVFJB
Q0VfT0JKRUNUKHNyYywgIltCdWZmZXJpbmddIGlzRG93bmxvYWRTdXNwZW5kZWQ6ICVzIiwgYm9v
bEZvclByaW50aW5nKHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpKTsKLSAgICAgICAgaWYgKHBy
aXYtPmhhdmVTaXplICYmIChwcml2LT5zaXplID4gU01BTExfTUVESUFfUkVTT1VSQ0VfTUFYX1NJ
WkUpICYmIChwcml2LT5xdWV1ZVNpemUgPiAocHJpdi0+c2l6ZSAqIEhJR0hfUVVFVUVfRkFDVE9S
X1RIUkVTSE9MRCkpCi0gICAgICAgICAgICAmJiAhcHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCAm
JiBwcml2LT5pc1NlZWthYmxlKSB7Ci0gICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywg
IltCdWZmZXJpbmddIHF1ZXVlU2l6ZTogJSIgR19HVUlOVDY0X0ZPUk1BVCAiLCB0aHJlc2hvbGQ6
ICVmIiwgcHJpdi0+cXVldWVTaXplLAotICAgICAgICAgICAgICAgIHByaXYtPnNpemUgKiBISUdI
X1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQpOwotICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChz
cmMsICJbQnVmZmVyaW5nXSBTdG9wcGluZyByZXNvdXJjZSBsb2FkZXIiKTsKLSAgICAgICAgICAg
IHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgPSB0cnVlOwotICAgICAgICAgICAgcHJpdi0+cmVz
b3VyY2UtPnN0b3AoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBz
dG9wTG9hZGVySWZOZWVkZWQoc3JjKTsKICAgICAgICAgcHJpdi0+YWRhcHRlckNvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387511</attachid>
            <date>2020-01-13 03:49:01 -0800</date>
            <delta_ts>2020-01-14 02:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206003-20200113124900.patch</filename>
            <type>text/plain</type>
            <size>20472</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uM2YwYjU2NThhNjk5ZWFiYzg5NDY2ODAzMWNmZjM4
NWQxYWRlNTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAxLTEzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmV3b3JrIFdlYktpdFdlYlNyYyB0byBpbXByb3ZlIHJvYnVzdG5lc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjAwMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld29ya2VkIGhvdyB0
aGUgd2ViIHNvdXJjZSBkZWFscyB3aXRoIGRhdGEuIEl0J3MgbW9yZSBlYWdlciBub3cKKyAgICAg
ICAgaW4gcHVzaGluZyBkYXRhIGRvd25zdHJlYW0uICBXZSBkb24ndCB1c2UgdGhlIEdzdEFkYXB0
ZXIgbWV0aG9kcworICAgICAgICBtYXJrZWQgYXMgZmFzdCBhbnltb3JlIGJlY2F1c2Ugc29tZXRp
bWVzIGl0IHdhcyBzbG93ZXIuIFRoZSByZWFzb24KKyAgICAgICAgd2h5IHRoaXMgd2FzIHNsb3dl
ciBpcyB0aGF0IHdlIGNhbiBiZSB3YWl0aW5nIGZvciBtb3JlICJmYXN0IgorICAgICAgICAodGhh
dCBjb3VsZCBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgX2Zhc3QgQVBJKSBidWZmZXJzIHRvIGJlCisg
ICAgICAgIGF2YWlsYWJsZSBldmVuIGluIGNhc2VzIHdoZXJlIHRoZSBxdWV1ZSBpcyBub3QgZW1w
dHkuIFRoZXNlIG90aGVyCisgICAgICAgIGJ1ZmZlcnMgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRo
ZSAibm9uIF9mYXN0IiBBUEkuCisKKyAgICAgICAgVGhlIHN0cmVhbWluZyB0aHJlYWQgbG9ja3Mg
bm93IHdoZW4gaXQgaGFzIG5vIGRhdGEgdG8gcHVzaAorICAgICAgICBkb3duc3RyZWFtIGFuZCBy
ZXN0YXJ0cyB0aGUgZG93bmxvYWQgaWYgbmVlZGVkLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gg
d2UgYWxzbyBmaXhlZCB0aGUgcG9zc2libGUgcmFjZSBjb25kaXRpb24gb2YKKyAgICAgICAgcmVj
ZWl2aW5nIGEgZmx1c2ggZHVyaW5nIHRoZSBzdHJlYW1pbmcgdGhyZWFkIHdhaXQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBqdXN0IGEgcmV3b3JrLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcyk6IEFk
ZGVkIEZBTExUSFJPVUdILgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAocmVzdGFydExvYWRlcklmTmVl
ZGVkKToKKyAgICAgICAgKHN0b3BMb2FkZXJJZk5lZWRlZCk6IFJlZmFjdG9yZWQuCisgICAgICAg
ICh3ZWJLaXRXZWJTcmNDcmVhdGUpOiBBdm9pZCBhZGFwdGVyIG1ldGhvZHMgbWFya2VkIGFzIGZh
c3QsCisgICAgICAgIG90aGVyd2lzZSB3ZSBtaWdodCBiZSB3YWl0aW5nIGZvciBkYXRhIHdlIGFs
cmVhZHkgaGF2ZS4gU3RyZWFtaW5nCisgICAgICAgIHRocmVhZCBpcyBub3cgZ29pbmcgdG8gbG9j
ayB3YWl0aW5nIGZvciBkYXRhIGFuZCBpcyBtb3JlIGVhZ2VyIGluCisgICAgICAgIHB1c2hpbmcg
ZGF0YSBkb3duc3RyZWFtLgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6IE5vIG1vcmUgcXVl
dWVTaXplLgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY1VuTG9jayk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZSk6IE5vdGlmeSBz
dHJlYW1pbmcgdGhyZWFkLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmNoZWNrVXBkYXRlQmxvY2tzaXplKTogQmxvY2tzaXplCisgICAgICAgIGFkanVzdG1lbnQgaW1w
cm92ZWQuIFdpdGggZm9ybWVyIHZhbHVlcyBibG9ja3NpemUgZ3JldyB0b28gZmFzdAorICAgICAg
ICBhbmQgY291bGRuJ3QgYmUgcmVkdWNlZCBzbyBlYXNpbHkuIEkgdGhpbmsgbm93IGl0IGFkanVz
dHMgbW9yZQorICAgICAgICBxdWlja2x5IHRvIHRoZSByZWFsIG5ldHdvcmsgdmFsdWVzLgorICAg
ICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZCk6IEFkZGVk
IHJ1ZGltZW50YXJ5CisgICAgICAgIGJhbmR3aXRoIGNhbGN1bGF0aW9uIGFuZCB1c2Ugc3RvcExv
YWRlcklmTmVlZGVkLgorCiAyMDIwLTAxLTEyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGV4dC1pbmRlbnQgd2l0aCBwZXJjZW50YWdlIHZhbHVlIHNob3VsZCBy
ZXNvbHZlIGFnYWluc3QgdGhlIGF2YWlsYWJsZSB3aWR0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAyZGVkMjAzODc5MTE4Y2E2YmUyZmQ5
NDg3ZmJhNDVlNzU0N2MwODNlLi5kYTMxNmM4Yzg3NThiOGMwNTZmMzg2N2VjNjliYTU1MzFlMjkz
MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMjU3NCw2ICsyNTc0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
R1NUX1NUQVRFX1BBVVNFRDoKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNl
IEdTVF9TVEFURV9QTEFZSU5HOgogICAgICAgICAgICAgaWYgKG1faXNCdWZmZXJpbmcpIHsKICAg
ICAgICAgICAgICAgICBpZiAobV9idWZmZXJpbmdQZXJjZW50YWdlID09IDEwMCkgewpAQCAtMjYx
NCw3ICsyNjE1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0
YXRlcygpCiAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJyZW50U3RhdGUgPT0gR1NUX1NUQVRFX1BM
QVlJTkcpIHsKICAgICAgICAgICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKIAotICAgICAgICAgICAg
aWYgKChtX2lzQnVmZmVyaW5nICYmIG1faXNMaXZlU3RyZWFtKSB8fCAhbV9wbGF5YmFja1JhdGUp
IHsKKyAgICAgICAgICAgIGlmICgobV9pc0J1ZmZlcmluZyAmJiAhbV9pc0xpdmVTdHJlYW0pIHx8
ICFtX3BsYXliYWNrUmF0ZSkgewogICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlw
ZWxpbmUoKSwgIltCdWZmZXJpbmddIFBhdXNpbmcgc3RyZWFtIGZvciBidWZmZXJpbmcuIik7CiAg
ICAgICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggNjQxNTQxNzk3MzA3OTAzMDFhZTE3OGVmODRkN2Y4YWQ3ZWVmZWQ0Ny4uNWQ3MTA4YmI5
ZWU4OGFkZjA3NzlhYTQwMWUwOGM2NGEyNjlkYTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBvdmVycmlkZTsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IHNfZ3Jvd0Jsb2Nrc2l6ZUxpbWl0IHsgMSB9OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfZ3Jvd0Jsb2Nrc2l6ZUNvdW50IHsgMSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IHNfZ3Jvd0Jsb2Nrc2l6ZUNvdW50IHsgMiB9OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IHNfZ3Jvd0Jsb2Nrc2l6ZUZhY3RvciB7IDIgfTsKLSAgICBzdGF0aWMgY29u
c3RleHByIGZsb2F0IHNfcmVkdWNlQmxvY2tzaXplTGltaXQgeyAwLjIwIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBmbG9hdCBzX3JlZHVjZUJsb2Nrc2l6ZUxpbWl0IHsgMC41IH07CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgc19yZWR1Y2VCbG9ja3NpemVDb3VudCB7IDIgfTsKICAgICBzdGF0
aWMgY29uc3RleHByIGZsb2F0IHNfcmVkdWNlQmxvY2tzaXplRmFjdG9yIHsgMC41IH07CiAgICAg
aW50IG1fcmVkdWNlQmxvY2tzaXplQ291bnQgeyAwIH07CkBAIC0xNDEsMTEgKzE0MSwxMiBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogICAgIHVuc2lnbmVkIG1pbmltdW1CbG9ja3Np
emU7CiAgICAgTG9jayBhZGFwdGVyTG9jazsKICAgICBDb25kaXRpb24gYWRhcHRlckNvbmRpdGlv
bjsKLSAgICB1aW50NjRfdCBxdWV1ZVNpemUgeyAwIH07CiAgICAgYm9vbCBpc0Rvd25sb2FkU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAgICAg
R1JlZlB0cjxHc3RFdmVudD4gaHR0cEhlYWRlcnNFdmVudDsKICAgICBHVW5pcXVlUHRyPEdzdFN0
cnVjdHVyZT4gaHR0cEhlYWRlcnM7CisgICAgV2FsbFRpbWUgZG93bmxvYWRTdGFydFRpbWUgeyBX
YWxsVGltZTo6bmFuKCkgfTsKKyAgICB1aW50NjRfdCB0b3RhbERvd25sb2FkZWRCeXRlcyB7IDAg
fTsKIH07CiAKIGVudW0gewpAQCAtMTgwLDYgKzE4MSw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJL
aXRXZWJTcmNRdWVyeShHc3RCYXNlU3JjKiwgR3N0UXVlcnkqKTsKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFzZVNyYyopOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1VuTG9ja1N0b3AoR3N0QmFzZVNyYyopOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0
Q29udGV4dChHc3RFbGVtZW50KiwgR3N0Q29udGV4dCopOworc3RhdGljIHZvaWQgcmVzdGFydExv
YWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyopOworc3RhdGljIHZvaWQgc3RvcExvYWRlcklmTmVl
ZGVkKFdlYktpdFdlYlNyYyopOwogCiAjZGVmaW5lIHdlYmtpdF93ZWJfc3JjX3BhcmVudF9jbGFz
cyBwYXJlbnRfY2xhc3MKIFdFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0V2ViU3Jj
LCB3ZWJraXRfd2ViX3NyYywgR1NUX1RZUEVfUFVTSF9TUkMsCkBAIC0zNDUsNiArMzQ4LDcyIEBA
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1NldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVudCwg
R3N0Q29udGV4dCogY29udGV4dCkKICAgICBHU1RfRUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3Mp
LT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0KTsKIH0KIAorc3RhdGljIHZvaWQgcmVzdGFy
dExvYWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyogc3JjKQoreworICAgIFdlYktpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAoIXByaXYtPmlzRG93bmxvYWRTdXNw
ZW5kZWQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJkb3dubG9hZCBhbHJlYWR5
IGFjdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1NUX1RSQUNFX09CSkVD
VChzcmMsICJpcyBkb3dubG9hZCBzdXNwZW5kZWQgJXMsIGRvZXMgaGF2ZSBFT1MgJXMsIGRvZXMg
aGF2ZSBzaXplICVzLCBpcyBzZWVrYWJsZSAlcywgc2l6ZSAlIiBHX0dVSU5UNjRfRk9STUFUCisg
ICAgICAgICIgKG1pbiAldSkiLCBib29sRm9yUHJpbnRpbmcocHJpdi0+aXNEb3dubG9hZFN1c3Bl
bmRlZCksIGJvb2xGb3JQcmludGluZyhwcml2LT5kb2VzSGF2ZUVPUyksIGJvb2xGb3JQcmludGlu
Zyhwcml2LT5oYXZlU2l6ZSkKKyAgICAgICAgLCBib29sRm9yUHJpbnRpbmcocHJpdi0+aXNTZWVr
YWJsZSksIHByaXYtPnNpemUsIFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFKTsKKyAgICBp
ZiAocHJpdi0+ZG9lc0hhdmVFT1MgfHwgIXByaXYtPmhhdmVTaXplIHx8ICFwcml2LT5pc1NlZWth
YmxlIHx8IHByaXYtPnNpemUgPD0gU01BTExfTUVESUFfUkVTT1VSQ0VfTUFYX1NJWkUpIHsKKyAg
ICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJkb3dubG9hZCBjYW5ub3QgYmUgc3RvcHBlZC9y
ZXN0YXJ0ZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBHU1RfVFJBQ0VfT0JKRUNU
KHNyYywgInJlYWQgcG9zaXRpb24gJSIgR19HVUlOVDY0X0ZPUk1BVCAiLCBzdGF0ZSAlcyIsIHBy
aXYtPnJlYWRQb3NpdGlvbiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoR1NUX1NUQVRFKHNy
YykpKTsKKyAgICBpZiAoIXByaXYtPnJlYWRQb3NpdGlvbiB8fCBwcml2LT5yZWFkUG9zaXRpb24g
PT0gcHJpdi0+c2l6ZSB8fCBHU1RfU1RBVEUoc3JjKSA8IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAg
ICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJjYW4ndCByZXN0YXJ0IGRvd25sb2FkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgcXVldWVTaXplID0gZ3N0X2FkYXB0
ZXJfYXZhaWxhYmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOworICAgIEdTVF9UUkFDRV9PQkpFQ1Qo
c3JjLCAicXVldWUgc2l6ZSAlIiBHX0dVSU5UNjRfRk9STUFUICIgKG1pbiAlMS4wZikiLCBxdWV1
ZVNpemUKKyAgICAgICAgLCBwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xE
ICogTE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQpOworCisgICAgaWYgKHF1ZXVlU2l6ZSA+PSBw
cml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xEICogTE9XX1FVRVVFX0ZBQ1RP
Ul9USFJFU0hPTEQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJxdWV1ZSBzaXpl
IGFib3ZlIGxvdyB3YXRlcm1hcmssIG5vdCByZXN0YXJ0aW5nIGRvd25sb2FkIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgInJlc3RhcnRpbmcg
ZG93bmxvYWQiKTsKKyAgICBwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkID0gZmFsc2U7CisgICAg
d2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoR1NUX0JBU0VfU1JDX0NBU1Qoc3JjKSwgZmFsc2UpOwor
fQorCisKK3N0YXRpYyB2b2lkIHN0b3BMb2FkZXJJZk5lZWRlZChXZWJLaXRXZWJTcmMqIHNyYykK
K3sKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYg
KHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQpIHsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJkb3dubG9hZCBhbHJlYWR5IHN1c3BlbmRlZCIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJpcyBkb3dubG9hZCBzdXNwZW5kZWQgJXMs
IGRvZXMgaGF2ZSBzaXplICVzLCBpcyBzZWVrYWJsZSAlcywgc2l6ZSAlIiBHX0dVSU5UNjRfRk9S
TUFUICIgKG1pbiAldSkiCisgICAgICAgICwgYm9vbEZvclByaW50aW5nKHByaXYtPmlzRG93bmxv
YWRTdXNwZW5kZWQpLCBib29sRm9yUHJpbnRpbmcocHJpdi0+aGF2ZVNpemUpLCBib29sRm9yUHJp
bnRpbmcocHJpdi0+aXNTZWVrYWJsZSksIHByaXYtPnNpemUKKyAgICAgICAgLCBTTUFMTF9NRURJ
QV9SRVNPVVJDRV9NQVhfU0laRSk7CisgICAgaWYgKCFwcml2LT5oYXZlU2l6ZSB8fCAhcHJpdi0+
aXNTZWVrYWJsZSB8fCBwcml2LT5zaXplIDw9IFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpF
KSB7CisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiZG93bmxvYWQgY2Fubm90IGJlIHN0
b3BwZWQvcmVzdGFydGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3Qg
cXVldWVTaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwor
ICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAicXVldWUgc2l6ZSAlIiBHX0dVSU5UNjRfRk9STUFU
ICIgKG1heCAlMS4wZikiLCBxdWV1ZVNpemUsIHByaXYtPnNpemUgKiBISUdIX1FVRVVFX0ZBQ1RP
Ul9USFJFU0hPTEQpOworICAgIGlmIChxdWV1ZVNpemUgPD0gcHJpdi0+c2l6ZSAqIEhJR0hfUVVF
VUVfRkFDVE9SX1RIUkVTSE9MRCkgeworICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgInF1
ZXVlIHNpemUgdW5kZXIgaGlnaCB3YXRlcm1hcmssIG5vdCBzdG9wcGluZyBkb3dubG9hZCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJzdG9w
cGluZyBkb3dubG9hZCIpOworICAgIHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIHByaXYtPnJlc291cmNlLT5zdG9wKCk7Cit9CisKIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdl
YktpdFdlYlNyY0NyZWF0ZShHc3RQdXNoU3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIp
CiB7CiAgICAgR3N0QmFzZVNyYyogYmFzZVNyYyA9IEdTVF9CQVNFX1NSQ19DQVNUKHB1c2hTcmMp
OwpAQCAtMzU3LDkgKzQyNiw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYktpdFdlYlNyY0Ny
ZWF0ZShHc3RQdXNoU3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRlckxvY2tlcihwcml2LT5hZGFwdGVyTG9jayk7
CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWtpbmcsIGZsdXNoaW5nIGFk
YXB0ZXIiKTsKLSAgICAgICAgICAgIC8vIERpc2NhcmQgYWxsIHRoZSBidWZmZXJzIGNvbWluZyBi
ZWZvcmUgdGhlIHJlcXVlc3RlZCBzZWVrIHBvc2l0aW9uLgotICAgICAgICAgICAgZ3N0X2FkYXB0
ZXJfZmx1c2gocHJpdi0+YWRhcHRlci5nZXQoKSwgcHJpdi0+cXVldWVTaXplKTsKLSAgICAgICAg
ICAgIHByaXYtPnF1ZXVlU2l6ZSA9IDA7CisgICAgICAgICAgICBnc3RfYWRhcHRlcl9jbGVhcihw
cml2LT5hZGFwdGVyLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICB1aW50NjRfdCByZXF1ZXN0
ZWRQb3NpdGlvbiA9IHByaXYtPnJlcXVlc3RlZFBvc2l0aW9uOwogICAgICAgICB3ZWJLaXRXZWJT
cmNTdG9wKGJhc2VTcmMpOwpAQCAtMzc5LDE0ICs0NDYsMTEgQEAgc3RhdGljIEdzdEZsb3dSZXR1
cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqIHB1c2hTcmMsIEdzdEJ1ZmZlcioqIGJ1
ZmZlcikKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJm
bHVzaGluZzogJXMsIGRvZXNIYXZlRU9TOiAlcywgcXVldWVTaXplOiAlIiBHX0dVSU5UNjRfRk9S
TUFUICIsIGlzRG93bmxvYWRTdXNwZW5kZWQ6ICVzIiwKLSAgICAgICAgYm9vbEZvclByaW50aW5n
KHByaXYtPmlzRmx1c2hpbmcpLCBib29sRm9yUHJpbnRpbmcocHJpdi0+ZG9lc0hhdmVFT1MpLCBw
cml2LT5xdWV1ZVNpemUsCi0gICAgICAgIGJvb2xGb3JQcmludGluZyhwcml2LT5pc0Rvd25sb2Fk
U3VzcGVuZGVkKSk7Ci0KLSAgICBpZiAocHJpdi0+aXNGbHVzaGluZykgewotICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIkZsdXNoaW5nIik7Ci0gICAgICAgIHJldHVybiBHU1RfRkxPV19G
TFVTSElORzsKLSAgICB9CisgICAgLy8gV2UgZG9uJ3QgdXNlIHRoZSBHc3RBZGFwdGVyIG1ldGhv
ZHMgbWFya2VkIGFzIGZhc3QgYW55bW9yZSBiZWNhdXNlIHNvbWV0aW1lcyBpdCB3YXMgc2xvd2Vy
LiBUaGUgcmVhc29uIHdoeSB0aGlzIHdhcyBzbG93ZXIgaXMgdGhhdCB3ZSBjYW4gYmUKKyAgICAv
LyB3YWl0aW5nIGZvciBtb3JlICJmYXN0IiAodGhhdCBjb3VsZCBiZSByZXRyaWV2ZWQgd2l0aCB0
aGUgX2Zhc3QgQVBJKSBidWZmZXJzIHRvIGJlIGF2YWlsYWJsZSBldmVuIGluIGNhc2VzIHdoZXJl
IHRoZSBxdWV1ZSBpcyBub3QgZW1wdHkuIFRoZXNlCisgICAgLy8gb3RoZXIgYnVmZmVycyBjYW4g
YmUgcmV0cmlldmVkIHdpdGggdGhlICJub24gX2Zhc3QiIEFQSS4KKyAgICBHU1RfVFJBQ0VfT0JK
RUNUKHNyYywgImZsdXNoaW5nOiAlcywgZG9lc0hhdmVFT1M6ICVzLCBpc0Rvd25sb2FkU3VzcGVu
ZGVkOiAlcyIsIGJvb2xGb3JQcmludGluZyhwcml2LT5pc0ZsdXNoaW5nKQorICAgICAgICAsIGJv
b2xGb3JQcmludGluZyhwcml2LT5kb2VzSGF2ZUVPUyksIGJvb2xGb3JQcmludGluZyhwcml2LT5p
c0Rvd25sb2FkU3VzcGVuZGVkKSk7CiAKICAgICBpZiAocHJpdi0+ZG9lc0hhdmVFT1MpIHsKICAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJFT1MiKTsKQEAgLTM5NCwyOCArNDU4LDQzIEBA
IHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYktpdFdlYlNyY0NyZWF0ZShHc3RQdXNoU3JjKiBwdXNo
U3JjLCBHc3RCdWZmZXIqKiBidWZmZXIpCiAgICAgfQogCiAgICAgdW5zaWduZWQgc2l6ZSA9IGdz
dF9iYXNlX3NyY19nZXRfYmxvY2tzaXplKGJhc2VTcmMpOwotICAgIGJvb2wgaXNBZGFwdGVyRHJh
aW5lZCA9IGZhbHNlOworICAgIHNpemVfdCBxdWV1ZVNpemU7CiAgICAgewogICAgICAgICBMb2Nr
SG9sZGVyIGFkYXB0ZXJMb2NrZXIocHJpdi0+YWRhcHRlckxvY2spOwogICAgICAgICB1bnNpZ25l
ZCByZXRyaWVzID0gMDsKLSAgICAgICAgc2l6ZV90IGF2YWlsYWJsZSA9IGdzdF9hZGFwdGVyX2F2
YWlsYWJsZV9mYXN0KHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwotICAgICAgICB3aGlsZSAoYXZhaWxh
YmxlIDwgc2l6ZSAmJiAhaXNBZGFwdGVyRHJhaW5lZCkgewotICAgICAgICAgICAgcHJpdi0+YWRh
cHRlckNvbmRpdGlvbi53YWl0Rm9yKHByaXYtPmFkYXB0ZXJMb2NrLCAxMDBfbXMsIFsmXSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGdzdF9hZGFwdGVyX2F2YWlsYWJsZV9mYXN0KHByaXYtPmFk
YXB0ZXIuZ2V0KCkpID49IHNpemU7CisgICAgICAgIHF1ZXVlU2l6ZSA9IGdzdF9hZGFwdGVyX2F2
YWlsYWJsZShwcml2LT5hZGFwdGVyLmdldCgpKTsKKyAgICAgICAgR1NUX1RSQUNFX09CSkVDVChz
cmMsICJhdmFpbGFibGUgYnl0ZXMgJSIgR19HU0laRV9GT1JNQVQgIiwgYmxvY2sgc2l6ZSAldSIs
IHF1ZXVlU2l6ZSwgc2l6ZSk7CisgICAgICAgIHdoaWxlICghcXVldWVTaXplICYmICFwcml2LT5p
c0ZsdXNoaW5nKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImxldCdzIHRy
eSB0byByZXN0YXJ0IHRoZSBkb3dubG9hZCBpZiBwb3NzaWJsZSBhbmQgd2FpdCBhIGJpdCBpZiBu
byBkYXRhIik7CisgICAgICAgICAgICBwcml2LT5hZGFwdGVyQ29uZGl0aW9uLndhaXRGb3IocHJp
di0+YWRhcHRlckxvY2ssIDFfcywgWyZdIHsKKyAgICAgICAgICAgICAgICByZXN0YXJ0TG9hZGVy
SWZOZWVkZWQoc3JjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpdi0+aXNGbHVzaGluZyB8
fCAoIXByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgJiYgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlKHBy
aXYtPmFkYXB0ZXIuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0cmll
cysrOwotICAgICAgICAgICAgYXZhaWxhYmxlID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlX2Zhc3Qo
cHJpdi0+YWRhcHRlci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoYXZhaWxhYmxlICYmIGF2YWls
YWJsZSA8IHNpemUpIHsKLSAgICAgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgImRp
ZCBub3QgZ2V0IHRoZSAldSBibG9ja3NpemUgYnl0ZXMsIGxldCdzIHB1c2ggdGhlICUiIEdfR1NJ
WkVfRk9STUFUICIgYnl0ZXMgd2UgZ290Iiwgc2l6ZSwgYXZhaWxhYmxlKTsKLSAgICAgICAgICAg
ICAgICBzaXplID0gYXZhaWxhYmxlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXRyaWVzID4g
MykKLSAgICAgICAgICAgICAgICBpc0FkYXB0ZXJEcmFpbmVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHF1ZXVlU2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZShwcml2LT5hZGFwdGVyLmdldCgpKTsK
KyAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiYXZhaWxhYmxlICUiIEdfR1NJWkVf
Rk9STUFULCBxdWV1ZVNpemUpOworICAgICAgICAgICAgaWYgKHF1ZXVlU2l6ZSB8fCBwcml2LT5p
c0ZsdXNoaW5nKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBkYXRhIG9yIHdlJ3JlIGZs
dXNoaW5nLiBXZSBjYW4gYnJlYWsgdGhlIGxvb3AgaGVyZS4KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGtlZXAgd2FpdGlu
ZyBidXQgd2UgY291bGQgYmUgaW4gRU9TLiBMZXQncyBjaGVjayB0aGUgdHdvIHBvc3NpYmlsaXRp
ZXM6CisgICAgICAgICAgICAvLyAxLiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSB3aXRo
IGEga25vd24gc2l6ZS4KKyAgICAgICAgICAgIC8vIDIuIFRoZSBkb3dubG9hZCBpcyBub3Qgc3Vz
cGVuZGVkIGFuZCBubyBtb3JlIGRhdGEgYXJlIGFycml2aW5nLiBXZSBjYW5ub3Qgd2FpdCBmb3Jl
dmVyLCAxMHgxcyBzZWVtcyBzYWZlIGFuZCBzZW5zaWJsZS4KKyAgICAgICAgICAgIGlmIChwcml2
LT5oYXZlU2l6ZSAmJiBwcml2LT5yZWFkUG9zaXRpb24gPj0gcHJpdi0+c2l6ZSkgeworICAgICAg
ICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiV2FpdGluZyBmb3IgZGF0YSBiZXlvbmQg
dGhlIGVuZCwgc2lnbmFsbGluZyBFT1MiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX0ZM
T1dfRU9TOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMs
ICJpcyBkb3dubG9hZCBzdXNwZW5kZWQ/ICVzLCBudW0gcmV0cmllcyAldSIsIGJvb2xGb3JQcmlu
dGluZyhwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkKSwgcmV0cmllcyArIDEpOworICAgICAgICAg
ICAgaWYgKCFwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkICYmICsrcmV0cmllcyA+PSAxMCkgewor
ICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiQWRhcHRlciBzdGlsbCBlbXB0
eSBhZnRlciAxMHMgb2Ygd2FpdGluZywgYXNzdW1pbmcgRU9TIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX0VPUzsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChpc0FkYXB0ZXJEcmFpbmVkKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiQWRhcHRlciBzdGlsbCBlbXB0eSBhZnRlciA0MDAgbWlsbGktc2Vjb25kcyBvZiB3YWl0aW5n
LCBhc3N1bWluZyBFT1MiKTsKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKKyAgICBpZiAo
cHJpdi0+aXNGbHVzaGluZykgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkZsdXNo
aW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKICAgICB9CiAKICAgICBp
ZiAocHJpdi0+aGF2ZVNpemUgJiYgIXByaXYtPmlzRHVyYXRpb25TZXQpIHsKQEAgLTQyOSwxNCAr
NTA4LDE3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYktpdFdlYlNyY0NyZWF0ZShHc3RQdXNo
U3JjKiBwdXNoU3JjLCBHc3RCdWZmZXIqKiBidWZmZXIpCiAgICAgICAgIGdzdF9wYWRfcHVzaF9l
dmVudChHU1RfQkFTRV9TUkNfUEFEKGJhc2VTcmMpLCBwcml2LT5odHRwSGVhZGVyc0V2ZW50Lmxl
YWtSZWYoKSk7CiAKICAgICB7Ci0gICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiVGFraW5n
ICV1IGJ5dGVzIGZyb20gYWRhcHRlciIsIHNpemUpOwogICAgICAgICBMb2NrSG9sZGVyIGFkYXB0
ZXJMb2NrZXIocHJpdi0+YWRhcHRlckxvY2spOworICAgICAgICBxdWV1ZVNpemUgPSBnc3RfYWRh
cHRlcl9hdmFpbGFibGUocHJpdi0+YWRhcHRlci5nZXQoKSk7CisgICAgICAgIGlmIChxdWV1ZVNp
emUgPCBzaXplKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIkRpZCBub3Qg
Z2V0IHRoZSAldSBibG9ja3NpemUgYnl0ZXMsIGxldCdzIHB1c2ggdGhlICUiIEdfR1NJWkVfRk9S
TUFUICIgYnl0ZXMgd2UgZ290Iiwgc2l6ZSwgcXVldWVTaXplKTsKKyAgICAgICAgICAgIHNpemUg
PSBxdWV1ZVNpemU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgR1NUX1RSQUNFX09CSkVD
VChzcmMsICJUYWtpbmcgJXUgYnl0ZXMgZnJvbSBhZGFwdGVyIiwgc2l6ZSk7CiAgICAgICAgIGlm
IChzaXplKSB7Ci0gICAgICAgICAgICAqYnVmZmVyID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXJf
ZmFzdChwcml2LT5hZGFwdGVyLmdldCgpLCBzaXplKTsKKyAgICAgICAgICAgICpidWZmZXIgPSBn
c3RfYWRhcHRlcl90YWtlX2J1ZmZlcihwcml2LT5hZGFwdGVyLmdldCgpLCBzaXplKTsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCpidWZmZXIpOwogCi0gICAgICAgICAgICBwcml2LT5xdWV1
ZVNpemUgLT0gc2l6ZTsKLQogICAgICAgICAgICAgR1NUX0JVRkZFUl9PRkZTRVQoKmJ1ZmZlcikg
PSBiYXNlU3JjLT5zZWdtZW50LnBvc2l0aW9uOwogICAgICAgICAgICAgR1NUX0JVRkZFUl9PRkZT
RVRfRU5EKCpidWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVQoKmJ1ZmZlcikgKyBzaXplOwogICAg
ICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJCdWZmZXIgYm91bmRzIHNldCB0byAlIiBH
X0dVSU5UNjRfRk9STUFUICItJSIgR19HVUlOVDY0X0ZPUk1BVCwgR1NUX0JVRkZFUl9PRkZTRVQo
KmJ1ZmZlciksIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCgqYnVmZmVyKSk7CkBAIC00NDksMTggKzUz
MSwxMSBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNy
YyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgICAgICAgICAgfSBlbHNlIGlmIChw
cml2LT53YXNTZWVraW5nKQogICAgICAgICAgICAgICAgIHByaXYtPndhc1NlZWtpbmcgPSBmYWxz
ZTsKIAotICAgICAgICAgICAgaWYgKCFwcml2LT5kb2VzSGF2ZUVPUyAmJiBwcml2LT5oYXZlU2l6
ZSAmJiBwcml2LT5pc1NlZWthYmxlCi0gICAgICAgICAgICAgICAgJiYgKHByaXYtPnNpemUgPiBT
TUFMTF9NRURJQV9SRVNPVVJDRV9NQVhfU0laRSkgJiYgcHJpdi0+cmVhZFBvc2l0aW9uCi0gICAg
ICAgICAgICAgICAgJiYgKHByaXYtPnJlYWRQb3NpdGlvbiAhPSBwcml2LT5zaXplKQotICAgICAg
ICAgICAgICAgICYmIChwcml2LT5xdWV1ZVNpemUgPCAocHJpdi0+c2l6ZSAqIEhJR0hfUVVFVUVf
RkFDVE9SX1RIUkVTSE9MRCAqIExPV19RVUVVRV9GQUNUT1JfVEhSRVNIT0xEKSkKLSAgICAgICAg
ICAgICAgICAmJiBHU1RfU1RBVEUoc3JjKSA+PSBHU1RfU1RBVEVfUEFVU0VEICYmIHByaXYtPmlz
RG93bmxvYWRTdXNwZW5kZWQpIHsKLSAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIltCdWZmZXJpbmddIEFkYXB0ZXIgcnVubmluZyBvdXQgb2YgZGF0YSwgcmVzdGFydGluZyBk
b3dubG9hZCIpOwotICAgICAgICAgICAgICAgIHByaXYtPmlzRG93bmxvYWRTdXNwZW5kZWQgPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChiYXNlU3JjLCBm
YWxzZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUKHNyYywgIkVtcHR5IGFkYXB0ZXI/Iik7CisgICAgICAgICAgICByZXN0YXJ0
TG9hZGVySWZOZWVkZWQoc3JjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc3JjLCAiRW1wdHkgYWRhcHRlciEiKTsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIEdTVF9GTE9XX09L
OwpAQCAtNTQ4LDYgKzYyMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBib29sIG5vdGlmeUFzeW5jQ29tCiAgICAgcHJpdi0+
aXNEdXJhdGlvblNldCA9IGZhbHNlOwogICAgIHByaXYtPmRvZXNIYXZlRU9TID0gZmFsc2U7CiAg
ICAgcHJpdi0+aXNGbHVzaGluZyA9IGZhbHNlOworICAgIHByaXYtPmRvd25sb2FkU3RhcnRUaW1l
ID0gV2FsbFRpbWU6Om5hbigpOwogCiAgICAgcHJpdi0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVj
ayA9IGZhbHNlOwogCkBAIC02NzEsNyArNzQ3LDYgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1N0b3AoR3N0QmFzZVNyYyogYmFzZVNyYykKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIg
YWRhcHRlckxvY2tlcihwcml2LT5hZGFwdGVyTG9jayk7CiAgICAgICAgIGdzdF9hZGFwdGVyX2Ns
ZWFyKHByaXYtPmFkYXB0ZXIuZ2V0KCkpOwotICAgICAgICBwcml2LT5xdWV1ZVNpemUgPSAwOwog
ICAgIH0KIAogICAgIHdlYmtpdFdlYlNyY1Jlc2V0KHNyYyk7CkBAIC03MjksNiArODA0LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY0RvU2VlayhHc3RCYXNlU3JjKiBiYXNlU3JjLCBH
c3RTZWdtZW50KiBzZWdtZW50KQogICAgIHByaXYtPmlzU2Vla2luZyA9IHRydWU7CiAgICAgcHJp
di0+cmVxdWVzdGVkUG9zaXRpb24gPSBzZWdtZW50LT5zdGFydDsKICAgICBwcml2LT5zdG9wUG9z
aXRpb24gPSBzZWdtZW50LT5zdG9wOworICAgIHByaXYtPmFkYXB0ZXJDb25kaXRpb24ubm90aWZ5
T25lKCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTc2Nyw2ICs4NDMsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJVbmxvY2siKTsKICAgICBzcmMtPnByaXYtPmlzRmx1c2hpbmcg
PSB0cnVlOwogICAgIHNyYy0+cHJpdi0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7Cisg
ICAgc3JjLT5wcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgIHJldHVybiBU
UlVFOwogfQogCkBAIC03OTYsOCArODczLDEwIEBAIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVy
biB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdGF0CiAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSBjYW5jZWxsaW5nIG5l
dHdvcmsgcmVxdWVzdHMiKTsKICAgICAgICAgc3JjLT5wcml2LT5pc0ZsdXNoaW5nID0gdHJ1ZTsK
ICAgICAgICAgc3JjLT5wcml2LT5yZXNwb25zZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAg
ICAgc3JjLT5wcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICBicmVh
azsKLSAgICB9IGRlZmF1bHQ6CisgICAgfQorICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtOTE4LDcgKzk5Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmNoZWNrVXBkYXRlQmxvY2tzaXplKHVuc2lnbmVkIGJ5dGVzUmVhZCkKICAgICB1bnNp
Z25lZCBibG9ja3NpemUgPSBnc3RfYmFzZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShiYXNlU3JjKTsKICAg
ICBHU1RfTE9HX09CSkVDVChzcmMsICJDaGVja2luZyB0byB1cGRhdGUgYmxvY2tzaXplLiBSZWFk
OiAldSwgY3VycmVudCBibG9ja3NpemU6ICV1IiwgYnl0ZXNSZWFkLCBibG9ja3NpemUpOwogCi0g
ICAgaWYgKGJ5dGVzUmVhZCA+PSBibG9ja3NpemUgKiBzX2dyb3dCbG9ja3NpemVMaW1pdCkgewor
ICAgIGlmIChieXRlc1JlYWQgPiBibG9ja3NpemUgKiBzX2dyb3dCbG9ja3NpemVMaW1pdCkgewog
ICAgICAgICBtX3JlZHVjZUJsb2Nrc2l6ZUNvdW50ID0gMDsKICAgICAgICAgbV9pbmNyZWFzZUJs
b2Nrc2l6ZUNvdW50Kys7CiAKQEAgLTEwNzAsNiArMTE0OSwxOCBAQCB2b2lkIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgYwogCiAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRh
IiwgbGVuZ3RoKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5yZXNwb25zZUxvY2spOwor
ICAgIC8vIFJvdWdoIGJhbmR3aWR0aCBjYWxjdWxhdGlvbi4gV2UgaWdub3JlIGhlcmUgdGhlIGZp
cnN0IGRhdGEgcGFja2FnZSBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgdG8gcmVzZXQgdGhlIGNvdW50
ZXJzIHdoZW4gd2UgaXNzdWUgdGhlIHJlcXVlc3QgYW5kCisgICAgLy8gdGhhdCBmaXJzdCBwYWNr
YWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJl
cXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vp
c2ggdGhlCisgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2VpdmluZyB0aW1lLCBpdCBp
cyBiZXR0ZXIgdG8gaWdub3JlIGl0LgorICAgIGlmICghaXNuYW4ocHJpdi0+ZG93bmxvYWRTdGFy
dFRpbWUpKSB7CisgICAgICAgIHByaXYtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGxlbmd0aDsK
KyAgICAgICAgZG91YmxlIHRpbWVTaW5jZVN0YXJ0ID0gKFdhbGxUaW1lOjpub3coKSAtIHByaXYt
PmRvd25sb2FkU3RhcnRUaW1lKS5zZWNvbmRzKCk7CisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qo
c3JjLCAiZG93bmxvYWRlZCAldSBieXRlcyBpbiAlZiBzZWNvbmRzID1+ICUxLjBmIGJ5dGVzL3Nl
Y29uZCIsIHByaXYtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAorICAgICAg
ICAgICAgLCB0aW1lU2luY2VTdGFydCA/IHByaXYtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGlt
ZVNpbmNlU3RhcnQgOiAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcml2LT5kb3dubG9hZFN0
YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgcHJpdi0+dG90YWxEb3dubG9hZGVk
Qnl0ZXMgPSAwOworICAgIH0KIAogICAgIHVpbnQ2NF90IG5ld1Bvc2l0aW9uID0gcHJpdi0+cmVh
ZFBvc2l0aW9uICsgbGVuZ3RoOwogICAgIGlmIChMSUtFTFkgKHByaXYtPnJlcXVlc3RlZFBvc2l0
aW9uID09IHByaXYtPnJlYWRQb3NpdGlvbikpCkBAIC0xMTA0LDE4ICsxMTk1LDggQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IGMKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgYWRhcHRlckxvY2tl
cihwcml2LT5hZGFwdGVyTG9jayk7CiAgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1
ZmZlcl9uZXdfd3JhcHBlZChnX21lbWR1cChkYXRhLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAg
ICBwcml2LT5xdWV1ZVNpemUgKz0gbGVuZ3RoOwogICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKHBy
aXYtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3Jj
LCAiW0J1ZmZlcmluZ10gaXNEb3dubG9hZFN1c3BlbmRlZDogJXMiLCBib29sRm9yUHJpbnRpbmco
cHJpdi0+aXNEb3dubG9hZFN1c3BlbmRlZCkpOwotICAgICAgICBpZiAocHJpdi0+aGF2ZVNpemUg
JiYgKHByaXYtPnNpemUgPiBTTUFMTF9NRURJQV9SRVNPVVJDRV9NQVhfU0laRSkgJiYgKHByaXYt
PnF1ZXVlU2l6ZSA+IChwcml2LT5zaXplICogSElHSF9RVUVVRV9GQUNUT1JfVEhSRVNIT0xEKSkK
LSAgICAgICAgICAgICYmICFwcml2LT5pc0Rvd25sb2FkU3VzcGVuZGVkICYmIHByaXYtPmlzU2Vl
a2FibGUpIHsKLSAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc3JjLCAiW0J1ZmZlcmluZ10g
cXVldWVTaXplOiAlIiBHX0dVSU5UNjRfRk9STUFUICIsIHRocmVzaG9sZDogJWYiLCBwcml2LT5x
dWV1ZVNpemUsCi0gICAgICAgICAgICAgICAgcHJpdi0+c2l6ZSAqIEhJR0hfUVVFVUVfRkFDVE9S
X1RIUkVTSE9MRCk7Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIltCdWZmZXJp
bmddIFN0b3BwaW5nIHJlc291cmNlIGxvYWRlciIpOwotICAgICAgICAgICAgcHJpdi0+aXNEb3du
bG9hZFN1c3BlbmRlZCA9IHRydWU7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c3RvcCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHN0b3BMb2FkZXJJZk5l
ZWRlZChzcmMpOwogICAgICAgICBwcml2LT5hZGFwdGVyQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwog
ICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>