<?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>220103</bug_id>
          
          <creation_ts>2020-12-22 13:50:08 -0800</creation_ts>
          <short_desc>[GStreamer] More robust video size handling</short_desc>
          <delta_ts>2021-01-04 02:34:54 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716366</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-12-22 13:50:08 -0800</bug_when>
    <thetext>This patch improves the handling of how video size is detected and
reported to WebKit, fixing several issues:

a) The value returned by calling MediaPlayerPrivateGStreamer
::naturalSize() should not change during a given main thread tick,
since this can potentially be read several times from the rendering
code. This caused the elusive racy crash on `ASSERTION FAILED:
!intrinsicSizeChanged || !view().frameView().layoutContext().isInRenderTreeLayout()`
that has been appearing randomly in many layout tests for a very long time.

b) Video rotation used to be handled via bus messages, but this is
also racy, since the handling of bus messages in the main thread is
run on a different priority than other callbacks. This caused a flaky
failure on media/video-orientation.html.

c) In MSE, appending a second initialization segment with a different
video size triggered a video resize on append, before any frames with
the new size has been played.

This patch fixes these three issues: Only the first initialization
segment will trigger a video resize (this is done so we have a video
size on HAVE_METADATA, as the MSE spec expects), but otherwise video
size is emitted on caps changes on the sink. In the case of regular
playback this is delayed until the first frame arrives so that we have
a guarantee that any rotation tag events have traversed the pipeline
(the data flow through a GStreamer pipeline is done in this order:
CAPS event, optional TAG events and then buffers). Video size changes
are done by posting a task to the main thread, which ensures the value
doesn&apos;t change during a main thread tick.

The patch also relinquishes usage of MainThreadNotifier so that
successions of quick video size changes (e.g. in a test case) still
trigger the expected events instead of being potentially coalesced.

Since this patch for the most part fixes race conditions that are not
covered in TestExpectations, it doesn&apos;t introduce changes in
TestExpectations.

Note: This patch is not enough to fix imported/w3c/web-platform-tests/media-source/mediasource-config-change-*-framesize tests.
That requires further non-trivial fixes regarding how MSE flushes are
handled.

Note: This patch does not fix framesize WebRTC tests. These seem to be
a consequence of notifying the user too early of the frame size and/or
ready state, before any frame is readable, which is a problem
unrelated to these fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716367</commentid>
    <comment_count>1</comment_count>
      <attachid>416692</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-12-22 13:57:07 -0800</bug_when>
    <thetext>Created attachment 416692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717084</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-04 02:34:51 -0800</bug_when>
    <thetext>Committed r271128: &lt;https://trac.webkit.org/changeset/271128&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416692.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416692</attachid>
            <date>2020-12-22 13:57:07 -0800</date>
            <delta_ts>2021-01-04 02:34:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220103-20201222225706.patch</filename>
            <type>text/plain</type>
            <size>22562</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwMTU0OGY1OTI3MmMx
