<?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>169202</bug_id>
          
          <creation_ts>2017-03-06 06:27:53 -0800</creation_ts>
          <short_desc>[GStreamer][MSE] Actually implement flush() on playback pipeline</short_desc>
          <delta_ts>2017-03-08 04:49:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1283751</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-06 06:27:53 -0800</bug_when>
    <thetext>The GStreamer MSE implementation didn&apos;t implement flush() because GStreamer didn&apos;t offer a natural way to flush just one (audio/video) stream instead of flushing the whole pipeline. As this use case was only relevant during seeks, we just did nothing and waited the seek to happen and perform the flush by itself (a seek implies a flush in GStreamer).

However, we have recently detected that flush() also happens in YouTube TV when a quality change happens, so the web page reenqueues higher quality samples and overwrites some buffered ranges having lower quality and having already been enqueued for playback. In that case, flush() should clean the already enqueued data only on that stream and a new reenqueue would provide more accurate (higher resolution) data. As flush() does nothing in our case, the outcome was that the user could see some parts of the video &quot;played twice&quot;, together with some audio/video desynchronization.

The right fix would be to properly implement per-stream flushing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283757</commentid>
    <comment_count>1</comment_count>
      <attachid>303511</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-06 07:18:48 -0800</bug_when>
    <thetext>Created attachment 303511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283766</commentid>
    <comment_count>2</comment_count>
      <attachid>303511</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-06 07:49:46 -0800</bug_when>
    <thetext>Comment on attachment 303511
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:387
&gt; +    PlaybackPipeline* playbackPipeline = static_cast&lt;PlaybackPipeline*&gt;(userData);

Where is this used?

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:389
&gt; +    GstSegment* segment = nullptr;
&gt; +    gst_event_parse_segment(event, const_cast&lt;const GstSegment**&gt;(&amp;segment));

Dunno if I&apos;m reading documentation for gst_event_parse_segment() wrong, but to me it seems as if the segment pointer should point to a valid GstSegment object.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:453
&gt; +    std::unique_ptr&lt;GstSegment, decltype(&amp;gst_segment_free)&gt; segment(gst_segment_new(), &amp;gst_segment_free);

Please add the necessary deleter to GUniquePtrGStreamer.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283905</commentid>
    <comment_count>3</comment_count>
      <attachid>303511</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-06 13:21:54 -0800</bug_when>
    <thetext>Comment on attachment 303511
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:387
&gt;&gt; +    PlaybackPipeline* playbackPipeline = static_cast&lt;PlaybackPipeline*&gt;(userData);
&gt; 
&gt; Where is this used?

It was a leftover of my debugging branch. Thanks for pointing it out.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:389
&gt;&gt; +    gst_event_parse_segment(event, const_cast&lt;const GstSegment**&gt;(&amp;segment));
&gt; 
&gt; Dunno if I&apos;m reading documentation for gst_event_parse_segment() wrong, but to me it seems as if the segment pointer should point to a valid GstSegment object.

It&apos;s a GstSegment** (ie: pointer pointer). This kind of typing is typically used to return pointers, not pointer contents like it would be if it was a GstSegment*. The pattern is similar to the one used here for gst_message_parse_tag(): https://github.com/WebKit/webkit/blob/8091486f/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L1078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283908</commentid>
    <comment_count>4</comment_count>
      <attachid>303547</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-06 13:24:00 -0800</bug_when>
    <thetext>Created attachment 303547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284239</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-07 00:51:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:389
&gt; &gt;&gt; +    gst_event_parse_segment(event, const_cast&lt;const GstSegment**&gt;(&amp;segment));
&gt; &gt; 
&gt; &gt; Dunno if I&apos;m reading documentation for gst_event_parse_segment() wrong, but to me it seems as if the segment pointer should point to a valid GstSegment object.
&gt; 
&gt; It&apos;s a GstSegment** (ie: pointer pointer). This kind of typing is typically
&gt; used to return pointers, not pointer contents like it would be if it was a
&gt; GstSegment*. The pattern is similar to the one used here for
&gt; gst_message_parse_tag():
&gt; https://github.com/WebKit/webkit/blob/8091486f/Source/WebCore/platform/
&gt; graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L1078

So it retrieves a pointer to the Segment object we create in flush()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284241</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-07 00:58:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:389
&gt; &gt; &gt;&gt; +    gst_event_parse_segment(event, const_cast&lt;const GstSegment**&gt;(&amp;segment));
&gt; &gt; &gt; 
&gt; &gt; &gt; Dunno if I&apos;m reading documentation for gst_event_parse_segment() wrong, but to me it seems as if the segment pointer should point to a valid GstSegment object.
&gt; &gt; 
&gt; &gt; It&apos;s a GstSegment** (ie: pointer pointer). This kind of typing is typically
&gt; &gt; used to return pointers, not pointer contents like it would be if it was a
&gt; &gt; GstSegment*. The pattern is similar to the one used here for
&gt; &gt; gst_message_parse_tag():
&gt; &gt; https://github.com/WebKit/webkit/blob/8091486f/Source/WebCore/platform/
&gt; &gt; graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L1078
&gt; 
&gt; So it retrieves a pointer to the Segment object we create in flush()?

OK, re-reading gst_event_parse_segment(), the GstSegment object is stored in the GstEvent&apos;s custom structure. That&apos;s clear now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284254</commentid>
    <comment_count>7</comment_count>
      <attachid>303547</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-07 03:27:30 -0800</bug_when>
    <thetext>Comment on attachment 303547
Patch

It seems that this patch is breaking 5 tests, so I prefer to have a look at them before committing:

imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-a-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-v-bitrate.html
imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-v-framerate.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284385</commentid>
    <comment_count>8</comment_count>
      <attachid>303672</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-07 10:23:54 -0800</bug_when>
    <thetext>Created attachment 303672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284386</commentid>
    <comment_count>9</comment_count>
      <attachid>303672</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-03-07 10:24:59 -0800</bug_when>
    <thetext>Comment on attachment 303672
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:428
&gt; +    if (position == GST_CLOCK_TIME_NONE) {

I just added this extra condition. This solves the test regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284838</commentid>
    <comment_count>10</comment_count>
      <attachid>303672</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-08 04:49:31 -0800</bug_when>
    <thetext>Comment on attachment 303672
Patch

Clearing flags on attachment: 303672

Committed r213572: &lt;http://trac.webkit.org/changeset/213572&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284839</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-08 04:49:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303511</attachid>
            <date>2017-03-06 07:18:48 -0800</date>
            <delta_ts>2017-03-06 13:23:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169202-20170306151846.patch</filename>
            <type>text/plain</type>
            <size>9994</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM2NjI0MGM2N2Q0YjRh
Mzg3NjBjNTM1Y2Y2MmRhMzA4MDYwNTU1MC4uMDk1YTc4MGU4NzQ5MmM2N2E1M2Y0YTdkMjk0NDEy
YzQwNDNhY2Q2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAzLTA2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBBY3R1YWxseSBpbXBsZW1lbnQgZmx1c2goKSBvbiBwbGF5YmFjayBwaXBl
bGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHA6IEFkZGVkIEdS
ZWZQdHIgc3VwcG9ydCBmb3IgR3N0UXVlcnkuCisgICAgICAgIChXVEY6OmFkb3B0R1JlZik6Cisg
ICAgICAgIChXVEY6OnJlZkdQdHI8R3N0UXVlcnk+KToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRy
PEdzdFF1ZXJ5Pik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2gpOiBPbmx5IGFjdHVhbGx5
IGZsdXNoIGluIHRoZSBub24tc2VlayBjYXNlLiBGb3IgdGhlIHNlZWsgY2FzZSwKKyAgICAgICAg
R1N0cmVhbWVyIHNlZWsgd2lsbCBhbHJlYWR5IGRvIHRoZSBmbHVzaC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6YWRkU291cmNlQnVmZmVyKTogQ29uZmlndXJl
IGFwcHNyYyB0byBiZSB0aW1lLWJhc2VkIGluc3RlYWQgb2YgYnl0ZXMtYmFzZWQgdG8gZW5zdXJl
CisgICAgICAgIHRoYXQgdGhlIHNlZ21lbnRzIGl0IHByb2R1Y2VzIGFyZSB0aW1lLWJhc2VkLgor
ICAgICAgICAoV2ViQ29yZTo6c2VnbWVudEZpeGVyUHJvYmUpOiBUaGlzIGNhcHR1cmVzIHRoZSBu
ZXh0IHNlZ21lbnQgaW4gdGhlIHN0cmVhbSBhbmQgImZpeGVzIiBpdHMgYmFzZSB0aW1lIGJ5IHNl
dHRpbmcKKyAgICAgICAgaXQgdG8gdGhlIHN0YXJ0IHRpbWUuIFRoaXMgcHJldmVudCBhdWRpby92
aWRlbyBkZXN5bmNocm9uaXphdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1BpcGVs
aW5lOjpmbHVzaCk6IFJlYWxseSBpbXBsZW1lbnQgZmx1c2hpbmcgYnkgc2VuZGluZyBmbHVzaCBz
dGFydC9zdG9wIGV2ZW50cywgcmVjb25maWd1cmluZworICAgICAgICBhcHBzcmMgd2l0aCBhIG5l
dyAoc2VhbWxlc3MpIHNlZ21lbnQgKHNvIGl0IHJlY29uZmlndXJlcyB0aGUgcmVzdCBvZiB0aGUg
ZWxlbWVudHMgaW4gdGhhdCBzdHJlYW0pLCBhbmQgYXR0YWNoZWQKKyAgICAgICAgYSBzZWdtZW50
Rml4ZXJQcm9iZSB0byBmaXggdGhlIHNlZ21lbnQgZW1pdHRlZCBieSBiYXNlc3JjIChhcHBzcmMp
LiBUaGUgY3VycmVudCBwaXBlbGluZSBwb3NpdGlvbiBpcyB1c2VkIGFzCisgICAgICAgIHN0YXJ0
IHRpbWUgdXNlZCBmb3IgdGhlIG5ldyBzZWdtZW50LiBUaGlzIHByZXZlbnRzIGRpc3BsYXlpbmcg
c2FtcGxlcyBhbHJlYWR5IGRpc3BsYXllZCBiZWZvcmUgZmx1c2hpbmcsIHdoaWxlCisgICAgICAg
IGFsbG93aW5nIHRoZSBkZWNvZGVyIHRvIGRlY29kZSB0aGVtIGFzIGEgYmFzZSBmb3IgZnV0dXJl
IChkZXBlbmRlbnQpIHAtZnJhbWUgYW5kIGItZnJhbWUgc2FtcGxlcy4KKwogMjAxNy0wMi0yMCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTihyMjEyMzQ1KTogW0dUS10gQVNTRVJUKGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCku
Y29udGFpbnMoamFyKSkgZmFpbGVkIGluIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzOjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKaW5kZXggMGVkOWI1NjMzNGQ0N2Yx
MTZlZWI5NzkzNGI1ZTYzNmFlZmY4ODQxMi4uZDg3MGZjZTcyMWM3YTg1N2ExN2NhMGU2NzRlNWEx
YjQzYzIwMzViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcApAQCAtMzM1LDYgKzMz
NSwyNCBAQCB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdE1lc3NhZ2U+KEdzdE1lc3NhZ2Uq
IHB0cikKICAgICAgICAgZ3N0X21lc3NhZ2VfdW5yZWYocHRyKTsKIH0KIAordGVtcGxhdGUgPD4g
R1JlZlB0cjxHc3RRdWVyeT4gYWRvcHRHUmVmKEdzdFF1ZXJ5KiBwdHIpCit7CisgICAgcmV0dXJu
IEdSZWZQdHI8R3N0UXVlcnk+KHB0ciwgR1JlZlB0ckFkb3B0KTsKK30KKwordGVtcGxhdGUgPD4g
R3N0UXVlcnkqIHJlZkdQdHI8R3N0UXVlcnk+KEdzdFF1ZXJ5KiBwdHIpCit7CisgICAgaWYgKHB0
cikKKyAgICAgICAgZ3N0X3F1ZXJ5X3JlZihwdHIpOworICAgIHJldHVybiBwdHI7Cit9CisKK3Rl
bXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKQoreworICAg
IGlmIChwdHIpCisgICAgICAgIGdzdF9xdWVyeV91bnJlZihwdHIpOworfQorCiB0ZW1wbGF0ZSA8
PiBHUmVmUHRyPFdlYktpdFZpZGVvU2luaz4gYWRvcHRHUmVmKFdlYktpdFZpZGVvU2luayogcHRy
KQogewogICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhwdHIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1JlZlB0ckdTdHJlYW1lci5oCmluZGV4IDlmOWJiNmQxNzA0OWNhNjZjNGI5MTIxYzVlZDFl
YWNjNjVkZWI0MjkuLjQ5YjI0Yzk1MmYwNGFlZjgzYjU5YjYxYzFlNDRjMTYxOTU4ZTdkZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaApAQCAtMzksNiArMzksNyBAQCB0eXBlZGVmIHN0cnVj
dCBfR3N0VGFnTGlzdCBHc3RUYWdMaXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEV2ZW50IEdzdEV2
ZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFRvYyBHc3RUb2M7CiB0eXBlZGVmIHN0cnVjdCBfR3N0
TWVzc2FnZSBHc3RNZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFF1ZXJ5IEdzdFF1ZXJ5Owog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViU3JjIFdlYktpdFdlYlNyYzsKIApAQCAtMTA4LDYgKzEwOSwxMCBA
QCB0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0TWVzc2FnZT4gYWRvcHRHUmVmKEdzdE1lc3NhZ2UqKTsK
IHRlbXBsYXRlPD4gR3N0TWVzc2FnZSogcmVmR1B0cjxHc3RNZXNzYWdlPihHc3RNZXNzYWdlKik7
CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdE1lc3NhZ2U+KEdzdE1lc3NhZ2UqKTsKIAor
dGVtcGxhdGU8PiBHUmVmUHRyPEdzdFF1ZXJ5PiBhZG9wdEdSZWYoR3N0UXVlcnkqIHB0cik7Cit0
ZW1wbGF0ZTw+IEdzdFF1ZXJ5KiByZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKTsKK3Rl
bXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0UXVlcnk+KEdzdFF1ZXJ5KiBwdHIpOworCiB0ZW1w
bGF0ZTw+IEdSZWZQdHI8V2ViS2l0VmlkZW9TaW5rPiBhZG9wdEdSZWYoV2ViS2l0VmlkZW9TaW5r
KiBwdHIpOwogdGVtcGxhdGU8PiBXZWJLaXRWaWRlb1NpbmsqIHJlZkdQdHI8V2ViS2l0VmlkZW9T
aW5rPihXZWJLaXRWaWRlb1NpbmsqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPFdl
YktpdFZpZGVvU2luaz4oV2ViS2l0VmlkZW9TaW5rKiBwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVu
dEdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcAppbmRleCA0NDE0MDFl
NmFlNjI0NmYzNDQ2MjFkODhhNmQwMjRjODQ5MzI4ZDc1Li42NjNjODI1ZTVkZWUyOTFlNDUzYzI4
Yjc4OTU4YzE5MGY2OGI1ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgTWVk
aWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQog
ewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChtX3BsYXllclBy
aXZhdGUpCisgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBvbi10aGUtZmx5IHJlZW5xdWV1ZXMgYWZ0
ZXIgYXBwZW5kcy4gV2hlbiBzZWVraW5nLCB0aGUgc2VlayB3aWxsIGRvIGl0cyBvd24gZmx1c2gu
CisgICAgaWYgKG1fcGxheWVyUHJpdmF0ZSAmJiAhbV9wbGF5ZXJQcml2YXRlLT5tX3NlZWtpbmcp
CiAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bV9wbGF5YmFja1BpcGVsaW5lLT5mbHVzaCh0cmFj
a0lkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKaW5kZXggOTVk
ZjZkOTQ3MTY2YmE4ZjNkMzFmYjBlMGE3ZDYxMjM3Yjc2MjQ4My4uYzhlOWRjNTdmMzgwNTAyYTVl
NDhhY2UzNTQzNDQ5OGQyOGMwNmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxp
bmUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMg
UGxheWJhY2tQaXBlbGluZTo6YWRkU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VCdWYKICAgICBn
c3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUoR1NUX0FQUF9TUkMoc3RyZWFtLT5hcHBzcmMpLCBH
U1RfQVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKIAogICAgIGdzdF9hcHBfc3JjX3NldF9tYXhf
Ynl0ZXMoR1NUX0FQUF9TUkMoc3RyZWFtLT5hcHBzcmMpLCAyICogV1RGOjpNQik7Ci0gICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHN0cmVhbS0+YXBwc3JjKSwgImJsb2NrIiwgRkFMU0UsICJtaW4t
cGVyY2VudCIsIDIwLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc3RyZWFt
LT5hcHBzcmMpLCAiYmxvY2siLCBGQUxTRSwgIm1pbi1wZXJjZW50IiwgMjAsICJmb3JtYXQiLCBH
U1RfRk9STUFUX1RJTUUsIG51bGxwdHIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NLKG1fd2ViS2l0
TWVkaWFTcmMuZ2V0KCkpOwogICAgIHByaXYtPnN0cmVhbXMucHJlcGVuZChzdHJlYW0pOwpAQCAt
Mzc3LDYgKzM3NywyNiBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6Om1hcmtFbmRPZlN0cmVhbShN
ZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKQogICAgICAgICBnc3RfYXBwX3Ny
Y19lbmRfb2Zfc3RyZWFtKGFwcHNyYyk7CiB9CiAKK0dzdFBhZFByb2JlUmV0dXJuIHNlZ21lbnRG
aXhlclByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgR3N0RXZlbnQqIGV2ZW50ID0gR1NUX0VWRU5UKGluZm8tPmRhdGEpOworCisg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSAhPSBHU1RfRVZFTlRfU0VHTUVOVCkKKyAgICAg
ICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisKKyAgICBQbGF5YmFja1BpcGVsaW5lKiBwbGF5
YmFja1BpcGVsaW5lID0gc3RhdGljX2Nhc3Q8UGxheWJhY2tQaXBlbGluZSo+KHVzZXJEYXRhKTsK
KyAgICBHc3RTZWdtZW50KiBzZWdtZW50ID0gbnVsbHB0cjsKKyAgICBnc3RfZXZlbnRfcGFyc2Vf
c2VnbWVudChldmVudCwgY29uc3RfY2FzdDxjb25zdCBHc3RTZWdtZW50Kio+KCZzZWdtZW50KSk7
CisKKyAgICBHU1RfVFJBQ0UoIkZpeGVkIHNlZ21lbnQgYmFzZSB0aW1lIGZyb20gJSIgR1NUX1RJ
TUVfRk9STUFUICIgdG8gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdT
KHNlZ21lbnQtPmJhc2UpLCBHU1RfVElNRV9BUkdTKHNlZ21lbnQtPnN0YXJ0KSk7CisKKyAgICBz
ZWdtZW50LT5iYXNlID0gc2VnbWVudC0+c3RhcnQ7CisgICAgc2VnbWVudC0+ZmxhZ3MgPSBzdGF0
aWNfY2FzdDxHc3RTZWdtZW50RmxhZ3M+KDApOworCisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVf
UkVNT1ZFOworfQorCiB2b2lkIFBsYXliYWNrUGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0
cmFja0lkKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKQEAgLTM5Miw3ICs0
MTIsNjMgQEAgdm9pZCBQbGF5YmFja1BpcGVsaW5lOjpmbHVzaChBdG9taWNTdHJpbmcgdHJhY2tJ
ZCkKICAgICB9CiAKICAgICBzdHJlYW0tPmxhc3RFbnF1ZXVlZFRpbWUgPSBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCk7CisgICAgR3N0RWxlbWVudCogYXBwc3JjID0gc3RyZWFtLT5hcHBzcmM7CiAg
ICAgR1NUX09CSkVDVF9VTkxPQ0sobV93ZWJLaXRNZWRpYVNyYy5nZXQoKSk7CisKKyAgICBpZiAo
IWFwcHNyYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2ludDY0IHBvc2l0aW9uID0gR1NUX0NM
T0NLX1RJTUVfTk9ORTsKKyAgICBHUmVmUHRyPEdzdFF1ZXJ5PiBxdWVyeSA9IGFkb3B0R1JlZihn
c3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElNRSkpOworICAgIGlmIChnc3RfZWxl
bWVudF9xdWVyeShwaXBlbGluZSgpLCBxdWVyeS5nZXQoKSkpCisgICAgICAgIGdzdF9xdWVyeV9w
YXJzZV9wb3NpdGlvbihxdWVyeS5nZXQoKSwgMCwgJnBvc2l0aW9uKTsKKworICAgIEdTVF9UUkFD
RSgiUG9zaXRpb246ICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikp
OworCisgICAgZG91YmxlIHJhdGU7CisgICAgR3N0Rm9ybWF0IGZvcm1hdDsKKyAgICBnaW50NjQg
c3RhcnQgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgIGdpbnQ2NCBzdG9wID0gR1NUX0NMT0NL
X1RJTUVfTk9ORTsKKworICAgIHF1ZXJ5ID0gYWRvcHRHUmVmKGdzdF9xdWVyeV9uZXdfc2VnbWVu
dChHU1RfRk9STUFUX1RJTUUpKTsKKyAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnkocGlwZWxpbmUo
KSwgcXVlcnkuZ2V0KCkpKQorICAgICAgICBnc3RfcXVlcnlfcGFyc2Vfc2VnbWVudChxdWVyeS5n
ZXQoKSwgJnJhdGUsICZmb3JtYXQsICZzdGFydCwgJnN0b3ApOworCisgICAgR1NUX1RSQUNFKCJz
ZWdtZW50OiBbJSIgR1NUX1RJTUVfRk9STUFUICIsICUiIEdTVF9USU1FX0ZPUk1BVCAiXSwgcmF0
ZTogJWYiLAorICAgICAgICBHU1RfVElNRV9BUkdTKHN0YXJ0KSwgR1NUX1RJTUVfQVJHUyhzdG9w
KSwgcmF0ZSk7CisKKyAgICBpZiAoIWdzdF9lbGVtZW50X3NlbmRfZXZlbnQoR1NUX0VMRU1FTlQo
YXBwc3JjKSwgZ3N0X2V2ZW50X25ld19mbHVzaF9zdGFydCgpKSkgeworICAgICAgICBHU1RfV0FS
TklORygiRmFpbGVkIHRvIHNlbmQgZmx1c2gtc3RhcnQgZXZlbnQgZm9yIHRyYWNrSWQ9JXMiLCB0
cmFja0lkLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFnc3RfZWxlbWVudF9zZW5kX2V2ZW50KEdTVF9FTEVNRU5UKGFwcHNyYyksIGdz
dF9ldmVudF9uZXdfZmx1c2hfc3RvcChmYWxzZSkpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJG
YWlsZWQgdG8gc2VuZCBmbHVzaC1zdG9wIGV2ZW50IGZvciB0cmFja0lkPSVzIiwgdHJhY2tJZC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChzdGF0aWNfY2FzdDxndWludDY0Pihwb3NpdGlvbikgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSB8
fCBzdGF0aWNfY2FzdDxndWludDY0PihzdGFydCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFNlZ21lbnQsIGRlY2x0eXBl
KCZnc3Rfc2VnbWVudF9mcmVlKT4gc2VnbWVudChnc3Rfc2VnbWVudF9uZXcoKSwgJmdzdF9zZWdt
ZW50X2ZyZWUpOworICAgIGdzdF9zZWdtZW50X2luaXQoc2VnbWVudC5nZXQoKSwgR1NUX0ZPUk1B
VF9USU1FKTsKKyAgICBnc3Rfc2VnbWVudF9kb19zZWVrKHNlZ21lbnQuZ2V0KCksIHJhdGUsIEdT
VF9GT1JNQVRfVElNRSwgR1NUX1NFRUtfRkxBR19OT05FLAorICAgICAgICBHU1RfU0VFS19UWVBF
X1NFVCwgcG9zaXRpb24sIEdTVF9TRUVLX1RZUEVfU0VULCBzdG9wLCBudWxscHRyKTsKKworICAg
IEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXBw
c3JjLCAic3JjIik7CisgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IHNpbmtQYWQgPyBnc3Rf
cGFkX2dldF9wZWVyKHNpbmtQYWQuZ2V0KCkpIDogbnVsbHB0cjsKKyAgICBpZiAoc3JjUGFkKQor
ICAgICAgICBnc3RfcGFkX2FkZF9wcm9iZShzcmNQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQ
RV9FVkVOVF9ET1dOU1RSRUFNLCBzZWdtZW50Rml4ZXJQcm9iZSwgdGhpcywgbnVsbHB0cik7CisK
KyAgICBHU1RfVFJBQ0UoIlNlbmRpbmcgbmV3IHNlYW1sZXNzIHNlZ21lbnQ6IFslIiBHU1RfVElN
RV9GT1JNQVQgIiwgJSIgR1NUX1RJTUVfRk9STUFUICJdLCByYXRlOiAlZiIsCisgICAgICAgIEdT
VF9USU1FX0FSR1Moc2VnbWVudC0+c3RhcnQpLCBHU1RfVElNRV9BUkdTKHNlZ21lbnQtPnN0b3Ap
LCBzZWdtZW50LT5yYXRlKTsKKworICAgIGlmICghZ3N0X2Jhc2Vfc3JjX25ld19zZWFtbGVzc19z
ZWdtZW50KEdTVF9CQVNFX1NSQyhhcHBzcmMpLCBzZWdtZW50LT5zdGFydCwgc2VnbWVudC0+c3Rv
cCwgc2VnbWVudC0+c3RhcnQpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gc2Vu
ZCBzZWFtbGVzcyBzZWdtZW50IGV2ZW50IGZvciB0cmFja0lkPSVzIiwgdHJhY2tJZC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdTVF9ERUJV
RygidHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNh
bXBsZT4gbWVkaWFTYW1wbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303547</attachid>
            <date>2017-03-06 13:24:00 -0800</date>
            <delta_ts>2017-03-07 10:23:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169202-20170306212358.patch</filename>
            <type>text/plain</type>
            <size>11057</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM2NjI0MGM2N2Q0YjRh
Mzg3NjBjNTM1Y2Y2MmRhMzA4MDYwNTU1MC4uMjhiNjVhZGZiMWUyNzYyYzY4YTQ4MDg5MDI0ZDUx
NmNlODUxNDdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAzLTA2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBBY3R1YWxseSBpbXBsZW1lbnQgZmx1c2goKSBvbiBwbGF5YmFjayBwaXBl
bGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHA6IEFkZGVkIEdS
ZWZQdHIgc3VwcG9ydCBmb3IgR3N0UXVlcnkuCisgICAgICAgIChXVEY6OmFkb3B0R1JlZik6Cisg
ICAgICAgIChXVEY6OnJlZkdQdHI8R3N0UXVlcnk+KToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRy
PEdzdFF1ZXJ5Pik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dVbmlxdWVQdHJHU3RyZWFtZXIuaDogQWRkZWQgR1VuaXF1ZVB0ciBzdXBwb3J0IGZvciBH
c3RTZWdtZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmZsdXNoKTogT25seSBhY3R1YWxseSBmbHVzaCBpbiB0
aGUgbm9uLXNlZWsgY2FzZS4gRm9yIHRoZSBzZWVrIGNhc2UsCisgICAgICAgIEdTdHJlYW1lciBz
ZWVrIHdpbGwgYWxyZWFkeSBkbyB0aGUgZmx1c2guCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXliYWNrUGlwZWxpbmU6OmFkZFNvdXJjZUJ1ZmZlcik6IENvbmZpZ3VyZSBhcHBzcmMgdG8g
YmUgdGltZS1iYXNlZCBpbnN0ZWFkIG9mIGJ5dGVzLWJhc2VkIHRvIGVuc3VyZQorICAgICAgICB0
aGF0IHRoZSBzZWdtZW50cyBpdCBwcm9kdWNlcyBhcmUgdGltZS1iYXNlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnNlZ21lbnRGaXhlclByb2JlKTogVGhpcyBjYXB0dXJlcyB0aGUgbmV4dCBzZWdtZW50
IGluIHRoZSBzdHJlYW0gYW5kICJmaXhlcyIgaXRzIGJhc2UgdGltZSBieSBzZXR0aW5nCisgICAg
ICAgIGl0IHRvIHRoZSBzdGFydCB0aW1lLiBUaGlzIHByZXZlbnQgYXVkaW8vdmlkZW8gZGVzeW5j
aHJvbml6YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6Zmx1c2gp
OiBSZWFsbHkgaW1wbGVtZW50IGZsdXNoaW5nIGJ5IHNlbmRpbmcgZmx1c2ggc3RhcnQvc3RvcCBl
dmVudHMsIHJlY29uZmlndXJpbmcKKyAgICAgICAgYXBwc3JjIHdpdGggYSBuZXcgKHNlYW1sZXNz
KSBzZWdtZW50IChzbyBpdCByZWNvbmZpZ3VyZXMgdGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIGlu
IHRoYXQgc3RyZWFtKSwgYW5kIGF0dGFjaGVkCisgICAgICAgIGEgc2VnbWVudEZpeGVyUHJvYmUg
dG8gZml4IHRoZSBzZWdtZW50IGVtaXR0ZWQgYnkgYmFzZXNyYyAoYXBwc3JjKS4gVGhlIGN1cnJl
bnQgcGlwZWxpbmUgcG9zaXRpb24gaXMgdXNlZCBhcworICAgICAgICBzdGFydCB0aW1lIHVzZWQg
Zm9yIHRoZSBuZXcgc2VnbWVudC4gVGhpcyBwcmV2ZW50cyBkaXNwbGF5aW5nIHNhbXBsZXMgYWxy
ZWFkeSBkaXNwbGF5ZWQgYmVmb3JlIGZsdXNoaW5nLCB3aGlsZQorICAgICAgICBhbGxvd2luZyB0
aGUgZGVjb2RlciB0byBkZWNvZGUgdGhlbSBhcyBhIGJhc2UgZm9yIGZ1dHVyZSAoZGVwZW5kZW50
KSBwLWZyYW1lIGFuZCBiLWZyYW1lIHNhbXBsZXMuCisKIDIwMTctMDItMjAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIx
MjM0NSk6IFtHVEtdIEFTU0VSVChjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpLmNvbnRhaW5zKGph
cikpIGZhaWxlZCBpbiBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlczo1NApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmluZGV4IDBlZDliNTYzMzRkNDdmMTE2ZWViOTc5MzRi
NWU2MzZhZWZmODg0MTIuLmQ4NzBmY2U3MjFjN2E4NTdhMTdjYTBlNjc0ZTVhMWI0M2MyMDM1YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
UmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTMzNSw2ICszMzUsMjQgQEAgdGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RNZXNzYWdlPihHc3RNZXNzYWdlKiBwdHIpCiAgICAg
ICAgIGdzdF9tZXNzYWdlX3VucmVmKHB0cik7CiB9CiAKK3RlbXBsYXRlIDw+IEdSZWZQdHI8R3N0
UXVlcnk+IGFkb3B0R1JlZihHc3RRdWVyeSogcHRyKQoreworICAgIHJldHVybiBHUmVmUHRyPEdz
dFF1ZXJ5PihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlIDw+IEdzdFF1ZXJ5KiBy
ZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAg
IGdzdF9xdWVyeV9yZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmR1B0cjxHc3RRdWVyeT4oR3N0UXVlcnkqIHB0cikKK3sKKyAgICBpZiAocHRyKQor
ICAgICAgICBnc3RfcXVlcnlfdW5yZWYocHRyKTsKK30KKwogdGVtcGxhdGUgPD4gR1JlZlB0cjxX
ZWJLaXRWaWRlb1Npbms+IGFkb3B0R1JlZihXZWJLaXRWaWRlb1NpbmsqIHB0cikKIHsKICAgICBB
U1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuaAppbmRleCA5ZjliYjZkMTcwNDljYTY2YzRiOTEyMWM1ZWQxZWFjYzY1ZGViNDI5
Li40OWIyNGM5NTJmMDRhZWY4M2I1OWI2MWMxZTQ0YzE2MTk1OGU3ZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFRhZ0xp
c3QgR3N0VGFnTGlzdDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVudCBHc3RFdmVudDsKIHR5cGVk
ZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0
TWVzc2FnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RRdWVyeSBHc3RRdWVyeTsKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwogdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlNyYyBXZWJLaXRXZWJTcmM7CiAKQEAgLTEwOCw2ICsxMDksMTAgQEAgdGVtcGxhdGU8
PiBHUmVmUHRyPEdzdE1lc3NhZ2U+IGFkb3B0R1JlZihHc3RNZXNzYWdlKik7CiB0ZW1wbGF0ZTw+
IEdzdE1lc3NhZ2UqIHJlZkdQdHI8R3N0TWVzc2FnZT4oR3N0TWVzc2FnZSopOwogdGVtcGxhdGU8
PiB2b2lkIGRlcmVmR1B0cjxHc3RNZXNzYWdlPihHc3RNZXNzYWdlKik7CiAKK3RlbXBsYXRlPD4g
R1JlZlB0cjxHc3RRdWVyeT4gYWRvcHRHUmVmKEdzdFF1ZXJ5KiBwdHIpOwordGVtcGxhdGU8PiBH
c3RRdWVyeSogcmVmR1B0cjxHc3RRdWVyeT4oR3N0UXVlcnkqIHB0cik7Cit0ZW1wbGF0ZTw+IHZv
aWQgZGVyZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKTsKKwogdGVtcGxhdGU8PiBHUmVm
UHRyPFdlYktpdFZpZGVvU2luaz4gYWRvcHRHUmVmKFdlYktpdFZpZGVvU2luayogcHRyKTsKIHRl
bXBsYXRlPD4gV2ViS2l0VmlkZW9TaW5rKiByZWZHUHRyPFdlYktpdFZpZGVvU2luaz4oV2ViS2l0
VmlkZW9TaW5rKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxXZWJLaXRWaWRlb1Np
bms+KFdlYktpdFZpZGVvU2luayogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5o
CmluZGV4IDY5Mzk5MDg4NDRkNzdmZGIyZDE5YTQ5NjY4ODM1ZWJmNjkyZWI2MmMuLjIyOTBhYmY4
MzIxN2UzMTVhNjg0NDk4Mzc5NDgyMTI3MDBkYWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQdHJH
U3RyZWFtZXIuaApAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBHVW5pcXVlUHRyR1N0cmVhbWVy
X2gKICNpZiBVU0UoR1NUUkVBTUVSKQogCisjaW5jbHVkZSA8Z3N0L2dzdHNlZ21lbnQuaD4KICNp
bmNsdWRlIDxnc3QvZ3N0c3RydWN0dXJlLmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvaW5zdGFs
bC1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjksNiAr
MzAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoR3N0U3Ry
dWN0dXJlLCBnc3Rfc3RydWN0dXJlX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQsIGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9mcmVlKQor
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoR3N0U2VnbWVudCwgZ3N0X3NlZ21lbnRfZnJlZSkKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0UuY3BwCmluZGV4IDQ0MTQwMWU2YWU2MjQ2ZjM0NDYyMWQ4OGE2ZDAyNGM4NDkzMjhkNzUu
LjY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0x
NzgsNyArMTc4LDggQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2go
QXRvbWljU3RyaW5nIHRyYWNrSWQpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKG1fcGxheWVyUHJpdmF0ZSkKKyAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIG9u
LXRoZS1mbHkgcmVlbnF1ZXVlcyBhZnRlciBhcHBlbmRzLiBXaGVuIHNlZWtpbmcsIHRoZSBzZWVr
IHdpbGwgZG8gaXRzIG93biBmbHVzaC4KKyAgICBpZiAobV9wbGF5ZXJQcml2YXRlICYmICFtX3Bs
YXllclByaXZhdGUtPm1fc2Vla2luZykKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXli
YWNrUGlwZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFj
a1BpcGVsaW5lLmNwcAppbmRleCA5NWRmNmQ5NDcxNjZiYThmM2QzMWZiMGUwYTdkNjEyMzdiNzYy
NDgzLi41NzI4MjRiMjIxYjJkOGMzMDI4NGZiODU5ZWQwZjZhNjMxMzkwOWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNr
UGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlh
U2FtcGxlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR1Vu
aXF1ZVB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAi
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmgiCkBAIC0xMzMsNyArMTM0LDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpB
ZGRTdGF0dXMgUGxheWJhY2tQaXBlbGluZTo6YWRkU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VC
dWYKICAgICBnc3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUoR1NUX0FQUF9TUkMoc3RyZWFtLT5h
cHBzcmMpLCBHU1RfQVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKIAogICAgIGdzdF9hcHBfc3Jj
X3NldF9tYXhfYnl0ZXMoR1NUX0FQUF9TUkMoc3RyZWFtLT5hcHBzcmMpLCAyICogV1RGOjpNQik7
Ci0gICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHN0cmVhbS0+YXBwc3JjKSwgImJsb2NrIiwgRkFM
U0UsICJtaW4tcGVyY2VudCIsIDIwLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9zZXQoR19PQkpF
Q1Qoc3RyZWFtLT5hcHBzcmMpLCAiYmxvY2siLCBGQUxTRSwgIm1pbi1wZXJjZW50IiwgMjAsICJm
b3JtYXQiLCBHU1RfRk9STUFUX1RJTUUsIG51bGxwdHIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NL
KG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCkpOwogICAgIHByaXYtPnN0cmVhbXMucHJlcGVuZChzdHJl
YW0pOwpAQCAtMzc3LDYgKzM3OCwyNSBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6Om1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKQogICAgICAgICBn
c3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKGFwcHNyYyk7CiB9CiAKK0dzdFBhZFByb2JlUmV0dXJu
IHNlZ21lbnRGaXhlclByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50
ZXIpCit7CisgICAgR3N0RXZlbnQqIGV2ZW50ID0gR1NUX0VWRU5UKGluZm8tPmRhdGEpOworCisg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSAhPSBHU1RfRVZFTlRfU0VHTUVOVCkKKyAgICAg
ICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisKKyAgICBHc3RTZWdtZW50KiBzZWdtZW50ID0g
bnVsbHB0cjsKKyAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudChldmVudCwgY29uc3RfY2FzdDxj
b25zdCBHc3RTZWdtZW50Kio+KCZzZWdtZW50KSk7CisKKyAgICBHU1RfVFJBQ0UoIkZpeGVkIHNl
Z21lbnQgYmFzZSB0aW1lIGZyb20gJSIgR1NUX1RJTUVfRk9STUFUICIgdG8gJSIgR1NUX1RJTUVf
Rk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdTKHNlZ21lbnQtPmJhc2UpLCBHU1RfVElNRV9B
UkdTKHNlZ21lbnQtPnN0YXJ0KSk7CisKKyAgICBzZWdtZW50LT5iYXNlID0gc2VnbWVudC0+c3Rh
cnQ7CisgICAgc2VnbWVudC0+ZmxhZ3MgPSBzdGF0aWNfY2FzdDxHc3RTZWdtZW50RmxhZ3M+KDAp
OworCisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfUkVNT1ZFOworfQorCiB2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogewogICAgIEFTU0VSVChXVEY6
OmlzTWFpblRocmVhZCgpKTsKQEAgLTM5Miw3ICs0MTIsNjMgQEAgdm9pZCBQbGF5YmFja1BpcGVs
aW5lOjpmbHVzaChBdG9taWNTdHJpbmcgdHJhY2tJZCkKICAgICB9CiAKICAgICBzdHJlYW0tPmxh
c3RFbnF1ZXVlZFRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CisgICAgR3N0RWxlbWVu
dCogYXBwc3JjID0gc3RyZWFtLT5hcHBzcmM7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0sobV93ZWJL
aXRNZWRpYVNyYy5nZXQoKSk7CisKKyAgICBpZiAoIWFwcHNyYykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ2ludDY0IHBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICBHUmVmUHRy
PEdzdFF1ZXJ5PiBxdWVyeSA9IGFkb3B0R1JlZihnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9G
T1JNQVRfVElNRSkpOworICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeShwaXBlbGluZSgpLCBxdWVy
eS5nZXQoKSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeS5nZXQoKSwg
MCwgJnBvc2l0aW9uKTsKKworICAgIEdTVF9UUkFDRSgiUG9zaXRpb246ICUiIEdTVF9USU1FX0ZP
Uk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOworCisgICAgZG91YmxlIHJhdGU7CisgICAg
R3N0Rm9ybWF0IGZvcm1hdDsKKyAgICBnaW50NjQgc3RhcnQgPSBHU1RfQ0xPQ0tfVElNRV9OT05F
OworICAgIGdpbnQ2NCBzdG9wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICAgIHF1ZXJ5ID0g
YWRvcHRHUmVmKGdzdF9xdWVyeV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJTUUpKTsKKyAgICBp
ZiAoZ3N0X2VsZW1lbnRfcXVlcnkocGlwZWxpbmUoKSwgcXVlcnkuZ2V0KCkpKQorICAgICAgICBn
c3RfcXVlcnlfcGFyc2Vfc2VnbWVudChxdWVyeS5nZXQoKSwgJnJhdGUsICZmb3JtYXQsICZzdGFy
dCwgJnN0b3ApOworCisgICAgR1NUX1RSQUNFKCJzZWdtZW50OiBbJSIgR1NUX1RJTUVfRk9STUFU
ICIsICUiIEdTVF9USU1FX0ZPUk1BVCAiXSwgcmF0ZTogJWYiLAorICAgICAgICBHU1RfVElNRV9B
UkdTKHN0YXJ0KSwgR1NUX1RJTUVfQVJHUyhzdG9wKSwgcmF0ZSk7CisKKyAgICBpZiAoIWdzdF9l
bGVtZW50X3NlbmRfZXZlbnQoR1NUX0VMRU1FTlQoYXBwc3JjKSwgZ3N0X2V2ZW50X25ld19mbHVz
aF9zdGFydCgpKSkgeworICAgICAgICBHU1RfV0FSTklORygiRmFpbGVkIHRvIHNlbmQgZmx1c2gt
c3RhcnQgZXZlbnQgZm9yIHRyYWNrSWQ9JXMiLCB0cmFja0lkLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFnc3RfZWxlbWVudF9zZW5k
X2V2ZW50KEdTVF9FTEVNRU5UKGFwcHNyYyksIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcChmYWxz
ZSkpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gc2VuZCBmbHVzaC1zdG9wIGV2
ZW50IGZvciB0cmFja0lkPSVzIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdGF0aWNfY2FzdDxndWludDY0Pihwb3Np
dGlvbikgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSB8fCBzdGF0aWNfY2FzdDxndWludDY0PihzdGFy
dCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1VuaXF1
ZVB0cjxHc3RTZWdtZW50PiBzZWdtZW50KGdzdF9zZWdtZW50X25ldygpKTsKKyAgICBnc3Rfc2Vn
bWVudF9pbml0KHNlZ21lbnQuZ2V0KCksIEdTVF9GT1JNQVRfVElNRSk7CisgICAgZ3N0X3NlZ21l
bnRfZG9fc2VlayhzZWdtZW50LmdldCgpLCByYXRlLCBHU1RfRk9STUFUX1RJTUUsIEdTVF9TRUVL
X0ZMQUdfTk9ORSwKKyAgICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIHBvc2l0aW9uLCBHU1RfU0VF
S19UWVBFX1NFVCwgc3RvcCwgbnVsbHB0cik7CisKKyAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1Bh
ZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGFwcHNyYywgInNyYyIpOworICAgIEdSZWZQ
dHI8R3N0UGFkPiBzcmNQYWQgPSBzaW5rUGFkID8gZ3N0X3BhZF9nZXRfcGVlcihzaW5rUGFkLmdl
dCgpKSA6IG51bGxwdHI7CisgICAgaWYgKHNyY1BhZCkKKyAgICAgICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwgc2Vn
bWVudEZpeGVyUHJvYmUsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgR1NUX1RSQUNFKCJTZW5k
aW5nIG5ldyBzZWFtbGVzcyBzZWdtZW50OiBbJSIgR1NUX1RJTUVfRk9STUFUICIsICUiIEdTVF9U
SU1FX0ZPUk1BVCAiXSwgcmF0ZTogJWYiLAorICAgICAgICBHU1RfVElNRV9BUkdTKHNlZ21lbnQt
PnN0YXJ0KSwgR1NUX1RJTUVfQVJHUyhzZWdtZW50LT5zdG9wKSwgc2VnbWVudC0+cmF0ZSk7CisK
KyAgICBpZiAoIWdzdF9iYXNlX3NyY19uZXdfc2VhbWxlc3Nfc2VnbWVudChHU1RfQkFTRV9TUkMo
YXBwc3JjKSwgc2VnbWVudC0+c3RhcnQsIHNlZ21lbnQtPnN0b3AsIHNlZ21lbnQtPnN0YXJ0KSkg
eworICAgICAgICBHU1RfV0FSTklORygiRmFpbGVkIHRvIHNlbmQgc2VhbWxlc3Mgc2VnbWVudCBl
dmVudCBmb3IgdHJhY2tJZD0lcyIsIHRyYWNrSWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfREVCVUcoInRyYWNrSWQ9JXMgZmx1c2hl
ZCIsIHRyYWNrSWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tQ
aXBlbGluZTo6ZW5xdWV1ZVNhbXBsZShSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303672</attachid>
            <date>2017-03-07 10:23:54 -0800</date>
            <delta_ts>2017-03-08 04:49:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169202-20170307182353.patch</filename>
            <type>text/plain</type>
            <size>11191</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM2NjI0MGM2N2Q0YjRh
Mzg3NjBjNTM1Y2Y2MmRhMzA4MDYwNTU1MC4uZjc5YjNmNDhmZDEzM2IxMTQ2NzUyYmY5YWU4YjAx
N2RhMGE3NjBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAzLTA2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBBY3R1YWxseSBpbXBsZW1lbnQgZmx1c2goKSBvbiBwbGF5YmFjayBwaXBl
bGluZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHA6IEFkZGVkIEdS
ZWZQdHIgc3VwcG9ydCBmb3IgR3N0UXVlcnkuCisgICAgICAgIChXVEY6OmFkb3B0R1JlZik6Cisg
ICAgICAgIChXVEY6OnJlZkdQdHI8R3N0UXVlcnk+KToKKyAgICAgICAgKFdURjo6ZGVyZWZHUHRy
PEdzdFF1ZXJ5Pik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dVbmlxdWVQdHJHU3RyZWFtZXIuaDogQWRkZWQgR1VuaXF1ZVB0ciBzdXBwb3J0IGZvciBH
c3RTZWdtZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmZsdXNoKTogT25seSBhY3R1YWxseSBmbHVzaCBpbiB0
aGUgbm9uLXNlZWsgY2FzZS4gRm9yIHRoZSBzZWVrIGNhc2UsCisgICAgICAgIEdTdHJlYW1lciBz
ZWVrIHdpbGwgYWxyZWFkeSBkbyB0aGUgZmx1c2guCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFja1BpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXliYWNrUGlwZWxpbmU6OmFkZFNvdXJjZUJ1ZmZlcik6IENvbmZpZ3VyZSBhcHBzcmMgdG8g
YmUgdGltZS1iYXNlZCBpbnN0ZWFkIG9mIGJ5dGVzLWJhc2VkIHRvIGVuc3VyZQorICAgICAgICB0
aGF0IHRoZSBzZWdtZW50cyBpdCBwcm9kdWNlcyBhcmUgdGltZS1iYXNlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnNlZ21lbnRGaXhlclByb2JlKTogVGhpcyBjYXB0dXJlcyB0aGUgbmV4dCBzZWdtZW50
IGluIHRoZSBzdHJlYW0gYW5kICJmaXhlcyIgaXRzIGJhc2UgdGltZSBieSBzZXR0aW5nCisgICAg
ICAgIGl0IHRvIHRoZSBzdGFydCB0aW1lLiBUaGlzIHByZXZlbnQgYXVkaW8vdmlkZW8gZGVzeW5j
aHJvbml6YXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tQaXBlbGluZTo6Zmx1c2gp
OiBSZWFsbHkgaW1wbGVtZW50IGZsdXNoaW5nIGJ5IHNlbmRpbmcgZmx1c2ggc3RhcnQvc3RvcCBl
dmVudHMsIHJlY29uZmlndXJpbmcKKyAgICAgICAgYXBwc3JjIHdpdGggYSBuZXcgKHNlYW1sZXNz
KSBzZWdtZW50IChzbyBpdCByZWNvbmZpZ3VyZXMgdGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIGlu
IHRoYXQgc3RyZWFtKSwgYW5kIGF0dGFjaGVkCisgICAgICAgIGEgc2VnbWVudEZpeGVyUHJvYmUg
dG8gZml4IHRoZSBzZWdtZW50IGVtaXR0ZWQgYnkgYmFzZXNyYyAoYXBwc3JjKS4gVGhlIGN1cnJl
bnQgcGlwZWxpbmUgcG9zaXRpb24gaXMgdXNlZCBhcworICAgICAgICBzdGFydCB0aW1lIHVzZWQg
Zm9yIHRoZSBuZXcgc2VnbWVudC4gVGhpcyBwcmV2ZW50cyBkaXNwbGF5aW5nIHNhbXBsZXMgYWxy
ZWFkeSBkaXNwbGF5ZWQgYmVmb3JlIGZsdXNoaW5nLCB3aGlsZQorICAgICAgICBhbGxvd2luZyB0
aGUgZGVjb2RlciB0byBkZWNvZGUgdGhlbSBhcyBhIGJhc2UgZm9yIGZ1dHVyZSAoZGVwZW5kZW50
KSBwLWZyYW1lIGFuZCBiLWZyYW1lIHNhbXBsZXMuCisKIDIwMTctMDItMjAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIx
MjM0NSk6IFtHVEtdIEFTU0VSVChjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpLmNvbnRhaW5zKGph
cikpIGZhaWxlZCBpbiBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlczo1NApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQ
dHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmluZGV4IDBlZDliNTYzMzRkNDdmMTE2ZWViOTc5MzRi
NWU2MzZhZWZmODg0MTIuLmQ4NzBmY2U3MjFjN2E4NTdhMTdjYTBlNjc0ZTVhMWI0M2MyMDM1YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
UmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKQEAgLTMzNSw2ICszMzUsMjQgQEAgdGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RNZXNzYWdlPihHc3RNZXNzYWdlKiBwdHIpCiAgICAg
ICAgIGdzdF9tZXNzYWdlX3VucmVmKHB0cik7CiB9CiAKK3RlbXBsYXRlIDw+IEdSZWZQdHI8R3N0
UXVlcnk+IGFkb3B0R1JlZihHc3RRdWVyeSogcHRyKQoreworICAgIHJldHVybiBHUmVmUHRyPEdz
dFF1ZXJ5PihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlIDw+IEdzdFF1ZXJ5KiBy
ZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAg
IGdzdF9xdWVyeV9yZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmR1B0cjxHc3RRdWVyeT4oR3N0UXVlcnkqIHB0cikKK3sKKyAgICBpZiAocHRyKQor
ICAgICAgICBnc3RfcXVlcnlfdW5yZWYocHRyKTsKK30KKwogdGVtcGxhdGUgPD4gR1JlZlB0cjxX
ZWJLaXRWaWRlb1Npbms+IGFkb3B0R1JlZihXZWJLaXRWaWRlb1NpbmsqIHB0cikKIHsKICAgICBB
U1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuaAppbmRleCA5ZjliYjZkMTcwNDljYTY2YzRiOTEyMWM1ZWQxZWFjYzY1ZGViNDI5
Li40OWIyNGM5NTJmMDRhZWY4M2I1OWI2MWMxZTQ0YzE2MTk1OGU3ZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFRhZ0xp
c3QgR3N0VGFnTGlzdDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RFdmVudCBHc3RFdmVudDsKIHR5cGVk
ZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0
TWVzc2FnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RRdWVyeSBHc3RRdWVyeTsKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwogdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlNyYyBXZWJLaXRXZWJTcmM7CiAKQEAgLTEwOCw2ICsxMDksMTAgQEAgdGVtcGxhdGU8
PiBHUmVmUHRyPEdzdE1lc3NhZ2U+IGFkb3B0R1JlZihHc3RNZXNzYWdlKik7CiB0ZW1wbGF0ZTw+
IEdzdE1lc3NhZ2UqIHJlZkdQdHI8R3N0TWVzc2FnZT4oR3N0TWVzc2FnZSopOwogdGVtcGxhdGU8
PiB2b2lkIGRlcmVmR1B0cjxHc3RNZXNzYWdlPihHc3RNZXNzYWdlKik7CiAKK3RlbXBsYXRlPD4g
R1JlZlB0cjxHc3RRdWVyeT4gYWRvcHRHUmVmKEdzdFF1ZXJ5KiBwdHIpOwordGVtcGxhdGU8PiBH
c3RRdWVyeSogcmVmR1B0cjxHc3RRdWVyeT4oR3N0UXVlcnkqIHB0cik7Cit0ZW1wbGF0ZTw+IHZv
aWQgZGVyZWZHUHRyPEdzdFF1ZXJ5PihHc3RRdWVyeSogcHRyKTsKKwogdGVtcGxhdGU8PiBHUmVm
UHRyPFdlYktpdFZpZGVvU2luaz4gYWRvcHRHUmVmKFdlYktpdFZpZGVvU2luayogcHRyKTsKIHRl
bXBsYXRlPD4gV2ViS2l0VmlkZW9TaW5rKiByZWZHUHRyPFdlYktpdFZpZGVvU2luaz4oV2ViS2l0
VmlkZW9TaW5rKiBwdHIpOwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxXZWJLaXRWaWRlb1Np
bms+KFdlYktpdFZpZGVvU2luayogcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5o
CmluZGV4IDY5Mzk5MDg4NDRkNzdmZGIyZDE5YTQ5NjY4ODM1ZWJmNjkyZWI2MmMuLjIyOTBhYmY4
MzIxN2UzMTVhNjg0NDk4Mzc5NDgyMTI3MDBkYWY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5pcXVlUHRyR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQdHJH
U3RyZWFtZXIuaApAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBHVW5pcXVlUHRyR1N0cmVhbWVy
X2gKICNpZiBVU0UoR1NUUkVBTUVSKQogCisjaW5jbHVkZSA8Z3N0L2dzdHNlZ21lbnQuaD4KICNp
bmNsdWRlIDxnc3QvZ3N0c3RydWN0dXJlLmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvaW5zdGFs
bC1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMjksNiAr
MzAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoR3N0U3Ry
dWN0dXJlLCBnc3Rfc3RydWN0dXJlX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVMRVRFUihHc3RJ
bnN0YWxsUGx1Z2luc0NvbnRleHQsIGdzdF9pbnN0YWxsX3BsdWdpbnNfY29udGV4dF9mcmVlKQor
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoR3N0U2VnbWVudCwgZ3N0X3NlZ21lbnRfZnJlZSkKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXJNU0UuY3BwCmluZGV4IDQ0MTQwMWU2YWU2MjQ2ZjM0NDYyMWQ4OGE2ZDAyNGM4NDkzMjhkNzUu
LjY2M2M4MjVlNWRlZTI5MWU0NTNjMjhiNzg5NThjMTkwZjY4YjVmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VD
bGllbnRHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0x
NzgsNyArMTc4LDggQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6Zmx1c2go
QXRvbWljU3RyaW5nIHRyYWNrSWQpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKG1fcGxheWVyUHJpdmF0ZSkKKyAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIG9u
LXRoZS1mbHkgcmVlbnF1ZXVlcyBhZnRlciBhcHBlbmRzLiBXaGVuIHNlZWtpbmcsIHRoZSBzZWVr
IHdpbGwgZG8gaXRzIG93biBmbHVzaC4KKyAgICBpZiAobV9wbGF5ZXJQcml2YXRlICYmICFtX3Bs
YXllclByaXZhdGUtPm1fc2Vla2luZykKICAgICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tX3BsYXli
YWNrUGlwZWxpbmUtPmZsdXNoKHRyYWNrSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNrUGlwZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9QbGF5YmFj
a1BpcGVsaW5lLmNwcAppbmRleCA5NWRmNmQ5NDcxNjZiYThmM2QzMWZiMGUwYTdkNjEyMzdiNzYy
NDgzLi5iYzkzY2UwMTgyMWE5NGViZWUzYmI0OTNlNmVlODNhNjY2YmVkYjExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1BsYXliYWNr
UGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvUGxheWJhY2tQaXBlbGluZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlh
U2FtcGxlLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR1Vu
aXF1ZVB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAi
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmgiCkBAIC0xMzMsNyArMTM0LDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpB
ZGRTdGF0dXMgUGxheWJhY2tQaXBlbGluZTo6YWRkU291cmNlQnVmZmVyKFJlZlB0cjxTb3VyY2VC
dWYKICAgICBnc3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUoR1NUX0FQUF9TUkMoc3RyZWFtLT5h
cHBzcmMpLCBHU1RfQVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKIAogICAgIGdzdF9hcHBfc3Jj
X3NldF9tYXhfYnl0ZXMoR1NUX0FQUF9TUkMoc3RyZWFtLT5hcHBzcmMpLCAyICogV1RGOjpNQik7
Ci0gICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHN0cmVhbS0+YXBwc3JjKSwgImJsb2NrIiwgRkFM
U0UsICJtaW4tcGVyY2VudCIsIDIwLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9zZXQoR19PQkpF
Q1Qoc3RyZWFtLT5hcHBzcmMpLCAiYmxvY2siLCBGQUxTRSwgIm1pbi1wZXJjZW50IiwgMjAsICJm
b3JtYXQiLCBHU1RfRk9STUFUX1RJTUUsIG51bGxwdHIpOwogCiAgICAgR1NUX09CSkVDVF9MT0NL
KG1fd2ViS2l0TWVkaWFTcmMuZ2V0KCkpOwogICAgIHByaXYtPnN0cmVhbXMucHJlcGVuZChzdHJl
YW0pOwpAQCAtMzc3LDYgKzM3OCwyNSBAQCB2b2lkIFBsYXliYWNrUGlwZWxpbmU6Om1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKQogICAgICAgICBn
c3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKGFwcHNyYyk7CiB9CiAKK0dzdFBhZFByb2JlUmV0dXJu
IHNlZ21lbnRGaXhlclByb2JlKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50
ZXIpCit7CisgICAgR3N0RXZlbnQqIGV2ZW50ID0gR1NUX0VWRU5UKGluZm8tPmRhdGEpOworCisg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSAhPSBHU1RfRVZFTlRfU0VHTUVOVCkKKyAgICAg
ICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisKKyAgICBHc3RTZWdtZW50KiBzZWdtZW50ID0g
bnVsbHB0cjsKKyAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudChldmVudCwgY29uc3RfY2FzdDxj
b25zdCBHc3RTZWdtZW50Kio+KCZzZWdtZW50KSk7CisKKyAgICBHU1RfVFJBQ0UoIkZpeGVkIHNl
Z21lbnQgYmFzZSB0aW1lIGZyb20gJSIgR1NUX1RJTUVfRk9STUFUICIgdG8gJSIgR1NUX1RJTUVf
Rk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdTKHNlZ21lbnQtPmJhc2UpLCBHU1RfVElNRV9B
UkdTKHNlZ21lbnQtPnN0YXJ0KSk7CisKKyAgICBzZWdtZW50LT5iYXNlID0gc2VnbWVudC0+c3Rh
cnQ7CisgICAgc2VnbWVudC0+ZmxhZ3MgPSBzdGF0aWNfY2FzdDxHc3RTZWdtZW50RmxhZ3M+KDAp
OworCisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfUkVNT1ZFOworfQorCiB2b2lkIFBsYXliYWNr
UGlwZWxpbmU6OmZsdXNoKEF0b21pY1N0cmluZyB0cmFja0lkKQogewogICAgIEFTU0VSVChXVEY6
OmlzTWFpblRocmVhZCgpKTsKQEAgLTM5Miw3ICs0MTIsNjggQEAgdm9pZCBQbGF5YmFja1BpcGVs
aW5lOjpmbHVzaChBdG9taWNTdHJpbmcgdHJhY2tJZCkKICAgICB9CiAKICAgICBzdHJlYW0tPmxh
c3RFbnF1ZXVlZFRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CisgICAgR3N0RWxlbWVu
dCogYXBwc3JjID0gc3RyZWFtLT5hcHBzcmM7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0sobV93ZWJL
aXRNZWRpYVNyYy5nZXQoKSk7CisKKyAgICBpZiAoIWFwcHNyYykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ2ludDY0IHBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICBHUmVmUHRy
PEdzdFF1ZXJ5PiBxdWVyeSA9IGFkb3B0R1JlZihnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9G
T1JNQVRfVElNRSkpOworICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeShwaXBlbGluZSgpLCBxdWVy
eS5nZXQoKSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeS5nZXQoKSwg
MCwgJnBvc2l0aW9uKTsKKworICAgIEdTVF9UUkFDRSgiUG9zaXRpb246ICUiIEdTVF9USU1FX0ZP
Uk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikpOworCisgICAgaWYgKHBvc2l0aW9uID09IEdT
VF9DTE9DS19USU1FX05PTkUpIHsKKyAgICAgICAgR1NUX1RSQUNFKCJDYW4ndCBkZXRlcm1pbmUg
cG9zaXRpb24sIGF2b2lkaW5nIGZsdXNoIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkb3VibGUgcmF0ZTsKKyAgICBHc3RGb3JtYXQgZm9ybWF0OworICAgIGdpbnQ2NCBzdGFydCA9
IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgZ2ludDY0IHN0b3AgPSBHU1RfQ0xPQ0tfVElNRV9O
T05FOworCisgICAgcXVlcnkgPSBhZG9wdEdSZWYoZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9G
T1JNQVRfVElNRSkpOworICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeShwaXBlbGluZSgpLCBxdWVy
eS5nZXQoKSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LmdldCgpLCAm
cmF0ZSwgJmZvcm1hdCwgJnN0YXJ0LCAmc3RvcCk7CisKKyAgICBHU1RfVFJBQ0UoInNlZ21lbnQ6
IFslIiBHU1RfVElNRV9GT1JNQVQgIiwgJSIgR1NUX1RJTUVfRk9STUFUICJdLCByYXRlOiAlZiIs
CisgICAgICAgIEdTVF9USU1FX0FSR1Moc3RhcnQpLCBHU1RfVElNRV9BUkdTKHN0b3ApLCByYXRl
KTsKKworICAgIGlmICghZ3N0X2VsZW1lbnRfc2VuZF9ldmVudChHU1RfRUxFTUVOVChhcHBzcmMp
LCBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0YXJ0KCkpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJG
YWlsZWQgdG8gc2VuZCBmbHVzaC1zdGFydCBldmVudCBmb3IgdHJhY2tJZD0lcyIsIHRyYWNrSWQu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWdzdF9lbGVtZW50X3NlbmRfZXZlbnQoR1NUX0VMRU1FTlQoYXBwc3JjKSwgZ3N0X2V2ZW50
X25ld19mbHVzaF9zdG9wKGZhbHNlKSkpIHsKKyAgICAgICAgR1NUX1dBUk5JTkcoIkZhaWxlZCB0
byBzZW5kIGZsdXNoLXN0b3AgZXZlbnQgZm9yIHRyYWNrSWQ9JXMiLCB0cmFja0lkLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHN0YXRp
Y19jYXN0PGd1aW50NjQ+KHBvc2l0aW9uKSA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FIHx8IHN0YXRp
Y19jYXN0PGd1aW50NjQ+KHN0YXJ0KSA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHVW5pcXVlUHRyPEdzdFNlZ21lbnQ+IHNlZ21lbnQoZ3N0X3NlZ21lbnRf
bmV3KCkpOworICAgIGdzdF9zZWdtZW50X2luaXQoc2VnbWVudC5nZXQoKSwgR1NUX0ZPUk1BVF9U
SU1FKTsKKyAgICBnc3Rfc2VnbWVudF9kb19zZWVrKHNlZ21lbnQuZ2V0KCksIHJhdGUsIEdTVF9G
T1JNQVRfVElNRSwgR1NUX1NFRUtfRkxBR19OT05FLAorICAgICAgICBHU1RfU0VFS19UWVBFX1NF
VCwgcG9zaXRpb24sIEdTVF9TRUVLX1RZUEVfU0VULCBzdG9wLCBudWxscHRyKTsKKworICAgIEdS
ZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXBwc3Jj
LCAic3JjIik7CisgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IHNpbmtQYWQgPyBnc3RfcGFk
X2dldF9wZWVyKHNpbmtQYWQuZ2V0KCkpIDogbnVsbHB0cjsKKyAgICBpZiAoc3JjUGFkKQorICAg
ICAgICBnc3RfcGFkX2FkZF9wcm9iZShzcmNQYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9F
VkVOVF9ET1dOU1RSRUFNLCBzZWdtZW50Rml4ZXJQcm9iZSwgbnVsbHB0ciwgbnVsbHB0cik7CisK
KyAgICBHU1RfVFJBQ0UoIlNlbmRpbmcgbmV3IHNlYW1sZXNzIHNlZ21lbnQ6IFslIiBHU1RfVElN
RV9GT1JNQVQgIiwgJSIgR1NUX1RJTUVfRk9STUFUICJdLCByYXRlOiAlZiIsCisgICAgICAgIEdT
VF9USU1FX0FSR1Moc2VnbWVudC0+c3RhcnQpLCBHU1RfVElNRV9BUkdTKHNlZ21lbnQtPnN0b3Ap
LCBzZWdtZW50LT5yYXRlKTsKKworICAgIGlmICghZ3N0X2Jhc2Vfc3JjX25ld19zZWFtbGVzc19z
ZWdtZW50KEdTVF9CQVNFX1NSQyhhcHBzcmMpLCBzZWdtZW50LT5zdGFydCwgc2VnbWVudC0+c3Rv
cCwgc2VnbWVudC0+c3RhcnQpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gc2Vu
ZCBzZWFtbGVzcyBzZWdtZW50IGV2ZW50IGZvciB0cmFja0lkPSVzIiwgdHJhY2tJZC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdTVF9ERUJV
RygidHJhY2tJZD0lcyBmbHVzaGVkIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1BpcGVsaW5lOjplbnF1ZXVlU2FtcGxlKFJlZlB0cjxNZWRpYVNh
bXBsZT4gbWVkaWFTYW1wbGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>