ZTFhOWM1MmNiYjZkY2NmNTM3ZWM0YjY4Mi4uMDk3YjUxZjBmNDlkMjI4NjNjYTZjZWQ0YzM3N2U1
NzMzNDk1ODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTEyLTIyICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBNb3JlIHJvYnVzdCB2aWRlbyBzaXplIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSBoYW5kbGlu
ZyBvZiBob3cgdmlkZW8gc2l6ZSBpcyBkZXRlY3RlZCBhbmQKKyAgICAgICAgcmVwb3J0ZWQgdG8g
V2ViS2l0LCBmaXhpbmcgc2V2ZXJhbCBpc3N1ZXM6CisKKyAgICAgICAgYSkgVGhlIHZhbHVlIHJl
dHVybmVkIGJ5IGNhbGxpbmcgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyCisgICAgICAgIDo6
bmF0dXJhbFNpemUoKSBzaG91bGQgbm90IGNoYW5nZSBkdXJpbmcgYSBnaXZlbiBtYWluIHRocmVh
ZCB0aWNrLAorICAgICAgICBzaW5jZSB0aGlzIGNhbiBwb3RlbnRpYWxseSBiZSByZWFkIHNldmVy
YWwgdGltZXMgZnJvbSB0aGUgcmVuZGVyaW5nCisgICAgICAgIGNvZGUuIFRoaXMgY2F1c2VkIHRo
ZSBlbHVzaXZlIHJhY3kgY3Jhc2ggb24gYEFTU0VSVElPTiBGQUlMRUQ6CisgICAgICAgICFpbnRy
aW5zaWNTaXplQ2hhbmdlZCB8fCAhdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5p
c0luUmVuZGVyVHJlZUxheW91dCgpYAorICAgICAgICB0aGF0IGhhcyBiZWVuIGFwcGVhcmluZyBy
YW5kb21seSBpbiBtYW55IGxheW91dCB0ZXN0cyBmb3IgYSB2ZXJ5IGxvbmcgdGltZS4KKworICAg
ICAgICBiKSBWaWRlbyByb3RhdGlvbiB1c2VkIHRvIGJlIGhhbmRsZWQgdmlhIGJ1cyBtZXNzYWdl
cywgYnV0IHRoaXMgaXMKKyAgICAgICAgYWxzbyByYWN5LCBzaW5jZSB0aGUgaGFuZGxpbmcgb2Yg
YnVzIG1lc3NhZ2VzIGluIHRoZSBtYWluIHRocmVhZCBpcworICAgICAgICBydW4gb24gYSBkaWZm
ZXJlbnQgcHJpb3JpdHkgdGhhbiBvdGhlciBjYWxsYmFja3MuIFRoaXMgY2F1c2VkIGEgZmxha3kK
KyAgICAgICAgZmFpbHVyZSBvbiBtZWRpYS92aWRlby1vcmllbnRhdGlvbi5odG1sLgorCisgICAg
ICAgIGMpIEluIE1TRSwgYXBwZW5kaW5nIGEgc2Vjb25kIGluaXRpYWxpemF0aW9uIHNlZ21lbnQg
d2l0aCBhIGRpZmZlcmVudAorICAgICAgICB2aWRlbyBzaXplIHRyaWdnZXJlZCBhIHZpZGVvIHJl
c2l6ZSBvbiBhcHBlbmQsIGJlZm9yZSBhbnkgZnJhbWVzIHdpdGgKKyAgICAgICAgdGhlIG5ldyBz
aXplIGhhcyBiZWVuIHBsYXllZC4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZXNlIHRo
cmVlIGlzc3VlczogT25seSB0aGUgZmlyc3QgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgc2VnbWVu
dCB3aWxsIHRyaWdnZXIgYSB2aWRlbyByZXNpemUgKHRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEg
dmlkZW8KKyAgICAgICAgc2l6ZSBvbiBIQVZFX01FVEFEQVRBLCBhcyB0aGUgTVNFIHNwZWMgZXhw
ZWN0cyksIGJ1dCBvdGhlcndpc2UgdmlkZW8KKyAgICAgICAgc2l6ZSBpcyBlbWl0dGVkIG9uIGNh
cHMgY2hhbmdlcyBvbiB0aGUgc2luay4gSW4gdGhlIGNhc2Ugb2YgcmVndWxhcgorICAgICAgICBw
bGF5YmFjayB0aGlzIGlzIGRlbGF5ZWQgdW50aWwgdGhlIGZpcnN0IGZyYW1lIGFycml2ZXMgc28g
dGhhdCB3ZSBoYXZlCisgICAgICAgIGEgZ3VhcmFudGVlIHRoYXQgYW55IHJvdGF0aW9uIHRhZyBl
dmVudHMgaGF2ZSB0cmF2ZXJzZWQgdGhlIHBpcGVsaW5lCisgICAgICAgICh0aGUgZGF0YSBmbG93
IHRocm91Z2ggYSBHU3RyZWFtZXIgcGlwZWxpbmUgaXMgZG9uZSBpbiB0aGlzIG9yZGVyOgorICAg
ICAgICBDQVBTIGV2ZW50LCBvcHRpb25hbCBUQUcgZXZlbnRzIGFuZCB0aGVuIGJ1ZmZlcnMpLiBW
aWRlbyBzaXplIGNoYW5nZXMKKyAgICAgICAgYXJlIGRvbmUgYnkgcG9zdGluZyBhIHRhc2sgdG8g
dGhlIG1haW4gdGhyZWFkLCB3aGljaCBlbnN1cmVzIHRoZSB2YWx1ZQorICAgICAgICBkb2Vzbid0
IGNoYW5nZSBkdXJpbmcgYSBtYWluIHRocmVhZCB0aWNrLgorCisgICAgICAgIFRoZSBwYXRjaCBh
bHNvIHJlbGlucXVpc2hlcyB1c2FnZSBvZiBNYWluVGhyZWFkTm90aWZpZXIgc28gdGhhdAorICAg
ICAgICBzdWNjZXNzaW9ucyBvZiBxdWljayB2aWRlbyBzaXplIGNoYW5nZXMgKGUuZy4gaW4gYSB0
ZXN0IGNhc2UpIHN0aWxsCisgICAgICAgIHRyaWdnZXIgdGhlIGV4cGVjdGVkIGV2ZW50cyBpbnN0
ZWFkIG9mIGJlaW5nIHBvdGVudGlhbGx5IGNvYWxlc2NlZC4KKworICAgICAgICBTaW5jZSB0aGlz
IHBhdGNoIGZvciB0aGUgbW9zdCBwYXJ0IGZpeGVzIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSBu
b3QKKyAgICAgICAgY292ZXJlZCBpbiBUZXN0RXhwZWN0YXRpb25zLCBpdCBkb2Vzbid0IGludHJv
ZHVjZSBjaGFuZ2VzIGluCisgICAgICAgIFRlc3RFeHBlY3RhdGlvbnMuCisKKyAgICAgICAgTm90
ZTogVGhpcyBwYXRjaCBpcyBub3QgZW5vdWdoIHRvIGZpeCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLSotZnJhbWVz
aXplIHRlc3RzLgorICAgICAgICBUaGF0IHJlcXVpcmVzIGZ1cnRoZXIgbm9uLXRyaXZpYWwgZml4
ZXMgcmVnYXJkaW5nIGhvdyBNU0UgZmx1c2hlcyBhcmUKKyAgICAgICAgaGFuZGxlZC4KKworICAg
ICAgICBOb3RlOiBUaGlzIHBhdGNoIGRvZXMgbm90IGZpeCBmcmFtZXNpemUgV2ViUlRDIHRlc3Rz
LiBUaGVzZSBzZWVtIHRvIGJlCisgICAgICAgIGEgY29uc2VxdWVuY2Ugb2Ygbm90aWZ5aW5nIHRo
ZSB1c2VyIHRvbyBlYXJseSBvZiB0aGUgZnJhbWUgc2l6ZSBhbmQvb3IKKyAgICAgICAgcmVhZHkg
c3RhdGUsIGJlZm9yZSBhbnkgZnJhbWUgaXMgcmVhZGFibGUsIHdoaWNoIGlzIGEgcHJvYmxlbQor
ICAgICAgICB1bnJlbGF0ZWQgdG8gdGhlc2UgZml4ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvU2lua0NhcHNDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0
dXJhbFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgIChXZWJDb3JlOjpnZXRW
aWRlb09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dXBkYXRlVmlkZW9TaXplQW5kT3JpZW50YXRpb25Gcm9tQ2Fwcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjp0cmFja0RldGVjdGVkKToKKwogMjAyMC0xMi0y
MiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTihyMjcwNjEyKSBbR1N0cmVhbWVyXVtNU0VdIFNvbWUgcGxheS9zZWVrIHJlbGF0ZWQg
ZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggNTIwOWVmMjExODEyYmJh
MTgxZDNhZjJhMThjNGU2MTdmMGRlZDFjYi4uNDNmMjM3MDA3YWYwYTQ3YmNkNzJkMjkxNThkZWYy
MjEyNDI4ZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0aWNQ
YWRUZW1wbGF0ZSogc3RhdGljUGFkVGVtcGwKIH0KIAogI2lmIEVOQUJMRShWSURFTykKLWJvb2wg
Z2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2FwcywgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSwgR3N0VmlkZW9Gb3JtYXQmIGZvcm1hdCwgaW50JiBwaXhlbEFzcGVjdFJhdGlv
TnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUp
Citib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKGNvbnN0IEdzdENhcHMqIGNhcHMs
IFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZGVvRm9ybWF0JiBmb3JtYXQsIGludCYgcGl4
ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3Is
IGludCYgc3RyaWRlKQogewogICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVP
X0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0
IHRoZSB2aWRlbyBzaXplIGFuZCBmb3JtYXQsIHRoZXNlIGFyZSBub3QgYSB2aWRlbyBjYXBzIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggMjk1MzBiNTY3OGRlZDZjMjdhNjgzNWE2NjE5
OTMyNWQxNzRlOGU1OC4uODVjODI0MjIxYzFjZDE2ZmNjN2RhNGY1MGM1MDMxMWJmMTIxMzNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgYm9vbCB3
ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNy
bykKIAogR3N0UGFkKiB3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZShHc3RTdGF0
aWNQYWRUZW1wbGF0ZSosIGNvbnN0IGdjaGFyKiBuYW1lLCBHc3RQYWQqIHRhcmdldCk7CiAjaWYg
RU5BQkxFKFZJREVPKQotYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBz
KiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJh
dGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJp
ZGUpOworYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiwg
V2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlv
TnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUp
OwogT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBH
c3RDYXBzKik7CiBib29sIGdldFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqLCBHc3RWaWRlb0lu
Zm8mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA4ZTNjZmQyMWNjZjdiZTM1NDRmYjNkNDY3ZjY1NTlhNzJhNzkzZTlhLi45
MzdkOTU1NDA3ZjU1ODUyODUzOWYzYWExNWUzMzE3MTBkNjYxNzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTA4MSwxNyArMTA4MSwz
NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRl
bygpCiAgICAgbV9wbGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwogfQogCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9TaW5rQ2Fwc0NoYW5nZWRDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp2aWRlb1NpbmtDYXBzQ2hhbmdlZChHc3RQYWQqIHZpZGVvU2lua1BhZCkKIHsK
LSAgICBwbGF5ZXItPm1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpW
aWRlb0NhcHNDaGFuZ2VkLCBbcGxheWVyXSB7Ci0gICAgICAgIHBsYXllci0+bm90aWZ5UGxheWVy
T2ZWaWRlb0NhcHMoKTsKLSAgICB9KTsKLX0KKyAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBh
ZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKHZpZGVvU2lua1BhZCkpOworICAgIGlm
ICghY2FwcykgeworICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBkb3duZ3JhZGluZyB0
aGUgc3RhdGUgb2YgdGhlIHBpcGVsaW5lLCB3aGljaCBjYXVzZXMgdGhlIGNhcHMgdG8gYmUgdW5z
ZXQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gV2UncmUgaW4gdmlkZW9TaW5rUGFk
IHN0cmVhbWluZyB0aHJlYWQuCisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgR1NU
X0RFQlVHX09CSkVDVCh2aWRlb1NpbmtQYWQsICJSZWNlaXZlZCBuZXcgY2FwczogJSIgR1NUX1BU
Ul9GT1JNQVQsIGNhcHMuZ2V0KCkpOwogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZWaWRlb0NhcHMoKQotewotICAgIG1fdmlkZW9TaXplID0gSW50U2l6
ZSgpOwotICAgIG1fcGxheWVyLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKKyAgICBib29sIGhhc0Zp
cnN0U2FtcGxlUmVhY2hlZFNpbms7CisgICAgLy8gVGhpcyBhY3R1YWxseSBsYWNrcyBjb250ZW50
aW9uIHNpbmNlIGJvdGggbm90aWZ5OjpjYXBzIGFuZCB0cmlnZ2VyUmVwYWludCgpIGFyZSBib3Ro
IHJ1biBpbiB0aGUgc2FtZSBzdHJlYW1pbmcgdGhyZWFkLgorICAgIHsKKyAgICAgICAgYXV0byBz
YW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgaGFzRmlyc3RT
YW1wbGVSZWFjaGVkU2luayA9ICEhbV9zYW1wbGU7CisgICAgfQorCisgICAgaWYgKCFoYXNGaXJz
dFNhbXBsZVJlYWNoZWRTaW5rKSB7CisgICAgICAgIC8vIFdlIHdhbnQgdG8gd2FpdCBmb3IgdGhl
IHNpbmsgdG8gcmVjZWl2ZSB0aGUgZmlyc3QgYnVmZmVyIGJlZm9yZSBlbWl0dGluZyBkaW1lbnNp
b25zLCBzaW5jZSBvbmx5IGJ5IHRoZW4gd2UKKyAgICAgICAgLy8gYXJlIGd1YXJhbnRlZWQgdGhh
dCBhbnkgcG90ZW50aWFsIHRhZyBldmVudCB3aXRoIGEgcm90YXRpb24gaGFzIGJlZW4gaGFuZGxl
ZC4KKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCh2aWRlb1NpbmtQYWQsICJJZ25vcmluZyBub3Rp
Znk6OmNhcHMgdW50aWwgdGhlIGZpcnN0IGJ1ZmZlciByZWFjaGVzIHRoZSBzaW5rLiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBjYXBzID0gV1RGTW92ZShjYXBzKV0gewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB1cGRh
dGVWaWRlb1NpemVBbmRPcmllbnRhdGlvbkZyb21DYXBzKGNhcHMuZ2V0KCkpOworICAgIH0pOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9DaGFuZ2VkQ2FsbGJh
Y2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCkBAIC0xNzA0LDY2ICsxNzIz
LDYgQEAgRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0dXJhbFNpemUo
KSBjb25zdAogICAgIGlmICghaGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgp
OwogCi0gICAgaWYgKCFtX3ZpZGVvU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3Zp
ZGVvU2l6ZTsKLQotICAgIGF1dG8gc2FtcGxlTG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVNdXRl
eCk7Ci0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0
dXJuIEZsb2F0U2l6ZSgpOwotCi0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMobV9zYW1wbGUuZ2V0KCkpOwotICAgIGlmICghY2FwcykKLSAgICAgICAgcmV0dXJuIEZsb2F0
U2l6ZSgpOwotCi0gICAgLy8gVE9ETzogaGFuZGxlIHBvc3NpYmxlIGNsZWFuIGFwZXJ0dXJlIGRh
dGEuIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk2NTcx
Ci0gICAgLy8gVE9ETzogaGFuZGxlIHBvc3NpYmxlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4gU2Vl
IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD01OTYzMjYKLQotICAg
IC8vIEdldCB0aGUgdmlkZW8gUEFSIGFuZCBvcmlnaW5hbCBzaXplLCBpZiB0aGlzIGZhaWxzIHRo
ZQotICAgIC8vIHZpZGVvLXNpbmsgaGFzIGxpa2VseSBub3QgeWV0IG5lZ290aWF0ZWQgaXRzIGNh
cHMuCi0gICAgaW50IHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9E
ZW5vbWluYXRvciwgc3RyaWRlOwotICAgIEludFNpemUgb3JpZ2luYWxTaXplOwotICAgIEdzdFZp
ZGVvRm9ybWF0IGZvcm1hdDsKLSAgICBpZiAoIWdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBz
KGNhcHMsIG9yaWdpbmFsU2l6ZSwgZm9ybWF0LCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBw
aXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlkZSkpCi0gICAgICAgIHJldHVybiBGbG9h
dFNpemUoKTsKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICAvLyBXaGVuIHVzaW5n
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLCBpZiB0aGUgdmlkZW8gaXMgdGFnZ2VkIGFzIHJvdGF0
ZWQgOTAgb3IgMjcwIGRlZ3JlZXMsIHN3YXAgd2lkdGggYW5kIGhlaWdodC4KLSAgICBpZiAobV9j
YW5SZW5kZXJpbmdCZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChtX3ZpZGVvU291cmNlT3Jp
ZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgICAgIG9yaWdpbmFsU2l6ZSA9
IG9yaWdpbmFsU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiT3JpZ2luYWwgdmlkZW8gc2l6ZTogJWR4JWQiLCBv
cmlnaW5hbFNpemUud2lkdGgoKSwgb3JpZ2luYWxTaXplLmhlaWdodCgpKTsKLSAgICBHU1RfREVC
VUdfT0JKRUNUKHBpcGVsaW5lKCksICJQaXhlbCBhc3BlY3QgcmF0aW86ICVkLyVkIiwgcGl4ZWxB
c3BlY3RSYXRpb051bWVyYXRvciwgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKTsKLQotICAg
IC8vIENhbGN1bGF0ZSBEQVIgYmFzZWQgb24gUEFSIGFuZCB2aWRlbyBzaXplLgotICAgIGludCBk
aXNwbGF5V2lkdGggPSBvcmlnaW5hbFNpemUud2lkdGgoKSAqIHBpeGVsQXNwZWN0UmF0aW9OdW1l
cmF0b3I7Ci0gICAgaW50IGRpc3BsYXlIZWlnaHQgPSBvcmlnaW5hbFNpemUuaGVpZ2h0KCkgKiBw
aXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3I7Ci0KLSAgICAvLyBEaXZpZGUgZGlzcGxheSB3aWR0
aCBhbmQgaGVpZ2h0IGJ5IHRoZWlyIEdDRCB0byBhdm9pZCBwb3NzaWJsZSBvdmVyZmxvd3MuCi0g
ICAgaW50IGRpc3BsYXlBc3BlY3RSYXRpb0dDRCA9IGdzdF91dGlsX2dyZWF0ZXN0X2NvbW1vbl9k
aXZpc29yKGRpc3BsYXlXaWR0aCwgZGlzcGxheUhlaWdodCk7Ci0gICAgZGlzcGxheVdpZHRoIC89
IGRpc3BsYXlBc3BlY3RSYXRpb0dDRDsKLSAgICBkaXNwbGF5SGVpZ2h0IC89IGRpc3BsYXlBc3Bl
Y3RSYXRpb0dDRDsKLQotICAgIC8vIEFwcGx5IERBUiB0byBvcmlnaW5hbCB2aWRlbyBzaXplLiBU
aGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGluIHh2aW1hZ2VzaW5rJ3Mgc2V0Y2FwcyBmdW5j
dGlvbi4KLSAgICB1aW50NjRfdCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKCEob3Jp
Z2luYWxTaXplLmhlaWdodCgpICUgZGlzcGxheUhlaWdodCkpIHsKLSAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCBoZWlnaHQiKTsKLSAg
ICAgICAgd2lkdGggPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KG9yaWdpbmFsU2l6ZS5oZWln
aHQoKSwgZGlzcGxheVdpZHRoLCBkaXNwbGF5SGVpZ2h0KTsKLSAgICAgICAgaGVpZ2h0ID0gb3Jp
Z2luYWxTaXplLmhlaWdodCgpOwotICAgIH0gZWxzZSBpZiAoIShvcmlnaW5hbFNpemUud2lkdGgo
KSAlIGRpc3BsYXlXaWR0aCkpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgp
LCAiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCB3aWR0aCIpOwotICAgICAgICBoZWlnaHQgPSBnc3Rf
dXRpbF91aW50NjRfc2NhbGVfaW50KG9yaWdpbmFsU2l6ZS53aWR0aCgpLCBkaXNwbGF5SGVpZ2h0
LCBkaXNwbGF5V2lkdGgpOwotICAgICAgICB3aWR0aCA9IG9yaWdpbmFsU2l6ZS53aWR0aCgpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkFwcHJv
eGltYXRpbmcgd2hpbGUga2VlcGluZyBvcmlnaW5hbCB2aWRlbyBoZWlnaHQiKTsKLSAgICAgICAg
d2lkdGggPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSwg
ZGlzcGxheVdpZHRoLCBkaXNwbGF5SGVpZ2h0KTsKLSAgICAgICAgaGVpZ2h0ID0gb3JpZ2luYWxT
aXplLmhlaWdodCgpOwotICAgIH0KLQotICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwg
Ik5hdHVyYWwgc2l6ZTogJSIgR19HVUlOVDY0X0ZPUk1BVCAieCUiIEdfR1VJTlQ2NF9GT1JNQVQs
IHdpZHRoLCBoZWlnaHQpOwotICAgIG1fdmlkZW9TaXplID0gRmxvYXRTaXplKHN0YXRpY19jYXN0
PGludD4od2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCkpOwogICAgIHJldHVybiBtX3Zp
ZGVvU2l6ZTsKIH0KIApAQCAtMjA2NCwyMSArMjAyMyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2Fz
ZSBHU1RfTUVTU0FHRV9UT0M6CiAgICAgICAgIHByb2Nlc3NUYWJsZU9mQ29udGVudHMobWVzc2Fn
ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX01FU1NBR0VfVEFHOiB7Ci0gICAgICAg
IEdzdFRhZ0xpc3QqIHRhZ3MgPSBudWxscHRyOwotICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFy
PiB0YWc7Ci0gICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3RhZyhtZXNzYWdlLCAmdGFncyk7Ci0g
ICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX0lNQUdFX09S
SUVOVEFUSU9OLCAmdGFnLm91dFB0cigpKSkgewotICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAo
dGFnLmdldCgpLCAicm90YXRlLTkwIikpCi0gICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VP
cmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0xODAiKSkKLSAgICAgICAg
ICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkJvdHRvbVJpZ2h0KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgp
LCAicm90YXRlLTI3MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZ3N0X3RhZ19saXN0X3VucmVmKHRhZ3MpOwotICAgICAgICBicmVhazsKLSAgICB9CiAgICAg
Y2FzZSBHU1RfTUVTU0FHRV9TVFJFQU1TX1NFTEVDVEVEOiB7CiAgICAgICAgIGlmIChtX2lzTGVn
YWN5UGxheWJpbikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg2MCw3ICsyODA0LDkgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYKIAogICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQYWQg
PSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQobV92aWRlb1NpbmsuZ2V0KCks
ICJzaW5rIikpOwogICAgIGlmICh2aWRlb1NpbmtQYWQpCi0gICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZCh2aWRlb1NpbmtQYWQuZ2V0KCksICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNL
KHZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdCh2aWRlb1NpbmtQYWQuZ2V0KCksICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNLKCtb
XShHc3RQYWQqIHZpZGVvU2lua1BhZCwgR1BhcmFtU3BlYyosIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciogcGxheWVyKSB7CisgICAgICAgICAgICBwbGF5ZXItPnZpZGVvU2lua0NhcHNDaGFu
Z2VkKHZpZGVvU2lua1BhZCk7CisgICAgICAgIH0pLCB0aGlzKTsKIH0KIAogYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdApAQCAt
MzAyMCw4ICsyOTY2LDEwMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVw
YWludCgpCiAgICAgbV9kcmF3Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCitzdGF0aWMgSW1h
Z2VPcmllbnRhdGlvbiBnZXRWaWRlb09yaWVudGF0aW9uKEdzdEVsZW1lbnQqIHNpbmspCit7Cisg
ICAgR1JlZlB0cjxHc3RQYWQ+IHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZChzaW5rLCAic2luayIpKTsKKyAgICBBU1NFUlQocGFkKTsKKyAgICBHUmVmUHRyPEdzdEV2
ZW50PiB0YWdzRXZlbnQgPSBhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfc3RpY2t5X2V2ZW50KHBhZC5n
ZXQoKSwgR1NUX0VWRU5UX1RBRywgMCkpOworICAgIGlmICghdGFnc0V2ZW50KSB7CisgICAgICAg
IEdTVF9ERUJVR19PQkpFQ1QocGFkLmdldCgpLCAiTm8gc3RpY2t5IHRhZyBldmVudCwgYXBwbHlp
bmcgbm8gcm90YXRpb24uIik7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5Ub3BMZWZ0OworICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ0xpc3Q7CisgICAgZ3N0X2V2
ZW50X3BhcnNlX3RhZyh0YWdzRXZlbnQuZ2V0KCksICZ0YWdMaXN0KTsKKyAgICBBU1NFUlQodGFn
TGlzdCk7CisgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnOworICAgIGlmICghZ3N0X3RhZ19s
aXN0X2dldF9zdHJpbmcodGFnTGlzdCwgR1NUX1RBR19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5v
dXRQdHIoKSkpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwYWQuZ2V0KCksICJObyBpbWFn
ZV9vcmllbnRhdGlvbiB0YWcsIGFwcGx5aW5nIG5vIHJvdGF0aW9uLiIpOworICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDsKKyAgICB9CisKKyAgICBHU1RfREVC
VUdfT0JKRUNUKHBhZC5nZXQoKSwgIkZvdW5kIGltYWdlX29yaWVudGF0aW9uIHRhZzogJXMiLCB0
YWcuZ2V0KCkpOworICAgIGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQor
ICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A7CisgICAgaWYg
KCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTE4MCIpKQorICAgICAgICByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ7CisgICAgaWYgKCFnX3N0cmNtcDAodGFn
LmdldCgpLCAicm90YXRlLTI3MCIpKQorICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6
T3JpZ2luTGVmdEJvdHRvbTsKKyAgICAvLyBEZWZhdWx0IHJvdGF0aW9uLgorICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dXBkYXRlVmlkZW9TaXplQW5kT3JpZW50YXRpb25Gcm9tQ2Fwcyhjb25z
dCBHc3RDYXBzKiBjYXBzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAv
LyBUT0RPOiBoYW5kbGUgcG9zc2libGUgY2xlYW4gYXBlcnR1cmUgZGF0YS4gU2VlIGh0dHBzOi8v
YnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY1NzEKKyAgICAvLyBUT0RPOiBo
YW5kbGUgcG9zc2libGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LiBTZWUgaHR0cHM6Ly9idWd6aWxs
YS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjMyNgorCisgICAgLy8gR2V0IHRoZSB2aWRl
byBQQVIgYW5kIG9yaWdpbmFsIHNpemUsIGlmIHRoaXMgZmFpbHMgdGhlCisgICAgLy8gdmlkZW8t
c2luayBoYXMgbGlrZWx5IG5vdCB5ZXQgbmVnb3RpYXRlZCBpdHMgY2Fwcy4KKyAgICBpbnQgcGl4
ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBzdHJp
ZGU7CisgICAgSW50U2l6ZSBvcmlnaW5hbFNpemU7CisgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0
OworICAgIGlmICghZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoY2Fwcywgb3JpZ2luYWxT
aXplLCBmb3JtYXQsIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNwZWN0UmF0aW9E
ZW5vbWluYXRvciwgc3RyaWRlKSkgeworICAgICAgICBHU1RfV0FSTklORygiRmFpbGVkIHRvIGdl
dCBzaXplIGFuZCBmb3JtYXQgZnJvbSBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGdl
dFZpZGVvT3JpZW50YXRpb24obV92aWRlb1NpbmsuZ2V0KCkpKTsKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICAvLyBXaGVuIHVzaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLCBp
ZiB0aGUgdmlkZW8gaXMgdGFnZ2VkIGFzIHJvdGF0ZWQgOTAgb3IgMjcwIGRlZ3JlZXMsIHN3YXAg
d2lkdGggYW5kIGhlaWdodC4KKyAgICBpZiAobV9jYW5SZW5kZXJpbmdCZUFjY2VsZXJhdGVkKSB7
CisgICAgICAgIGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQo
KSkKKyAgICAgICAgICAgIG9yaWdpbmFsU2l6ZSA9IG9yaWdpbmFsU2l6ZS50cmFuc3Bvc2VkU2l6
ZSgpOworICAgIH0KKyNlbmRpZgorCisgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAi
T3JpZ2luYWwgdmlkZW8gc2l6ZTogJWR4JWQiLCBvcmlnaW5hbFNpemUud2lkdGgoKSwgb3JpZ2lu
YWxTaXplLmhlaWdodCgpKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQaXhl
bCBhc3BlY3QgcmF0aW86ICVkLyVkIiwgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgcGl4ZWxB
c3BlY3RSYXRpb0Rlbm9taW5hdG9yKTsKKworICAgIC8vIENhbGN1bGF0ZSBEQVIgYmFzZWQgb24g
UEFSIGFuZCB2aWRlbyBzaXplLgorICAgIGludCBkaXNwbGF5V2lkdGggPSBvcmlnaW5hbFNpemUu
d2lkdGgoKSAqIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3I7CisgICAgaW50IGRpc3BsYXlIZWln
aHQgPSBvcmlnaW5hbFNpemUuaGVpZ2h0KCkgKiBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3I7
CisKKyAgICAvLyBEaXZpZGUgZGlzcGxheSB3aWR0aCBhbmQgaGVpZ2h0IGJ5IHRoZWlyIEdDRCB0
byBhdm9pZCBwb3NzaWJsZSBvdmVyZmxvd3MuCisgICAgaW50IGRpc3BsYXlBc3BlY3RSYXRpb0dD
RCA9IGdzdF91dGlsX2dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yKGRpc3BsYXlXaWR0aCwgZGlzcGxh
eUhlaWdodCk7CisgICAgZGlzcGxheVdpZHRoIC89IGRpc3BsYXlBc3BlY3RSYXRpb0dDRDsKKyAg
ICBkaXNwbGF5SGVpZ2h0IC89IGRpc3BsYXlBc3BlY3RSYXRpb0dDRDsKKworICAgIC8vIEFwcGx5
IERBUiB0byBvcmlnaW5hbCB2aWRlbyBzaXplLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFz
IGluIHh2aW1hZ2VzaW5rJ3Mgc2V0Y2FwcyBmdW5jdGlvbi4KKyAgICB1aW50NjRfdCB3aWR0aCA9
IDAsIGhlaWdodCA9IDA7CisgICAgaWYgKCEob3JpZ2luYWxTaXplLmhlaWdodCgpICUgZGlzcGxh
eUhlaWdodCkpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiS2VlcGlu
ZyB2aWRlbyBvcmlnaW5hbCBoZWlnaHQiKTsKKyAgICAgICAgd2lkdGggPSBnc3RfdXRpbF91aW50
NjRfc2NhbGVfaW50KG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSwgZGlzcGxheVdpZHRoLCBkaXNwbGF5
SGVpZ2h0KTsKKyAgICAgICAgaGVpZ2h0ID0gb3JpZ2luYWxTaXplLmhlaWdodCgpOworICAgIH0g
ZWxzZSBpZiAoIShvcmlnaW5hbFNpemUud2lkdGgoKSAlIGRpc3BsYXlXaWR0aCkpIHsKKyAgICAg
ICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiS2VlcGluZyB2aWRlbyBvcmlnaW5hbCB3
aWR0aCIpOworICAgICAgICBoZWlnaHQgPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KG9yaWdp
bmFsU2l6ZS53aWR0aCgpLCBkaXNwbGF5SGVpZ2h0LCBkaXNwbGF5V2lkdGgpOworICAgICAgICB3
aWR0aCA9IG9yaWdpbmFsU2l6ZS53aWR0aCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkFwcHJveGltYXRpbmcgd2hpbGUga2VlcGluZyBvcmln
aW5hbCB2aWRlbyBoZWlnaHQiKTsKKyAgICAgICAgd2lkdGggPSBnc3RfdXRpbF91aW50NjRfc2Nh
bGVfaW50KG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSwgZGlzcGxheVdpZHRoLCBkaXNwbGF5SGVpZ2h0
KTsKKyAgICAgICAgaGVpZ2h0ID0gb3JpZ2luYWxTaXplLmhlaWdodCgpOworICAgIH0KKworICAg
IEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlNhdmluZyBuYXR1cmFsIHNpemU6ICUiIEdf
R1VJTlQ2NF9GT1JNQVQgInglIiBHX0dVSU5UNjRfRk9STUFULCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBtX3ZpZGVvU2l6ZSA9IEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKSwgc3RhdGlj
X2Nhc3Q8aW50PihoZWlnaHQpKTsKKyAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKK30KKwog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBs
ZSogc2FtcGxlKQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCiAgICAgYm9vbCBz
aG91bGRUcmlnZ2VyUmVzaXplOwogICAgIHsKICAgICAgICAgYXV0byBzYW1wbGVMb2NrZXIgPSBo
b2xkTG9jayhtX3NhbXBsZU11dGV4KTsKQEAgLTMwMzEsOCArMzA2OSwxNSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUp
CiAKICAgICBpZiAoc2hvdWxkVHJpZ2dlclJlc2l6ZSkgewogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHBpcGVsaW5lKCksICJGaXJzdCBzYW1wbGUgcmVhY2hlZCB0aGUgc2luaywgdHJpZ2dlcmlu
ZyB2aWRlbyBkaW1lbnNpb25zIHVwZGF0ZSIpOwotICAgICAgICBtX25vdGlmaWVyLT5ub3RpZnko
TWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U2l6ZUNoYW5nZWQsIFt0aGlzXSB7Ci0gICAgICAgICAg
ICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBz
KGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlKSk7CisgICAgICAgIGlmICghY2FwcykgeworICAg
ICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChwaXBlbGluZSgpLCAiUmVjZWl2ZWQgc2FtcGxlIHdp
dGhvdXQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIHNhbXBsZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgY2FwcyA9IFdURk1vdmUoY2FwcyldIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgdXBkYXRlVmlkZW9TaXplQW5kT3JpZW50YXRpb25Gcm9tQ2FwcyhjYXBzLmdldCgpKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKaW5kZXggNWY0Zjc1NDg1MzRiYmZlOGE0ZDVhOWExNzc0N2M0MTA1YTM1Nzgw
Yi4uN2FjYjY2MTE5Mjk4NGE3Mjk0OGViYzQyY2I1NjJiYTNhMzA2M2U3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjUxLDcgKzI1MSw2IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVm9sdW1lQ2hhbmdlZCA9IDEgPDwgMywKICAgICAgICAgTXV0
ZUNoYW5nZWQgPSAxIDw8IDQsCiAgICAgICAgIFRleHRDaGFuZ2VkID0gMSA8PCA1LAotICAgICAg
ICBTaXplQ2hhbmdlZCA9IDEgPDwgNiwKICAgICAgICAgU3RyZWFtQ29sbGVjdGlvbkNoYW5nZWQg
PSAxIDw8IDcKICAgICB9OwogCkBAIC0zMDUsNyArMzA0LDYgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgcmVhZHlUaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIG5vdGlmeVBsYXllck9mVmlkZW8oKTsK
LSAgICB2b2lkIG5vdGlmeVBsYXllck9mVmlkZW9DYXBzKCk7CiAgICAgdm9pZCBub3RpZnlQbGF5
ZXJPZkF1ZGlvKCk7CiAgICAgdm9pZCBub3RpZnlQbGF5ZXJPZlRleHQoKTsKICAgICB2b2lkIG5l
d1RleHRTYW1wbGUoKTsKQEAgLTMxNyw3ICszMTUsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0
aWMgdm9pZCBzb3VyY2VTZXR1cENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcios
IEdzdEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCB2aWRlb0NoYW5nZWRDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKLSAgICBzdGF0aWMgdm9pZCB2aWRlb1NpbmtDYXBz
Q2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIHN0YXRp
YyB2b2lkIGF1ZGlvQ2hhbmdlZENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciop
OwogICAgIHN0YXRpYyB2b2lkIHRleHRDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKik7CiAgICAgc3RhdGljIEdzdEZsb3dSZXR1cm4gbmV3VGV4dFNhbXBsZUNhbGxi
YWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwpAQCAtNDU2LDYgKzQ1Myw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBsb2FkRnVsbChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBwaXBlbGluZU5hbWUpOwogCiAgICAgdm9pZCB1cGRhdGVUcmFja3MoR1JlZlB0cjxHc3RTdHJl
YW1Db2xsZWN0aW9uPiYmKTsKKyAgICB2b2lkIHZpZGVvU2lua0NhcHNDaGFuZ2VkKEdzdFBhZCop
OworICAgIHZvaWQgdXBkYXRlVmlkZW9TaXplQW5kT3JpZW50YXRpb25Gcm9tQ2Fwcyhjb25zdCBH
c3RDYXBzKik7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGJvb2wgaXNDRE1B
dHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2RtSW5zdGFuY2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4
NDUwOGVjZDczMTljYWFhNmVhYjUzZTdiODdkNWZkNDdhMmMzOTU0Li5jMzYwZDM5NDA4YzY0ZjA4
ZDQwY2I2MTM1MTgwNmE5NTUzNTUxMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03MDUsMTYgKzcwNSwyMyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6ZHVyYXRpb25DaGFuZ2VkKCkK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnRyYWNrRGV0ZWN0ZWQoQXBw
ZW5kUGlwZWxpbmUmIGFwcGVuZFBpcGVsaW5lLCBSZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2YXRl
QmFzZT4gbmV3VHJhY2ssIGJvb2wgZmlyc3RUcmFja0RldGVjdGVkKQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGFwcGVuZFBpcGVsaW5lLnRyYWNrKCkgPT0gbmV3
VHJhY2spOwogCiAgICAgR3N0Q2FwcyogY2FwcyA9IGFwcGVuZFBpcGVsaW5lLmFwcHNpbmtDYXBz
KCk7CiAgICAgQVNTRVJUKGNhcHMpOwotICAgIEdTVF9ERUJVRygidHJhY2sgSUQ6ICVzLCBjYXBz
OiAlIiBHU1RfUFRSX0ZPUk1BVCwgbmV3VHJhY2stPmlkKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpLCBjYXBzKTsKKyAgICBHU1RfREVCVUcoIkRlbXV4ZXIgcGFyc2VkIG1ldGFkYXRhIHdpdGgg
dHJhY2sgSUQ6ICVzLCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbmV3VHJhY2stPmlkKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpLCBjYXBzKTsKIAotICAgIGlmIChkb0NhcHNIYXZlVHlwZShj
YXBzLCBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsKKyAgICAvLyBXZSBzZXQgdGhlIHNp
emUgb2YgdGhlIHZpZGVvIG9ubHkgZm9yIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiBzZWdtZW50
LgorICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6IE5vcm1hbGx5IHRoZSB2aWRlbyBzaXplIGRl
cGVuZHMgb24gdGhlIGZyYW1lcyBhcnJpdmluZworICAgIC8vIGF0IHRoZSBzaW5rIGluIHRoZSBw
bGF5YmFjayBwaXBlbGluZSwgbm90IGluIHRoZSBhcHBlbmQgcGlwZWxpbmU7IGJ1dCB3ZSBzdGls
bAorICAgIC8vIHdhbnQgdG8gcmVwb3J0IGFuIGluaXRpYWwgc2l6ZSBmb3IgSEFWRV9NRVRBREFU
QSAoZmlyc3QgaW5pdGlhbGl6YXRpb24gc2VnbWVudCkuCisgICAgaWYgKG1fdmlkZW9TaXplLmlz
RW1wdHkoKSAmJiBkb0NhcHNIYXZlVHlwZShjYXBzLCBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJ
WCkpIHsKICAgICAgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBzaXplID0gZ2V0VmlkZW9SZXNvbHV0
aW9uRnJvbUNhcHMoY2Fwcyk7Ci0gICAgICAgIGlmIChzaXplLmhhc1ZhbHVlKCkpCisgICAgICAg
IGlmIChzaXplLmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIG1fdmlkZW9TaXplID0gc2l6ZS52
YWx1ZSgpOworICAgICAgICAgICAgR1NUX0RFQlVHKCJTZXR0aW5nIGluaXRpYWwgdmlkZW8gc2l6
ZTogJWd4JWciLCBtX3ZpZGVvU2l6ZS53aWR0aCgpLCBtX3ZpZGVvU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZmlyc3RUcmFja0RldGVjdGVkKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>