<?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>212073</bug_id>
          
          <creation_ts>2020-05-19 07:48:32 -0700</creation_ts>
          <short_desc>MediaPlayerPrivateMediaStreamAVFObjC should enqueue samples in a background thread</short_desc>
          <delta_ts>2020-06-02 04:24:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>194802</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jacob_uphoff</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653992</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-19 07:48:32 -0700</bug_when>
    <thetext>MediaPlayerPrivateMediaStreamAVFObjC should enqueue samples in a background thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656008</commentid>
    <comment_count>1</comment_count>
      <attachid>400239</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-26 04:56:09 -0700</bug_when>
    <thetext>Created attachment 400239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656009</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-26 04:56:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/62450764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656791</commentid>
    <comment_count>3</comment_count>
      <attachid>400437</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-28 01:46:10 -0700</bug_when>
    <thetext>Created attachment 400437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656881</commentid>
    <comment_count>4</comment_count>
      <attachid>400437</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-05-28 09:09:44 -0700</bug_when>
    <thetext>Comment on attachment 400437
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:294
&gt; +// Called on a background thread.
&gt;  void LocalSampleBufferDisplayLayer::enqueueSample(MediaSample&amp; sample)
&gt;  {

Is this comment in the wrong place?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:250
&gt; +    processNewVideoSample(sample, sample.videoRotation() != m_videoRotation || sample.videoMirrored() != m_videoMirrored);
&gt; +    enqueueVideoSample(sample);

processNewVideoSample does its work on the main thread, but enqueueVideoSample updates the layer and enqueues the sample immediately. What will happen if AVF displays the sample before processNewVideoSample runs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657180</commentid>
    <comment_count>5</comment_count>
      <attachid>400437</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-29 01:33:47 -0700</bug_when>
    <thetext>Comment on attachment 400437
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:294
&gt;&gt;  {
&gt; 
&gt; Is this comment in the wrong place?

This follows the practice of audioSamplesAvailable, I&apos;ll remove it.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:250
&gt;&gt; +    enqueueVideoSample(sample);
&gt; 
&gt; processNewVideoSample does its work on the main thread, but enqueueVideoSample updates the layer and enqueues the sample immediately. What will happen if AVF displays the sample before processNewVideoSample runs?

I don&apos;t think this will cause much issues.
processNewVideoSample does things like updating the ready state or keeping a ref to the sample in case of canvas capture.
Updating the ready state might trigger starting the video player, which might then happen after receiving a few samples.

It also updates the display mode which might change the visibility of the layer.
It might be that some samples will be rendered before the layer visibility is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657202</commentid>
    <comment_count>6</comment_count>
      <attachid>400565</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-29 03:32:02 -0700</bug_when>
    <thetext>Created attachment 400565
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657222</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-29 05:15:10 -0700</bug_when>
    <thetext>Committed r262289: &lt;https://trac.webkit.org/changeset/262289&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400565.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657415</commentid>
    <comment_count>8</comment_count>
    <who name="Jacob Uphoff">jacob_uphoff</who>
    <bug_when>2020-05-29 14:06:09 -0700</bug_when>
    <thetext>Reverted r262289 for reason:

This commit caused a test to crash internally

Committed r262316: &lt;https://trac.webkit.org/changeset/262316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658220</commentid>
    <comment_count>9</comment_count>
      <attachid>400799</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-02 02:30:24 -0700</bug_when>
    <thetext>Created attachment 400799
Patch for relanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658231</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-02 04:24:24 -0700</bug_when>
    <thetext>Committed r262410: &lt;https://trac.webkit.org/changeset/262410&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400799.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400239</attachid>
            <date>2020-05-26 04:56:09 -0700</date>
            <delta_ts>2020-05-28 01:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212073-20200526135607.patch</filename>
            <type>text/plain</type>
            <size>22407</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2ZGExODRhNWQ3ZGI2
Njg2OTgyYjdkZWVlN2ZkMGJkOWY0NWM2ZS4uNzYzZmYyY2I0ZjlkZjQ0ODJjNDQ5NDM2MTZiNmU5
Mjg2ZWM2YzNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgc2hvdWxkIGVucXVldWUgc2FtcGxlcyBpbiBhIGJhY2tncm91
bmQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTIwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEbyBub3QgaG9wIHRvIHRoZSBtYWluIHRocmVhZCB3aGVuIHJlbmRlcmluZyB2aWRlbyBzYW1w
bGVzIGFueW1vcmUuCisgICAgICAgIEluc3RlYWQsIHdlIGVucXVldWUgdG8gdGhlIGRpc3BsYXkg
bGF5ZXIgaW4gdGhlIGJhY2tncm91bmQgdGhyZWFkIGJ1dCBzdGlsbCBob3AgdG8gdGhlIG1haW4g
dGhyZWFkIGZvciB0d28gdGhpbmdzOgorICAgICAgICAtIFVwZGF0ZSBvZiB2YXJpb3VzIHN0YXRl
cyBvZiB0aGUgcGxheWVyCisgICAgICAgIC0ga2VlcCBhIHJlZiB0byB0aGUgdmlkZW8gc2FtcGxl
IGlmIGNhbnZhcyByZW5kZXJpbmcgaXMgbmVlZGVkLgorCisgICAgICAgIE1vc3QgZGlzcGxheSBs
YXllciBvcGVyYXRpb25zIHN0YXkgaW4gdGhlIG1haW4gdGhyZWFkIChjcmVhdGlvbiwgZmx1c2hp
bmcuLi4pLCBtdXRhdGlvbiBvcGVyYXRpb25zIGFyZSBlaXRoZXIgY292ZXJlZCBieSBhIGxvY2sK
KyAgICAgICAgb3IgdGhlIG1fY2FuRW5xdWV1ZURpc3BsYXlMYXllciBib29sZWFuIHdoaWNoIHdp
bGwgYmUgc2V0IHRvIHRydWUgb25seSB3aGVuIHRoZSBkaXNwbGF5IGxheWVyIGlzIHByb3Blcmx5
IGluaXRpYWxpemVkLgorCisgICAgICAgIExvY2FsU2FtcGxlQnV1ZmVyRGlzcGxheUxheWVyIG5l
ZWRzIHRvIGhhbmRsZSB0aGUgZmFjdCB0aGF0IGVucXVldWVpbmcgbWlnaHQgYmUgZG9uZSBpbiBh
IGJhY2tncm91bmQgdGhyZWFkLgorICAgICAgICBXZSBpbnRyb2R1Y2UgYSBsb2NrIGZvciB0aGF0
IHB1cnBvc2UgdG8gb25seSBlbnF1ZXVlIHNhbXBsZXMgYXQgYSBnaXZlbiB0aW1lLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLm1tOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNv
bnRleHQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZv
clZpZGVvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1h
dHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3Vy
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxl
Y3RlZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmlu
Z1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvVHJhbnNmb3JtYXRpb25N
YXRyaXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1wbGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVEaXNwbGF5TGF5ZXIpOiBEZWxldGVkLgorCiAyMDIwLTA1LTI2ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlbyBmcmVlemVzIHdoZW4gYXR0YWNo
aW5nIGEgbG9jYWwgTWVkaWFTdHJlYW0gdG8gbXVsdGlwbGUgZWxlbWVudHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmlu
ZGV4IDljOWRjYTJhNWMxZGM4NDVhODM4N2E3NTZmMDU3ZGQ2MzRhODFlNWYuLjZlNjAxN2IxNDUy
MjFmNjk2MzY0ZTNjNWU1ODQ1ZjIxODZjNDBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzcsNyArMzcs
NyBAQCBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgZmluYWwgOiBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZpbmFs
IDogcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0
aW9uOjpFYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNy
ZWF0ZShDbGllbnQmKTsKQEAgLTc4LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92
ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CiAgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRp
bmdRdWV1ZShNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5S
ZWFkeUZvclZpZGVvRGF0YSgpOworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihDTVNhbXBs
ZUJ1ZmZlclJlZik7CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVy
U3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXI7CkBAIC04Nyw2ICs4
OCw4IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBQZW5kaW5nU2FtcGxlUXVldWUgPSBEZXF1ZTxS
ZWY8TWVkaWFTYW1wbGU+PjsKICAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9T
YW1wbGVRdWV1ZTsKKworICAgIExvY2sgbV9lbnF1ZXVlTG9jazsKIH07CiAKIGlubGluZSB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSZW5kZXJQb2xpY3koUmVuZGVyUG9s
aWN5IHJlbmRlclBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KaW5kZXggYWRkMzc5ODcwN2EwOGY5ZTBjOTFh
ODdlOWE1YjU3N2RhN2UyNDlmZi4uMzYzOTZhY2U1M2YzMDhkZjFiYmE2ZGE3NmZhZDI3MjdiMmVj
NTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNv
cmUvQ0FMYXllci5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAKKyNp
bXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKQEAgLTEwNSwzMyArMTA2LDI0IEBAIHVzaW5nIG5hbWVz
cGFjZSBQQUw7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShr
ZXlQYXRoKTsKICAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKLSAgICBBU1NFUlQoX3BhcmVudCk7
CiAKLSAgICBpZiAoIV9wYXJlbnQpCisgICAgaWYgKCFbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFM
OjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJDbGFzcygpXSkgewotICAgICAgICBBU1NFUlQob2JqZWN0ID09IF9wYXJlbnQt
PmRpc3BsYXlMYXllcigpKTsKLQotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAic3RhdHVzIl0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNl
bGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2Vs
ZildIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQorICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCJzdGF0dXMiXSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYp
XSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKICAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZSgpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXJyb3IiXSkgewotICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZl
clN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0gewotICAgICAgICAgICAgICAgIGlmICghcHJv
dGVjdGVkU2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGlmIChba2V5UGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCJlcnJvciJdKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4o
c2VsZildIHsKKyAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQogICAgICAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CiAgICAgfQogfQogQGVuZApAQCAtMzIwLDE1ICszMTIsMjUg
QEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNsb25lU2FtcGxl
QnVmZmVyQW5kU2V0QXNEaXNwbGF5SW1tZWQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBD
YWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAo
IVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsK
LSAgICAgICAgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoc2FtcGxlKTsKLSAgICAgICAgcmVxdWVz
dE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzYW1wbGUgPSBtYWtl
UmVmKHNhbXBsZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVl
KHNhbXBsZSk7CisgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlk
ZW9EYXRhKCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBzYW1wbGVUb0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1w
bGVCdWZmZXI7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2VucXVldWVMb2NrKTsKKyAg
ICBlbnF1ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcik7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlVG9FbnF1ZXVlKQorewog
ICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbmV3U2FtcGxlQnVmZmVyOwogICAgIGlm
IChtX3JlbmRlclBvbGljeSA9PSBSZW5kZXJQb2xpY3k6OkltbWVkaWF0ZWx5KSB7CiAgICAgICAg
IC8vIFdlIHNldCB0aGUgc2FtcGxlIGJ1ZmZlciB0byBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rp
c3BsYXlJbW1lZGlhdGVseSBhcyBhIHdvcmthcm91bmQgdG8gcmRhcjovL3Byb2JsZW0vNDkyNzQw
ODMuCkBAIC0zODcsMTQgKzM4OSwxNCBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKIAogICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwog
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9lbnF1ZXVlTG9jayk7CiAgICAgICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkgewogICAgICAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JW
aWRlb0RhdGEoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmly
c3QoKTsKLSAgICAgICAgICAgIGVucXVldWVTYW1wbGUoc2FtcGxlLmdldCgpKTsKKyAgICAgICAg
ICAgIGVucXVldWVTYW1wbGVCdWZmZXIobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmly
c3QoKS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpOwogICAgICAgICB9
CiAgICAgfV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IGFmN2U0OGIxNzFhODE0
ZTQ2OWJmMzdkYmI4Y2YwY2EwMmIzNjZhNjUuLjc2ZGM2NjEwNzcyYzFjNTVhYzFiOWI5MWZlMTZm
YjlhMDlkMjg4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xMzksNyArMTM5LDcg
QEAgcHJpdmF0ZToKIAogICAgIE1lZGlhVGltZSBjYWxjdWxhdGVUaW1lbGluZU9mZnNldChjb25z
dCBNZWRpYVNhbXBsZSYsIGRvdWJsZSk7CiAgICAgCi0gICAgdm9pZCBlbnF1ZXVlQ29ycmVjdGVk
VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIHByb2Nlc3NOZXdWaWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIGJvb2wgaGFzQ2hhbmdlZE9yaWVudGF0aW9uKTsKICAg
ICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKIAogICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBwcml2YXRlOgogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwogCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNhbXBsZSYsIGJvb2wgZm9yY2VVcGRhdGUg
PSBmYWxzZSk7Ci0KICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7
CiAKICAgICBib29sIGhpZGVSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiAoIWFjdGl2ZVZpZGVv
VHJhY2soKSB8fCBtX3dhaXRpbmdGb3JGaXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBh
aW50SXRCbGFjazsgfQogCiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGFjdGl2ZVZpZGVv
VHJhY2soKSBjb25zdDsKIAorICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKCk7CisKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRy
IH07CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbVByaXZhdGU7
CiAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+IG1fYWN0aXZlVmlkZW9U
cmFjazsKQEAgLTI0OCw5ICsyNDgsMTYgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZvbHVtZSB7
IDEgfTsKICAgICBEaXNwbGF5TW9kZSBtX2Rpc3BsYXlNb2RlIHsgTm9uZSB9OwogICAgIFBsYXli
YWNrU3RhdGUgbV9wbGF5YmFja1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwotICAgIE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpOb25lIH07Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV92aWRlb1RyYW5z
Zm9ybTsKKyAgICBPcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gbV92aWRlb1RyYW5zZm9ybTsK
KworICAgIC8vIFVzZWQgb24gYm90aCBtYWluIHRocmVhZCBhbmQgc2FtcGxlIHRocmVhZC4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjsKKyAgICBMb2NrIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTG9jazsK
KyAgICBib29sIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyIHsgdHJ1ZSB9OworICAgIC8vIFdy
aXR0ZW4gb24gbWFpbiB0aHJlYWQsIHJlYWQgb24gc2FtcGxlIHRocmVhZC4KKyAgICBib29sIG1f
Y2FuRW5xdWV1ZURpc3BsYXlMYXllciB7IGZhbHNlIH07CisgICAgLy8gVXNlZCBvbiBzYW1wbGUg
dGhyZWFkLgorICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CiAKICAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CkBAIC0yNjcs
NyArMjc0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGVu
ZGluZ1NlbGVjdGVkVHJhY2tDaGVjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3RyYW5zZm9ybUlz
VmFsaWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV92aXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29s
IG1faGF2ZVNlZW5NZXRhZGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJz
dEltYWdlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBmODRjYjRh
ZjVjYmYwZWNiYzhiMWQyZTA2ZDBlOGYzYmI2NDc2ODljLi4xN2RhYTM4MjdjZmIwM2QwYzA1NTlk
ODJlYjc1YjY4MWQ2ZWJmMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MSw2
ICs0MSw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQg
PHBhbC9zeXN0ZW0vQ2xvY2suaD4KKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTIzOCwx
MSArMjM5LDggQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWUKICAgICByZXR1cm4gdGltZWxpbmVP
ZmZzZXQ7CiB9CiAKLUNHQWZmaW5lVHJhbnNmb3JtIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNhbXBsZSYgc2FtcGxl
LCBib29sIGZvcmNlVXBkYXRlKQorc3RhdGljIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgaWYgKCFm
b3JjZVVwZGF0ZSAmJiBtX3RyYW5zZm9ybUlzVmFsaWQpCi0gICAgICAgIHJldHVybiBtX3ZpZGVv
VHJhbnNmb3JtOwotCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwogICAgIENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBs
ZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZUJ1ZmZlcikpOwogICAgIHNpemVfdCB3aWR0aCA9
IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcik7CkBAIC0yNTAsNDQgKzI0OCwyMCBA
QCBDR0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKICAg
ICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAKLSAgICBBU1NFUlQobV92
aWRlb1JvdGF0aW9uID49IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKTsKLSAgICBB
U1NFUlQobV92aWRlb1JvdGF0aW9uIDw9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0
KTsKLQotICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlv
bihzdGF0aWNfY2FzdDxpbnQ+KG1fdmlkZW9Sb3RhdGlvbikgKiBNX1BJIC8gMTgwKTsKKyAgICBh
dXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGlj
X2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwogICAgIGlm
IChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQotICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1TY2FsZShtX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CisgICAgICAgIHZp
ZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2aWRlb1RyYW5zZm9ybSwgLTEs
IDEpOwogCi0gICAgbV90cmFuc2Zvcm1Jc1ZhbGlkID0gdHJ1ZTsKLSAgICByZXR1cm4gbV92aWRl
b1RyYW5zZm9ybTsKKyAgICByZXR1cm4gdmlkZW9UcmFuc2Zvcm07CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1w
bGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKLXsKLSAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWls
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0
aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9uIHx8IHNhbXBsZS52aWRlb01pcnJvcmVkKCkgIT0gbV92
aWRlb01pcnJvcmVkKSB7Ci0gICAgICAgICAgICBtX3ZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlk
ZW9Sb3RhdGlvbigpOwotICAgICAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVv
TWlycm9yZWQoKTsKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRh
dGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUp
KTsKLSAgICAgICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwotICAgICAgICB9Ci0gICAgICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxlKHNhbXBsZSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKLSAgICAgICAgbV9o
YXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lID0gdHJ1ZTsKLSAgICAgICAgbV9wbGF5ZXItPmZpcnN0
VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwotICAgIH0KLX0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vz
c05ld1ZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIGJvb2wgaGFzQ2hh
bmdlZE9yaWVudGF0aW9uKQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2FtcGxlID0g
bWFrZVJlZihzYW1wbGUpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzYW1wbGUgPSBtYWtlUmVmKHNhbXBsZSksIGhh
c0NoYW5nZWRPcmllbnRhdGlvbl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxl
LmdldCgpKTsKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+cHJvY2Vzc05ld1ZpZGVvU2FtcGxl
QXZhaWxhYmxlKHNhbXBsZS5nZXQoKSwgaGFzQ2hhbmdlZE9yaWVudGF0aW9uKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yOTUsNiArMjY5LDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBzYW0KICAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKGhhc0NoYW5nZWRPcmllbnRhdGlvbikKKyAgICAgICAgbV92aWRlb1Ry
YW5zZm9ybSA9IHsgfTsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwg
bV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFnZSkgewogICAgICAgICBtX2ltYWdlUGFpbnRlci5t
ZWRpYVNhbXBsZSA9ICZzYW1wbGU7CiAgICAgICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBu
dWxscHRyOwpAQCAtMzI4LDExICszMDUsNDMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW0KICAg
ICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiKk5PVEUqIGF1ZGlvIHNhbXBsZSBh
dCB0aW1lICIsIG5vdywgIiBpcyAiLCBkZWx0YSwgIiBzZWNvbmRzIGVhcmx5ISIpOwogICAgIH0K
IAotICAgIGVucXVldWVDb3JyZWN0ZWRWaWRlb1NhbXBsZShzYW1wbGUpOwogICAgIGlmIChtX3dh
aXRpbmdGb3JGaXJzdEltYWdlKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UgPSBm
YWxzZTsKICAgICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKICAgICB9CisgICAgaWYgKCFtX2hh
c0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKKyAgICAgICAgbV9oYXNFdmVyRW5xdWV1ZWRWaWRl
b0ZyYW1lID0gdHJ1ZTsKKyAgICAgICAgbV9wbGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7CisgICAgYm9v
bCBoYXNDaGFuZ2VkT3JpZW50YXRpb24gPSBzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlk
ZW9Sb3RhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZDsK
KyAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLCBoYXNDaGFuZ2VkT3Jp
ZW50YXRpb24pOworCisgICAgaWYgKCFtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJMb2NrKTsKKyAgICBpZiAoIWxvY2tlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+ZGlkRmFpbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaGFzQ2hhbmdl
ZE9yaWVudGF0aW9uKSB7CisgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1Jv
dGF0aW9uKCk7CisgICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVk
KCk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFu
c2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUpKTsKKyAgICAgICAgbV9zaG91
bGRVcGRhdGVEaXNwbGF5TGF5ZXIgPSB0cnVlOworICAgIH0KKyAgICBpZiAobV9zaG91bGRVcGRh
dGVEaXNwbGF5TGF5ZXIpIHsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVw
ZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5
ZXIoKS5ib3VuZHMsIG1fdmlkZW9Sb3RhdGlvbik7CisgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlz
cGxheUxheWVyID0gZmFsc2U7CisgICAgfQorCisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKIH0KIAogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
QEAgLTM1MSwxOCArMzYwLDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpCiB7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWlsKCkpIHsKLSAgICAgICAgZmx1c2hSZW5kZXJlcnMo
KTsKLSAgICAgICAgaWYgKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICAgICAg
ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7
Ci0gICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7Ci0gICAgfQorICAgIGlmICghbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWls
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsdXNoUmVuZGVyZXJzKCk7CisgICAgaWYgKG1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAgICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOworICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRl
cmVycygpCiB7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotICAgICAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Zmx1c2goKTsKKyAgICBpZiAoIW1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOworICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLT5mbHVzaCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKCkKQEAgLTM3NCw2ICszODYsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKCkKICAgICBp
ZiAoIWFjdGl2ZVZpZGVvVHJhY2sgfHwgIWFjdGl2ZVZpZGVvVHJhY2stPmVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gZmFsc2U7CiAg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNyZWF0ZSgqdGhpcyk7CiAgICAgRVJST1JfTE9HX0lGKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciwgTE9HSURFTlRJRklFUiwgIkNyZWF0aW5nIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgZmFpbGVkLiIpOwogICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCkBAIC0z
OTAsMTYgKzQwMywyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6ZW5zdXJlTGF5ZXJzKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICB1cGRhdGVSZW5kZXJpbmdNb2RlKCk7Ci0gICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwor
ICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciA9IHRydWU7CiAKICAgICAgICAgbV92
aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci0+cm9vdExheWVyKCksIHNpemUpOwogCiAgICAgICAgIFttX2JvdW5kc0NoYW5nZUxpc3RlbmVy
IGJlZ2luOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKV07CisKKyAgICAg
ICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gdHJ1ZTsKICAgICB9KTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMoKQogewor
ICAgIG1fY2FuRW5xdWV1ZURpc3BsYXlMYXllciA9IGZhbHNlOworCisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOwogICAgIGlmIChtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgPSBudWxscHRyOwogCkBAIC03MDAsNyArNzE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVJlbmRlcmluZ01vZGUoKQogICAgICAgICByZXR1
cm47CiAKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewotICAgICAgICBtX3RyYW5z
Zm9ybUlzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHsgfTsKICAg
ICAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnJlbmRlcmluZ01vZGVD
aGFuZ2VkKCk7CiAgICAgfSk7CkBAIC04NTksNiArODc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCkKICAgICAg
ICAgfQogICAgICAgICBlbnN1cmVMYXllcnMoKTsKICAgICAgICAgaWYgKG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKSB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTG9jayk7CiAgICAgICAgICAgICBpZiAoIW1fYWN0aXZlVmlk
ZW9UcmFjaykKICAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Y2xl
YXJFbnF1ZXVlZFNhbXBsZXMoKTsKICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT51cGRhdGVEaXNwbGF5TW9kZShoaWRlVmlkZW9MYXllciB8fCBtX2Rpc3BsYXlNb2RlIDwg
UGF1c2VkSW1hZ2UsIGhpZGVSb290TGF5ZXIoKSk7CkBAIC05ODMsNyArMTAwMiw5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAKICAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJ
bWFnZS5nZXQoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0
aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
dmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSk7CisgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQorICAgICAgICBtX3Zp
ZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUpOworICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3Zp
ZGVvVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9U
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVz
dFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWRE
ZXN0UmVjdCwgaW1hZ2VSZWN0KTsKQEAgLTEwMjcsOCArMTA0OCwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVy
OjpOZXR3b3JrUwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgcG9saWN5KQog
ewotICAgIGlmIChwb2xpY3kgIT0gTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6RGVmYXVs
dCAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKKyAgICBpZiAocG9saWN5ID09IE1l
ZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQgfHwgIW1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZv
aWQgKCk+JiYgZnVuY3Rpb24pCkBAIC0xMDQ5LDE3ICsxMDczLDEwIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpDdXJyZW50RnJhbWVQYWludGVyOjpyZXNldCgp
CiAgICAgcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBudWxscHRyOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxheWVyKCkKLXsKLSAg
ICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0
aW9uKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJv
b3RMYXllckJvdW5kc0RpZENoYW5nZSgpCiB7Ci0gICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2sp
OworICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyID0gdHJ1ZTsKIH0KIAogV1RGTG9nQ2hh
bm5lbCYgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsb2dDaGFubmVsKCkg
Y29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400437</attachid>
            <date>2020-05-28 01:46:10 -0700</date>
            <delta_ts>2020-05-29 03:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212073-20200528104609.patch</filename>
            <type>text/plain</type>
            <size>21883</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk4M2I2ZTAxMzBlNGFm
YTYxMjUxZTI2MTRiYzQyNTNjZjU0YjgxMi4uOGNiMzgxY2ZhNjc3YjJiM2UwNmJmZTc3YWVkMmQ1
ZWFkOGE1MjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgc2hvdWxkIGVucXVldWUgc2FtcGxlcyBpbiBhIGJhY2tncm91
bmQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTIwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBEbyBub3QgaG9wIHRvIHRoZSBtYWluIHRocmVhZCB3aGVuIHJlbmRlcmluZyB2aWRlbyBzYW1w
bGVzIGFueW1vcmUuCisgICAgICAgIEluc3RlYWQsIHdlIGVucXVldWUgdG8gdGhlIGRpc3BsYXkg
bGF5ZXIgaW4gdGhlIGJhY2tncm91bmQgdGhyZWFkIGJ1dCBzdGlsbCBob3AgdG8gdGhlIG1haW4g
dGhyZWFkIGZvciB0d28gdGhpbmdzOgorICAgICAgICAtIFVwZGF0ZSBvZiB2YXJpb3VzIHN0YXRl
cyBvZiB0aGUgcGxheWVyCisgICAgICAgIC0ga2VlcCBhIHJlZiB0byB0aGUgdmlkZW8gc2FtcGxl
IGlmIGNhbnZhcyByZW5kZXJpbmcgaXMgbmVlZGVkLgorCisgICAgICAgIE1vc3QgZGlzcGxheSBs
YXllciBvcGVyYXRpb25zIHN0YXkgaW4gdGhlIG1haW4gdGhyZWFkIChjcmVhdGlvbiwgZmx1c2hp
bmcuLi4pLgorICAgICAgICBEZWxldGlvbiBvZiB0aGUgZGlzcGxheSBsYXllciBhbmQgYWNjZXNz
IGZyb20gYSBiYWNrZ3JvdW5kIGFyZSBjb3ZlcmVkIGJ5IGEgbG9jay4KKyAgICAgICAgVGhlIG1f
Y2FuRW5xdWV1ZURpc3BsYXlMYXllciBib29sZWFuIGVuc3VyZXMgd2UgZG8gbm90IGVucXVldWUg
dG9vIGVhcmx5IHdoZW4gdGhlIGRpc3BsYXkgbGF5ZXIgaXMgbm90IHlldCBwcm9wZXJseSBpbml0
aWFsaXplZC4KKworICAgICAgICBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBuZWVkcyB0
byBoYW5kbGUgdGhlIGZhY3QgdGhhdCBlbnF1ZXVlaW5nIG1pZ2h0IGJlIGRvbmUgaW4gYSBiYWNr
Z3JvdW5kIHRocmVhZC4KKyAgICAgICAgSW5zdGVhZCBvZiBpbnRyb2R1Y2luZyBhIGxvY2ssIHdl
IGludHJvZHVjZSBhIHdvcmsgcXVldWUgYW5kIHdlIGhvcCB0byB0aGlzIHF1ZXVlIHdoZW5ldmVy
IHdlIG5lZWQgdG8gZW5xdWV1ZS9tdXRhdGUgdGhlIHBlbmRpbmcgc2FtcGxlcy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGFuZCBtYW51YWwgdGVzdGluZy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06CisgICAgICAgICgtW1dlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpv
Zk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZXF1ZXN0Tm90aWZp
Y2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvU2FtcGxlQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNo
UmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVJlbmRlcmlu
Z01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6c2V0QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlk
ZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVDb3JyZWN0ZWRWaWRlb1Nh
bXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlMYXllcik6IERlbGV0ZWQuCisKIDIwMjAtMDUt
MjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBvbmUg
YXVkaW8gdW5pdCBmb3IgYWxsIHRyYWNrcyBvZiBhIGdpdmVuIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmlu
ZGV4IDljOWRjYTJhNWMxZGM4NDVhODM4N2E3NTZmMDU3ZGQ2MzRhODFlNWYuLmJkNjE2OGYwOWY1
ZjQyNWE2MDljZDY4YWVjYmRiY2ZlNmFjYWU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzEsMTMgKzMx
LDE0IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgog
CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBXZWJB
VlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZp
bmFsIDogcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgcHVibGljIENhbk1ha2VXZWFr
UHRyPExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmaW5hbCA6IHB1YmxpYyBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUoQ2xpZW50Jik7CkBAIC03
OCwxMyArNzksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVu
ZGluZ1F1ZXVlKCk7CiAgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBs
ZSYpOwogICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgp
OworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwogCiBwcml2YXRl
OgogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBt
X3N0YXR1c0NoYW5nZUxpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IG1fcm9vdExheWVyOwogICAgIFJlbmRlclBvbGljeSBtX3JlbmRlclBvbGljeSB7
IFJlbmRlclBvbGljeTo6VGltaW5nSW5mbyB9OworICAgIAorICAgIFJlZlB0cjxXb3JrUXVldWU+
IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCisgICAgLy8gT25seSBhY2Nlc3NlZCB0aHJvdWdoIG1fcHJv
Y2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVlIGlzIG51bGwuCiAgICAgdXNpbmcg
UGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CiAgICAgUGVuZGlu
Z1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpp
bmRleCA1MGNiNDlhZDcxOTQzNGM3ODJiZTcyYmI5Y2M5OTY4ZjEwN2RmOWU5Li43MmY1ZjE2NDk5
YTY0ZGZiNmY4YTUzZDI1ZGQzNWQyNDU0MGU2YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMTA1LDMz
ICsxMDUsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgVU5VU0VEX1BBUkFNKGNv
bnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKICAgICBVTlVTRURfUEFSQU0oY2hh
bmdlKTsKLSAgICBBU1NFUlQoX3BhcmVudCk7CiAKLSAgICBpZiAoIV9wYXJlbnQpCisgICAgaWYg
KCFbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckNsYXNzKCldKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkgewotICAgICAg
ICBBU1NFUlQob2JqZWN0ID09IF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKTsKLQotICAgICAgICBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pIHsKLSAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAoIXBy
b3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQorICAg
IGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgeworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVy
U3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpXSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVk
U2VsZi0+X3BhcmVudCkKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5s
YXllclN0YXR1c0RpZENoYW5nZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
ZXJyb3IiXSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0g
ewotICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAorICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVC
dWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgIGlmIChwcm90
ZWN0ZWRTZWxmLT5fcGFyZW50KQogICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CiAgICAgfQog
fQogQGVuZApAQCAtMTYwLDYgKzE1MSw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5QdHI8QVZTYW1wbGVCCiAgICAg
OiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQogICAgICwgbV9zdGF0dXNDaGFuZ2VM
aXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIoV1RGTW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpKQorICAgICwgbV9wcm9jZXNz
aW5nUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHF1ZXVlIikpCiB7CiB9CiAKQEAgLTE5MSw2ICsxODMsOCBAQCB2b2lkIExvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjppbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBz
aXplLAogCiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKCkKIHsKKyAgICBtX3Byb2Nlc3NpbmdRdWV1ZSA9IG51bGxwdHI7CisKICAg
ICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wXTsKIAogICAgIG1fcGVuZGluZ1ZpZGVvU2Ft
cGxlUXVldWUuY2xlYXIoKTsKQEAgLTI4MSwyMyArMjc1LDM2IEBAIHZvaWQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuCiAKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmZsdXNoKCkKIHsK
LSAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fcHJvY2Vzc2lu
Z1F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgZmx1c2hdOworICAgIH0pOwogfQogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpmbHVzaEFuZFJlbW92ZUltYWdlKCkKIHsKLSAgICBbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRp
c3BhdGNoKFt0aGlzXSB7CisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVz
aEFuZFJlbW92ZUltYWdlXTsKKyAgICB9KTsKIH0KIAogc3RhdGljIGNvbnN0IGRvdWJsZSByZW5k
ZXJlckxhdGVuY3kgPSAwLjAyOwogCisvLyBDYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4K
IHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFT
YW1wbGUmIHNhbXBsZSkKIHsKLSAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBp
c1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgYWRkU2FtcGxlVG9QZW5kaW5nUXVl
dWUoc2FtcGxlKTsKLSAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVv
RGF0YSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fcHJvY2Vzc2luZ1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgc2FtcGxlID0gbWFrZVJlZihzYW1wbGUpXSB7CisgICAgICAgIGlmICgh
W21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewor
ICAgICAgICAgICAgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoc2FtcGxlKTsKKyAgICAgICAgICAg
IHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbnF1ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIAogICAgIGF1dG8gc2FtcGxlVG9FbnF1ZXVlID0gc2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwogICAgIGF1dG8gbm93ID0gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSArIHJlbmRlcmVyTGF0ZW5jeSk7CkBAIC0zMTUsNiArMzIyLDggQEAgdm9pZCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYg
c2FtcGxlKQogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1vdmVPbGRT
YW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisKICAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzM0LDE5ICszNDMsMjMgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKQogCiB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjphZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRp
YVNhbXBsZSYgc2FtcGxlKQogeworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCiAgICAg
cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKICAgICBtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOwogfQogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCiB7Ci0gICAgbV9wZW5kaW5nVmlkZW9T
YW1wbGVRdWV1ZS5jbGVhcigpOworICAgIG1fcHJvY2Vzc2luZ1F1ZXVlLT5kaXNwYXRjaChbdGhp
c10geworICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgfSk7
CiB9CiAKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVlc3ROb3RpZmlj
YXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQogewogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJlcXVlc3RN
ZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdC
bG9jazpeeworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRh
V2hlblJlYWR5T25RdWV1ZTptX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpIHVzaW5n
QmxvY2s6XnsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMzU4LDggKzM3MSw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJl
cXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgZW5xdWV1ZVNh
bXBsZShzYW1wbGUuZ2V0KCkpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKICAgICAgICAgfQogICAg
IH1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA4NmJjYmEwNjcyOWEwOWZmYmY5
YzUxZmM5MDRhMTM4OGU3NzBlZWNhLi44ZGU4OTVkN2IyNDExOGZkYjI4ZmFjMzljYjFiZmJlOThi
OGY3NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGZsdXNoUmVuZGVyZXJzKCk7CiAKKyAgICB2b2lkIHByb2Nlc3NO
ZXdWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYsIGJvb2wgaGFzQ2hhbmdlZE9yaWVudGF0aW9uKTsK
ICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgcmVx
dWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogCkBAIC0yMTIsOCArMjEz
LDYgQEAgcHJpdmF0ZToKIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJv
dmlkZXIoKSBmaW5hbDsKIAotICAgIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtYXRp
b25NYXRyaXgoTWVkaWFTYW1wbGUmLCBib29sIGZvcmNlVXBkYXRlID0gZmFsc2UpOwotCiAgICAg
dm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBoaWRl
Um9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gKCFhY3RpdmVWaWRlb1RyYWNrKCkgfHwgbV93YWl0
aW5nRm9yRmlyc3RJbWFnZSkgJiYgbV9kaXNwbGF5TW9kZSAhPSBQYWludEl0QmxhY2s7IH0KQEAg
LTI0Niw5ICsyNDUsMTcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZvbHVtZSB7IDEgfTsKICAg
ICBEaXNwbGF5TW9kZSBtX2Rpc3BsYXlNb2RlIHsgTm9uZSB9OwogICAgIFBsYXliYWNrU3RhdGUg
bV9wbGF5YmFja1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwotICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpOb25lIH07Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV92aWRlb1RyYW5zZm9ybTsKKyAg
ICBPcHRpb25hbDxDR0FmZmluZVRyYW5zZm9ybT4gbV92aWRlb1RyYW5zZm9ybTsKKworICAgIC8v
IFVzZWQgb24gYm90aCBtYWluIHRocmVhZCBhbmQgc2FtcGxlIHRocmVhZC4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjsKKyAgICBMb2NrIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTG9jazsKKyAgICBib29s
IG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyIHsgdHJ1ZSB9OworICAgIC8vIFdyaXR0ZW4gb24g
bWFpbiB0aHJlYWQsIHJlYWQgb24gc2FtcGxlIHRocmVhZC4KKyAgICBib29sIG1fY2FuRW5xdWV1
ZURpc3BsYXlMYXllciB7IGZhbHNlIH07CisgICAgLy8gVXNlZCBvbiBzYW1wbGUgdGhyZWFkLgor
ICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgYm9vbCBtX3ZpZGVvTWlycm9yZWQgeyBm
YWxzZSB9OwogCiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOwpAQCAtMjU5LDEzICsyNjYsMTEgQEAgcHJpdmF0ZToKIAogICAg
IFJldGFpblB0cjxXZWJSb290U2FtcGxlQnVmZmVyQm91bmRzQ2hhbmdlTGlzdGVuZXI+IG1fYm91
bmRzQ2hhbmdlTGlzdGVuZXI7CiAKLSAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3BsYXlpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2VuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRXZlckVucXVl
dWVkVmlkZW9GcmFtZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlbmRpbmdTZWxlY3RlZFRyYWNr
Q2hlY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgbV90cmFuc2Zvcm1Jc1ZhbGlkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fdmlzaWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVTZWVuTWV0YWRh
dGEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9yRmlyc3RJbWFnZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggYjQyYzAyY2NhOGM3OGIyMGU5M2EzMTFk
ZWZhY2Q2NGFkMTZlMTc4OS4uMWEwY2FjNmFjOTM2Zjk1ODk4N2IwZTg5NDdjMGRjODA1M2M2ZjFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9y
dCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL0Nsb2Nr
Lmg+CisjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0xMzksNyArMTQwLDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMoTWVkaWEKICAgICAsIG1fdmlkZW9MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxW
aWRlb0xheWVyTWFuYWdlck9iakM+KG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZpZXIpKQogewogICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIpOwotICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVBdmFpbGFibGUgZXhwZWN0cyBhIHdlYWsgcG9pbnRl
ciB0byBiZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAvLyBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZSBleHBlY3RzIGEg
d2VhayBwb2ludGVyIHRvIGJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIG1fYm91
bmRzQ2hhbmdlTGlzdGVuZXIgPSBhZG9wdE5TKFtbV2ViUm9vdFNhbXBsZUJ1ZmZlckJvdW5kc0No
YW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOlt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMjcsMTEgKzIyOCw4IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAjcHJh
Z21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyIE1ldGhvZHMKIAotQ0dBZmZp
bmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1Ry
YW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1wbGUsIGJvb2wgZm9yY2VVcGRhdGUp
CitzdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtYXRpb25NYXRy
aXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKLSAgICBpZiAoIWZvcmNlVXBkYXRlICYmIG1fdHJh
bnNmb3JtSXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIG1fdmlkZW9UcmFuc2Zvcm07Ci0KICAgICBD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5z
YW1wbGUuY21TYW1wbGVCdWZmZXI7CiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZm
ZXIoc2FtcGxlQnVmZmVyKSk7CiAgICAgc2l6ZV90IHdpZHRoID0gQ1ZQaXhlbEJ1ZmZlckdldFdp
ZHRoKHBpeGVsQnVmZmVyKTsKQEAgLTIzOSwzNyArMjM3LDUxIEBAIENHQWZmaW5lVHJhbnNmb3Jt
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlv
bk1hdHJpCiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm4gQ0dBZmZp
bmVUcmFuc2Zvcm1JZGVudGl0eTsKIAotICAgIEFTU0VSVChtX3ZpZGVvUm90YXRpb24gPj0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpOwotICAgIEFTU0VSVChtX3ZpZGVvUm90YXRp
b24gPD0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQpOwotCi0gICAgbV92aWRlb1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVJvdGF0aW9uKHN0YXRpY19jYXN0PGludD4o
bV92aWRlb1JvdGF0aW9uKSAqIE1fUEkgLyAxODApOworICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZS52
aWRlb1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7CiAgICAgaWYgKHNhbXBsZS52aWRlb01pcnJv
cmVkKCkpCi0gICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxl
KG1fdmlkZW9UcmFuc2Zvcm0sIC0xLCAxKTsKKyAgICAgICAgdmlkZW9UcmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybVNjYWxlKHZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CisKKyAgICByZXR1cm4g
dmlkZW9UcmFuc2Zvcm07Cit9CiAKLSAgICBtX3RyYW5zZm9ybUlzVmFsaWQgPSB0cnVlOwotICAg
IHJldHVybiBtX3ZpZGVvVHJhbnNmb3JtOwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7
CisgICAgcHJvY2Vzc05ld1ZpZGVvU2FtcGxlKHNhbXBsZSwgc2FtcGxlLnZpZGVvUm90YXRpb24o
KSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVv
TWlycm9yZWQpOworICAgIGVucXVldWVWaWRlb1NhbXBsZShzYW1wbGUpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1l
ZGlhU2FtcGxlJiBzYW1wbGUpCiB7CisgICAgaWYgKCFtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrKTsKKyAgICBpZiAoIWxvY2tlcikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
c2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVv
TWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKICAgICAgICAgbV92aWRlb1JvdGF0aW9u
ID0gc2FtcGxlLnZpZGVvUm90YXRpb24oKTsKICAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2Ft
cGxlLnZpZGVvTWlycm9yZWQoKTsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnVwZGF0ZUFmZmluZVRyYW5zZm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSwg
dHJ1ZSkpOwotICAgICAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKKyAgICAgICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5zZm9ybSh2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciA9
IHRydWU7CisgICAgfQorICAgIGlmIChtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllcikgeworICAg
ICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24o
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1Jv
dGF0aW9uKTsKKyAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAg
ICB9CisKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1w
bGUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1w
bGUmIHNhbXBsZSwgIGJvb2wgaGFzQ2hhbmdlZE9yaWVudGF0aW9uKQogewogICAgIGlmICghaXNN
YWluVGhyZWFkKCkpIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgc2FtcGxlID0gbWFrZVJlZihzYW1wbGUpXSgpIG11dGFibGUgeworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzYW1w
bGUgPSBtYWtlUmVmKHNhbXBsZSksIGhhc0NoYW5nZWRPcmllbnRhdGlvbl0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dmlk
ZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKHNhbXBsZS5nZXQoKSwgaGFzQ2hhbmdlZE9yaWVudGF0
aW9uKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzcsNiArMjg5
LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW0KICAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFj
aykKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGhhc0NoYW5nZWRPcmllbnRhdGlvbikKKyAg
ICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHsgfTsKKwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFnZSkgewogICAgICAgICBt
X2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CiAgICAgICAgIG1faW1hZ2VQYWlu
dGVyLmNnSW1hZ2UgPSBudWxscHRyOwpAQCAtMjg3LDggKzMwMiw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtCiAgICAgaWYgKG1fZGlzcGxheU1vZGUgIT0gTGl2ZVByZXZpZXcgJiYgIW1fd2Fp
dGluZ0ZvckZpcnN0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVucXVldWVWaWRlb1Nh
bXBsZShzYW1wbGUpOwotCiAgICAgaWYgKCFtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsK
ICAgICAgICAgbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgbV9w
bGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwpAQCAtMzM1LDYgKzM0OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQog
ICAgIGlmICghYWN0aXZlVmlkZW9UcmFjayB8fCAhYWN0aXZlVmlkZW9UcmFjay0+ZW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgPSBmYWxz
ZTsKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y3JlYXRlKCp0aGlzKTsKICAgICBFUlJPUl9MT0dfSUYoIW1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLCBMT0dJREVOVElGSUVSLCAiQ3JlYXRpbmcgdGhlIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBmYWlsZWQuIik7CiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikK
QEAgLTM1MSwxNiArMzY1LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjplbnN1cmVMYXllcnMoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKLSAgICAgICAgdXBkYXRlRGlzcGxheUxheWVy
KCk7CisgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyID0gdHJ1ZTsKIAogICAgICAg
ICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5yb290TGF5ZXIoKSwgc2l6ZSk7CiAKICAgICAgICAgW21fYm91bmRzQ2hhbmdlTGlz
dGVuZXIgYmVnaW46bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpXTsKKwor
ICAgICAgICBtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgPSB0cnVlOwogICAgIH0pOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycygp
CiB7CisgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gZmFsc2U7CisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTG9jayk7CiAgICAgaWYg
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA9IG51bGxwdHI7CiAKQEAgLTY2MSw3ICs2ODAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlUmVuZGVyaW5nTW9kZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7Ci0gICAgICAgIG1f
dHJhbnNmb3JtSXNWYWxpZCA9IGZhbHNlOworICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0geyB9
OwogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBtX3BsYXllci0+cmVuZGVyaW5n
TW9kZUNoYW5nZWQoKTsKICAgICB9KTsKQEAgLTk0NCw3ICs5NjMsOSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDbwogCiAgICAgYXV0byBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UuZ2V0
KCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Up
LCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOworICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKKyAgICAgICAgbV92aWRlb1RyYW5z
Zm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2Ft
cGxlKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5z
Zm9ybTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsK
ICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CiAgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3Qs
IGltYWdlUmVjdCk7CkBAIC0xMDEwLDE3ICsxMDMxLDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OkN1cnJlbnRGcmFtZVBhaW50ZXI6OnJlc2V0KCkKICAgICBw
aXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TGF5ZXIoKQotewotICAgIGlmICgh
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCkuYm91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwot
fQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cm9vdExheWVy
Qm91bmRzRGlkQ2hhbmdlKCkKIHsKLSAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKKyAgICBtX3No
b3VsZFVwZGF0ZURpc3BsYXlMYXllciA9IHRydWU7CiB9CiAKIFdURkxvZ0NoYW5uZWwmIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9nQ2hhbm5lbCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400565</attachid>
            <date>2020-05-29 03:32:02 -0700</date>
            <delta_ts>2020-06-02 02:30:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212073-20200529123200.patch</filename>
            <type>text/plain</type>
            <size>21930</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM2NjY4YTZmM2EzYTNj
Y2YyYzM4OWE1N2U5MmRiM2ZhMTcwODU1NS4uOWY0NzM2NmM3MGRmMmFiZTEzYmJiMjVhYjI3ZjYz
OWNiYWE4YmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgc2hvdWxkIGVucXVldWUgc2FtcGxlcyBpbiBhIGJhY2tncm91
bmQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTIwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
RG8gbm90IGhvcCB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiByZW5kZXJpbmcgdmlkZW8gc2FtcGxl
cyBhbnltb3JlLgorICAgICAgICBJbnN0ZWFkLCB3ZSBlbnF1ZXVlIHRvIHRoZSBkaXNwbGF5IGxh
eWVyIGluIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCBidXQgc3RpbGwgaG9wIHRvIHRoZSBtYWluIHRo
cmVhZCBmb3IgdHdvIHRoaW5nczoKKyAgICAgICAgLSBVcGRhdGUgb2YgdmFyaW91cyBzdGF0ZXMg
b2YgdGhlIHBsYXllcgorICAgICAgICAtIGtlZXAgYSByZWYgdG8gdGhlIHZpZGVvIHNhbXBsZSBp
ZiBjYW52YXMgcmVuZGVyaW5nIGlzIG5lZWRlZC4KKworICAgICAgICBNb3N0IGRpc3BsYXkgbGF5
ZXIgb3BlcmF0aW9ucyBzdGF5IGluIHRoZSBtYWluIHRocmVhZCAoY3JlYXRpb24sIGZsdXNoaW5n
Li4uKS4KKyAgICAgICAgRGVsZXRpb24gb2YgdGhlIGRpc3BsYXkgbGF5ZXIgYW5kIGFjY2VzcyBm
cm9tIGEgYmFja2dyb3VuZCBhcmUgY292ZXJlZCBieSBhIGxvY2suCisgICAgICAgIFRoZSBtX2Nh
bkVucXVldWVEaXNwbGF5TGF5ZXIgYm9vbGVhbiBlbnN1cmVzIHdlIGRvIG5vdCBlbnF1ZXVlIHRv
byBlYXJseSB3aGVuIHRoZSBkaXNwbGF5IGxheWVyIGlzIG5vdCB5ZXQgcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCisKKyAgICAgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgbmVlZHMgdG8g
aGFuZGxlIHRoZSBmYWN0IHRoYXQgZW5xdWV1ZWluZyBtaWdodCBiZSBkb25lIGluIGEgYmFja2dy
b3VuZCB0aHJlYWQuCisgICAgICAgIEluc3RlYWQgb2YgaW50cm9kdWNpbmcgYSBsb2NrLCB3ZSBp
bnRyb2R1Y2UgYSB3b3JrIHF1ZXVlIGFuZCB3ZSBob3AgdG8gdGhpcyBxdWV1ZSB3aGVuZXZlciB3
ZSBuZWVkIHRvIGVucXVldWUvbXV0YXRlIHRoZSBwZW5kaW5nIHNhbXBsZXMuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgbWFudWFsIHRlc3RpbmcuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOgorICAgICAgICAoLVtXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZP
YmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNh
dGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9U
cmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJl
bmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVv
VHJhbnNmb3JtYXRpb25NYXRyaXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1w
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TGF5ZXIpOiBEZWxldGVkLgorCiAyMDIwLTA1LTI4
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBC
dXR0b25zIHJlbmRlciB3aXRoIGEgY29ybmVyIHJhZGl1cyBvZiBQS0FwcGxlUGF5QnV0dG9uRGVm
YXVsdENvcm5lclJhZGl1cyBldmVuIHdoZW4gZXhwbGljaXRseSBzcGVjaWZ5aW5nICJib3JkZXIt
cmFkaXVzOiAwcHgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA5YzlkY2EyYTVjMWRjODQ1YTgzODdhNzU2ZjA1
N2RkNjM0YTgxZTVmLi5iZDYxNjhmMDlmNWY0MjVhNjA5Y2Q2OGFlY2JkYmNmZTZhY2FlNGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5l
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmaW5hbCA6IHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
ZmluYWwgOiBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIsIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb246OkVhZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cj4gY3JlYXRlKENsaWVudCYpOwpAQCAtNzgsMTMgKzc5LDE3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOwogICAgIHZvaWQgYWRkU2FtcGxl
VG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRp
b25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAgICB2b2lkIGVucXVldWVTYW1wbGVCdWZmZXIo
TWVkaWFTYW1wbGUmKTsKIAogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKICAgICBSZXRh
aW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3Jvb3RMYXllcjsKICAgICBSZW5k
ZXJQb2xpY3kgbV9yZW5kZXJQb2xpY3kgeyBSZW5kZXJQb2xpY3k6OlRpbWluZ0luZm8gfTsKKyAg
ICAKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3Byb2Nlc3NpbmdRdWV1ZTsKIAorICAgIC8vIE9u
bHkgYWNjZXNzZWQgdGhyb3VnaCBtX3Byb2Nlc3NpbmdRdWV1ZSBvciBpZiBtX3Byb2Nlc3NpbmdR
dWV1ZSBpcyBudWxsLgogICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERlcXVlPFJlZjxN
ZWRpYVNhbXBsZT4+OwogICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBs
ZVF1ZXVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KaW5kZXggNTBjYjQ5YWQ3MTk0MzRjNzgyYmU3MmJiOWNj
OTk2OGYxMDdkZjllOS4uMjMzYTY4NTRkMDVjZmExZTFlNzM0ZTM1OWI0Y2QwMWYzM2EzYmE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIubW0KQEAgLTEwNSwzMyArMTA1LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oa2V5UGF0
aCk7CiAgICAgVU5VU0VEX1BBUkFNKGNoYW5nZSk7Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwogCi0g
ICAgaWYgKCFfcGFyZW50KQorICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyQ2xhc3MoKV0pIHsKLSAgICAgICAgQVNTRVJUKG9iamVjdCA9PSBfcGFyZW50LT5kaXNw
bGF5TGF5ZXIoKSk7Ci0KLSAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0
YXR1cyJdKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
UmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpXSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
c3RhdHVzIl0pIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0gewor
ICAgICAgICAgICAgaWYgKHByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCiAgICAgICAgICAgICAgICAg
cHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVycm9yIl0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0
dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAiZXJyb3IiXSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYp
XSB7CisgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKICAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllckVycm9yRGlkQ2hhbmdlKCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIEBlbmQKQEAgLTE2MCw2ICsxNTEsNyBAQCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
UmV0YWluUHRyPEFWU2FtcGxlQgogICAgIDogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVu
dCkKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAg
ICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKSkKKyAgICAsIG1fcHJvY2Vzc2luZ1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBxdWV1ZSIpKQogewogfQogCkBAIC0xOTEsNiArMTgz
LDggQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29s
IGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwKIAogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6On5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7CisgICAgbV9wcm9jZXNz
aW5nUXVldWUgPSBudWxscHRyOworCiAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcF07
CiAKICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7CkBAIC0yODEsMjMgKzI3
NSwzNSBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVSb290TGF5
ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bgogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpmbHVzaCgpCiB7Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IGZsdXNoXTsKKyAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAg
ICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCiB7
Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOwor
ICAgIG1fcHJvY2Vzc2luZ1F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAgfSk7CiB9CiAK
IHN0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4wMjsKIAogdm9pZCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2Ft
cGxlKQogewotICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhXSkgewotICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShzYW1wbGUp
OwotICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBzYW1wbGUgPSBtYWtlUmVmKHNhbXBsZSldIHsKKyAgICAgICAgaWYgKCFbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAg
ICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShzYW1wbGUpOworICAgICAgICAgICAgcmVxdWVzdE5v
dGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGVucXVldWVTYW1wbGVCdWZmZXIoc2FtcGxlKTsKKyAgICB9KTsK
K30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1
ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCiAgICAgYXV0byBzYW1wbGVUb0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5z
YW1wbGUuY21TYW1wbGVCdWZmZXI7CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
ICsgcmVuZGVyZXJMYXRlbmN5KTsKQEAgLTMxNSw2ICszMjEsOCBAQCB2b2lkIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAK
IHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBsZXNGcm9t
UGVuZGluZ1F1ZXVlKCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKwogICAgIGlm
IChtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0zMzQsMTkgKzM0MiwyMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCiAKIHZvaWQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKE1lZGlhU2FtcGxlJiBz
YW1wbGUpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAgICByZW1vdmVPbGRT
YW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOwogICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
YXBwZW5kKHNhbXBsZSk7CiB9CiAKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKIHsKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAg
ICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5S
ZWFkeUZvclZpZGVvRGF0YSgpCiB7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKTsKLSAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdo
ZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57Cisg
ICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlP
blF1ZXVlOm1fcHJvY2Vzc2luZ1F1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgdXNpbmdCbG9jazpeewog
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTgsOCAr
MzcwLDcgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHNhbXBsZSA9IG1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICBlbnF1ZXVlU2FtcGxlKHNhbXBs
ZS5nZXQoKSk7CisgICAgICAgICAgICBlbnF1ZXVlU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfV07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDg2YmNiYTA2NzI5YTA5ZmZiZjljNTFmYzkwNGEx
Mzg4ZTc3MGVlY2EuLjhkZTg5NWQ3YjI0MTE4ZmRiMjhmYWMzOWNiMWJmYmU5OGI4Zjc2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xMzcsNiArMTM3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAorICAgIHZvaWQgcHJvY2Vzc05ld1ZpZGVvU2Ft
cGxlKE1lZGlhU2FtcGxlJiwgYm9vbCBoYXNDaGFuZ2VkT3JpZW50YXRpb24pOwogICAgIHZvaWQg
ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCByZXF1ZXN0Tm90aWZp
Y2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKQEAgLTIxMiw4ICsyMTMsNiBAQCBwcml2
YXRlOgogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZp
bmFsOwogCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChN
ZWRpYVNhbXBsZSYsIGJvb2wgZm9yY2VVcGRhdGUgPSBmYWxzZSk7Ci0KICAgICB2b2lkIGFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CiAKICAgICBib29sIGhpZGVSb290TGF5ZXIo
KSBjb25zdCB7IHJldHVybiAoIWFjdGl2ZVZpZGVvVHJhY2soKSB8fCBtX3dhaXRpbmdGb3JGaXJz
dEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQpAQCAtMjQ2LDkgKzI0
NSwxNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fdm9sdW1lIHsgMSB9OwogICAgIERpc3BsYXlN
b2RlIG1fZGlzcGxheU1vZGUgeyBOb25lIH07CiAgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNr
U3RhdGUgeyBQbGF5YmFja1N0YXRlOjpOb25lIH07Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUg
fTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3ZpZGVvVHJhbnNmb3JtOworICAgIE9wdGlvbmFs
PENHQWZmaW5lVHJhbnNmb3JtPiBtX3ZpZGVvVHJhbnNmb3JtOworCisgICAgLy8gVXNlZCBvbiBi
b3RoIG1haW4gdGhyZWFkIGFuZCBzYW1wbGUgdGhyZWFkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOworICAg
IExvY2sgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrOworICAgIGJvb2wgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgeyB0cnVlIH07CisgICAgLy8gV3JpdHRlbiBvbiBtYWluIHRocmVh
ZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgorICAgIGJvb2wgbV9jYW5FbnF1ZXVlRGlzcGxheUxh
eWVyIHsgZmFsc2UgfTsKKyAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQuCisgICAgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmUgfTsKKyAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNlIH07CiAK
ICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CkBAIC0yNTksMTMgKzI2NiwxMSBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRy
PFdlYlJvb3RTYW1wbGVCdWZmZXJCb3VuZHNDaGFuZ2VMaXN0ZW5lcj4gbV9ib3VuZHNDaGFuZ2VM
aXN0ZW5lcjsKIAotICAgIGJvb2wgbV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fcGxheWluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0Zy
YW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGVuZGluZ1NlbGVjdGVkVHJhY2tDaGVjayB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX3RyYW5zZm9ybUlzVmFsaWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV92aXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29sIG1faGF2ZVNlZW5NZXRhZGF0YSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJzdEltYWdlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQppbmRleCBiNDJjMDJjY2E4Yzc4YjIwZTkzYTMxMWRlZmFjZDY0YWQx
NmUxNzg5Li4xYTBjYWM2YWM5MzZmOTU4OTg3YjBlODk0N2MwZGM4MDUzYzZmMWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxwYWwvYXZm
b3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vQ2xvY2suaD4KKyNpbXBv
cnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTEzOSw3ICsxNDAsNyBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyhNZWRpYQogICAgICwgbV92aWRlb0xheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQz4obV9sb2dnZXIsIG1fbG9nSWRlbnRpZmllcikpCiB7CiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7Ci0gICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSBleHBlY3RzIGEgd2VhayBwb2ludGVyIHRvIGJlIGNy
ZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvU2FtcGxlIGV4cGVjdHMgYSB3ZWFrIHBvaW50
ZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgbV9ib3VuZHNDaGFuZ2VM
aXN0ZW5lciA9IGFkb3B0TlMoW1tXZWJSb290U2FtcGxlQnVmZmVyQm91bmRzQ2hhbmdlTGlzdGVu
ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIyNywxMSArMjI4LDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAt
CiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZmZXIgTWV0aG9kcwogCi1DR0FmZmluZVRyYW5zZm9y
bSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvVHJhbnNmb3JtYXRp
b25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSwgYm9vbCBmb3JjZVVwZGF0ZSkKK3N0YXRpYyBp
bmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNh
bXBsZSYgc2FtcGxlKQogewotICAgIGlmICghZm9yY2VVcGRhdGUgJiYgbV90cmFuc2Zvcm1Jc1Zh
bGlkKQotICAgICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKLQogICAgIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcjsKICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nh
c3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGVC
dWZmZXIpKTsKICAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxC
dWZmZXIpOwpAQCAtMjM5LDM3ICsyMzcsNTEgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkKICAg
ICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9y
bUlkZW50aXR5OwogCi0gICAgQVNTRVJUKG1fdmlkZW9Sb3RhdGlvbiA+PSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZSk7Ci0gICAgQVNTRVJUKG1fdmlkZW9Sb3RhdGlvbiA8PSBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCk7Ci0KLSAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihtX3ZpZGVvUm90
YXRpb24pICogTV9QSSAvIDE4MCk7CisgICAgYXV0byB2aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZVJvdGF0aW9uKHN0YXRpY19jYXN0PGludD4oc2FtcGxlLnZpZGVvUm90YXRp
b24oKSkgKiBNX1BJIC8gMTgwKTsKICAgICBpZiAoc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkKLSAg
ICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUobV92aWRlb1Ry
YW5zZm9ybSwgLTEsIDEpOworICAgICAgICB2aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtU2NhbGUodmlkZW9UcmFuc2Zvcm0sIC0xLCAxKTsKKworICAgIHJldHVybiB2aWRlb1RyYW5z
Zm9ybTsKK30KIAotICAgIG1fdHJhbnNmb3JtSXNWYWxpZCA9IHRydWU7Ci0gICAgcmV0dXJuIG1f
dmlkZW9UcmFuc2Zvcm07Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICBwcm9j
ZXNzTmV3VmlkZW9TYW1wbGUoc2FtcGxlLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlk
ZW9Sb3RhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCk7
CisgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKHNhbXBsZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSkKIHsKKyAgICBpZiAoIW1fY2FuRW5xdWV1ZURpc3BsYXlMYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckxvY2spOworICAgIGlmICghbG9ja2VyKQorICAgICAgICByZXR1cm47CisKICAg
ICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHx8IG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5kaWRGYWlsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzYW1wbGUudmlk
ZW9Sb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgp
ICE9IG1fdmlkZW9NaXJyb3JlZCkgewogICAgICAgICBtX3ZpZGVvUm90YXRpb24gPSBzYW1wbGUu
dmlkZW9Sb3RhdGlvbigpOwogICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9N
aXJyb3JlZCgpOwotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZm
aW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoc2FtcGxlLCB0cnVlKSk7Ci0g
ICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgo
c2FtcGxlKSk7CisgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyID0gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyKSB7CisgICAgICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCkuYm91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwor
ICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciA9IGZhbHNlOwogICAgIH0KKwogICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlU2FtcGxlKHNhbXBsZSk7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxl
LCAgYm9vbCBoYXNDaGFuZ2VkT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBzYW1wbGUgPSBtYWtlUmVmKHNhbXBsZSldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNhbXBsZSA9IG1ha2VS
ZWYoc2FtcGxlKSwgaGFzQ2hhbmdlZE9yaWVudGF0aW9uXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT52aWRlb1NhbXBsZUF2
YWlsYWJsZShzYW1wbGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNz
TmV3VmlkZW9TYW1wbGUoc2FtcGxlLmdldCgpLCBoYXNDaGFuZ2VkT3JpZW50YXRpb24pOwogICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3Nyw2ICsyODksOSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmIHNhbQogICAgIGlmICghbV9hY3RpdmVWaWRlb1RyYWNrKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoaGFzQ2hhbmdlZE9yaWVudGF0aW9uKQorICAgICAgICBtX3Zp
ZGVvVHJhbnNmb3JtID0geyB9OworCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBs
ZSB8fCBtX2Rpc3BsYXlNb2RlICE9IFBhdXNlZEltYWdlKSB7CiAgICAgICAgIG1faW1hZ2VQYWlu
dGVyLm1lZGlhU2FtcGxlID0gJnNhbXBsZTsKICAgICAgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFn
ZSA9IG51bGxwdHI7CkBAIC0yODcsOCArMzAyLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW0K
ICAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBMaXZlUHJldmlldyAmJiAhbV93YWl0aW5nRm9yRmly
c3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5xdWV1ZVZpZGVvU2FtcGxlKHNhbXBs
ZSk7Ci0KICAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewogICAgICAgICBt
X2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgPSB0cnVlOwogICAgICAgICBtX3BsYXllci0+Zmly
c3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CkBAIC0zMzUsNiArMzQ4LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFh
Y3RpdmVWaWRlb1RyYWNrIHx8ICFhY3RpdmVWaWRlb1RyYWNrLT5lbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIG1fY2FuRW5xdWV1ZURpc3BsYXlMYXllciA9IGZhbHNlOwogICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVh
dGUoKnRoaXMpOwogICAgIEVSUk9SX0xPR19JRighbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIs
IExPR0lERU5USUZJRVIsICJDcmVhdGluZyB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZh
aWxlZC4iKTsKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtMzUxLDE2
ICszNjUsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
c3VyZUxheWVycygpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdXBk
YXRlUmVuZGVyaW5nTW9kZSgpOwotICAgICAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKKyAgICAg
ICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIgPSB0cnVlOwogCiAgICAgICAgIG1fdmlkZW9M
YXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJv
b3RMYXllcigpLCBzaXplKTsKIAogICAgICAgICBbbV9ib3VuZHNDaGFuZ2VMaXN0ZW5lciBiZWdp
bjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCldOworCisgICAgICAgIG1f
Y2FuRW5xdWV1ZURpc3BsYXlMYXllciA9IHRydWU7CiAgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95TGF5ZXJzKCkKIHsKKyAgICBt
X2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrKTsKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0g
bnVsbHB0cjsKIApAQCAtNjYxLDcgKzY4MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdNb2RlKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKLSAgICAgICAgbV90cmFuc2Zvcm1J
c1ZhbGlkID0gZmFsc2U7CisgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB7IH07CiAgICAgICAg
IGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxheWVyLT5yZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwogICAgIH0pOwpAQCAtOTQ0LDcgKzk2Myw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0Nv
CiAKICAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5nZXQoKTsKICAgICBG
bG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UpKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2
aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7Cisg
ICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQorICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlk
ZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOworICAg
IEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJhbnNmb3JtOwogICAg
IEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3QpOwogICAgIGNvbnRl
eHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0
KTsKQEAgLTEwMTAsMTcgKzEwMzEsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogICAgIHBpeGVsQnVmZmVy
Q29uZm9ybWVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlMYXllcigpCi17Ci0gICAgaWYgKCFtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5yb290TGF5ZXIoKS5ib3VuZHMsIG1fdmlkZW9Sb3RhdGlvbik7Ci19Ci0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyb290TGF5ZXJCb3VuZHNEaWRD
aGFuZ2UoKQogewotICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOworICAgIG1fc2hvdWxkVXBkYXRl
RGlzcGxheUxheWVyID0gdHJ1ZTsKIH0KIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsb2dDaGFubmVsKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400799</attachid>
            <date>2020-06-02 02:30:24 -0700</date>
            <delta_ts>2020-06-02 04:24:24 -0700</delta_ts>
            <desc>Patch for relanding</desc>
            <filename>bug-212073-20200602113022.patch</filename>
            <type>text/plain</type>
            <size>22241</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIwMGUxZGExYmRlNDM0
MDA2ZTY3OGNkNWNjYzI3OWI4MGU2N2UwNC4uYjI1OWZiZGFiOGUzZTNhODhhZGMxMTdkNTlmOTgx
YmIwMjQ3YzRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgc2hvdWxkIGVucXVldWUgc2FtcGxlcyBpbiBhIGJhY2tncm91
bmQgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTIwNzMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
RG8gbm90IGhvcCB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiByZW5kZXJpbmcgdmlkZW8gc2FtcGxl
cyBhbnltb3JlLgorICAgICAgICBJbnN0ZWFkLCB3ZSBlbnF1ZXVlIHRvIHRoZSBkaXNwbGF5IGxh
eWVyIGluIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCBidXQgc3RpbGwgaG9wIHRvIHRoZSBtYWluIHRo
cmVhZCBmb3IgdHdvIHRoaW5nczoKKyAgICAgICAgLSBVcGRhdGUgb2YgdmFyaW91cyBzdGF0ZXMg
b2YgdGhlIHBsYXllcgorICAgICAgICAtIGtlZXAgYSByZWYgdG8gdGhlIHZpZGVvIHNhbXBsZSBp
ZiBjYW52YXMgcmVuZGVyaW5nIGlzIG5lZWRlZC4KKworICAgICAgICBNb3N0IGRpc3BsYXkgbGF5
ZXIgb3BlcmF0aW9ucyBzdGF5IGluIHRoZSBtYWluIHRocmVhZCAoY3JlYXRpb24sIGZsdXNoaW5n
Li4uKS4KKyAgICAgICAgRGVsZXRpb24gb2YgdGhlIGRpc3BsYXkgbGF5ZXIgYW5kIGFjY2VzcyBm
cm9tIGEgYmFja2dyb3VuZCBhcmUgY292ZXJlZCBieSBhIGxvY2suCisgICAgICAgIFRoZSBtX2Nh
bkVucXVldWVEaXNwbGF5TGF5ZXIgYm9vbGVhbiBlbnN1cmVzIHdlIGRvIG5vdCBlbnF1ZXVlIHRv
byBlYXJseSB3aGVuIHRoZSBkaXNwbGF5IGxheWVyIGlzIG5vdCB5ZXQgcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCisKKyAgICAgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgbmVlZHMgdG8g
aGFuZGxlIHRoZSBmYWN0IHRoYXQgZW5xdWV1ZWluZyBtaWdodCBiZSBkb25lIGluIGEgYmFja2dy
b3VuZCB0aHJlYWQuCisgICAgICAgIEluc3RlYWQgb2YgaW50cm9kdWNpbmcgYSBsb2NrLCB3ZSBp
bnRyb2R1Y2UgYSB3b3JrIHF1ZXVlIGFuZCB3ZSBob3AgdG8gdGhpcyBxdWV1ZSB3aGVuZXZlciB3
ZSBuZWVkIHRvIGVucXVldWUvbXV0YXRlIHRoZSBwZW5kaW5nIHNhbXBsZXMuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyBhbmQgbWFudWFsIHRlc3RpbmcuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOgorICAgICAgICAoLVtXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZP
YmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNh
dGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmlkZW9U
cmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJl
bmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVv
VHJhbnNmb3JtYXRpb25NYXRyaXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1w
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TGF5ZXIpOiBEZWxldGVkLgorCiAyMDIwLTA2LTAx
ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIHVuaWNv
ZGUtYmlkaTppc29sYXRlIHRoZSBkZWZhdWx0IGZvciBhbiBlbGVtZW50IHdpdGggYSBkaXIgYXR0
cmlidXRlIChpbnN0ZWFkIG9mIHVuaWNvZGUtYmlkaTplbWJlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDlj
OWRjYTJhNWMxZGM4NDVhODM4N2E3NTZmMDU3ZGQ2MzRhODFlNWYuLmJkNjE2OGYwOWY1ZjQyNWE2
MDljZDY4YWVjYmRiY2ZlNmFjYWU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMzEsMTMgKzMxLDE0IEBA
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBPQkpD
X0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBs
ZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZpbmFsIDog
cHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgcHVibGljIENhbk1ha2VXZWFrUHRyPExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmaW5hbCA6IHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUoQ2xpZW50Jik7CkBAIC03OCwxMyAr
NzksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1
ZXVlKCk7CiAgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYpOwog
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAg
IHZvaWQgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwogCiBwcml2YXRlOgogICAg
IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1
c0NoYW5nZUxpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fcm9vdExheWVyOwogICAgIFJlbmRlclBvbGljeSBtX3JlbmRlclBvbGljeSB7IFJlbmRl
clBvbGljeTo6VGltaW5nSW5mbyB9OworICAgIAorICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJv
Y2Vzc2luZ1F1ZXVlOwogCisgICAgLy8gT25seSBhY2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2lu
Z1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVlIGlzIG51bGwuCiAgICAgdXNpbmcgUGVuZGlu
Z1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CiAgICAgUGVuZGluZ1NhbXBs
ZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRleCA1
MGNiNDlhZDcxOTQzNGM3ODJiZTcyYmI5Y2M5OTY4ZjEwN2RmOWU5Li43MGIzYzQ0ZjNjYzBmYjI0
ZWM4OTAyOGU1ODI1YTNlZDgwOGNiNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtNDAsNiArNDAsNyBA
QAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1l
Lmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKyNpbXBvcnQgPHd0Zi90aHJlYWRz
L0JpbmFyeVNlbWFwaG9yZS5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29m
dExpbmsuaD4KIApAQCAtMTA1LDMzICsxMDYsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsK
ICAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKLSAgICBBU1NFUlQoX3BhcmVudCk7CiAKLSAgICBp
ZiAoIV9wYXJlbnQpCisgICAgaWYgKCFbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJDbGFzcygpXSkgewotICAgICAgICBBU1NFUlQob2JqZWN0ID09IF9wYXJlbnQtPmRpc3BsYXlM
YXllcigpKTsKLQotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic3RhdHVz
Il0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRh
aW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLQorICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0
dXMiXSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWlu
UHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpXSB7CisgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKICAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZSgpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiZXJyb3IiXSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0No
YW5nZUxpc3RlbmVyPihzZWxmKV0gewotICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2Vs
Zi0+X3BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJlcnJvciJdKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBS
ZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsK
KyAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQogICAgICAgICAgICAgICAg
IHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CiAgICAgfQogfQogQGVuZApAQCAtMTYwLDYgKzE1Miw3IEBAIExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRh
aW5QdHI8QVZTYW1wbGVCCiAgICAgOiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoY2xpZW50KQog
ICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJT
dGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoV1RGTW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpKQorICAgICwgbV9wcm9jZXNzaW5nUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHF1ZXVlIikpCiB7CiB9CiAKQEAgLTE5MSw2ICsxODQsMTQg
QEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6aW5pdGlhbGl6ZShib29sIGhp
ZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSwKIAogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6On5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpCiB7CisgICAgQmluYXJ5U2VtYXBo
b3JlIHNlbWFwaG9yZTsKKyAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goWyZzZW1hcGhv
cmVdIHsKKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9y
ZS53YWl0KCk7CisKKyAgICBtX3Byb2Nlc3NpbmdRdWV1ZSA9IG51bGxwdHI7CisKICAgICBbbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wXTsKIAogICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWUuY2xlYXIoKTsKQEAgLTI4MSwyMyArMjgyLDM1IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3Vu
CiAKIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmZsdXNoKCkKIHsKLSAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fcHJvY2Vzc2luZ1F1ZXVl
LT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
Zmx1c2hdOworICAgIH0pOwogfQogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpmbHVzaEFuZFJlbW92ZUltYWdlKCkKIHsKLSAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNo
KFt0aGlzXSB7CisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaEFuZFJl
bW92ZUltYWdlXTsKKyAgICB9KTsKIH0KIAogc3RhdGljIGNvbnN0IGRvdWJsZSByZW5kZXJlckxh
dGVuY3kgPSAwLjAyOwogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1
ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgaWYgKCFbbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgIGFkZFNh
bXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7Ci0gICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25X
aGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3By
b2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9IG1ha2VSZWYoc2FtcGxlKV0g
eworICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9y
ZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBs
ZSk7CisgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRh
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcihzYW1wbGUpOworICAgIH0pOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIHNhbXBsZVRvRW5xdWV1ZSA9
IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKICAgICBhdXRv
IG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25vdG9uaWNUaW1lOjpub3coKS5z
ZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyByZW5kZXJlckxhdGVuY3kpOwpAQCAtMzE1LDYg
KzMyOCw4IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1w
bGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIAogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKQogeworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCiAgICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMzNCwxOSArMzQ5LDIzIEBAIHZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1
ZXVlKCkKIAogdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2FtcGxlVG9Q
ZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKwogICAgIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CiAgICAg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5hcHBlbmQoc2FtcGxlKTsKIH0KIAogdm9pZCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQogewotICAg
IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAgICBtX3Byb2Nlc3NpbmdRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5j
bGVhcigpOworICAgIH0pOwogfQogCiB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKIHsKICAgICBhdXRv
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
cmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9wcm9jZXNzaW5nUXVldWUtPmRpc3Bh
dGNoUXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTM1OCw4ICszNzcsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1
dG8gc2FtcGxlID0gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAg
ICAgICAgIGVucXVldWVTYW1wbGUoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgICAgIGVucXVldWVT
YW1wbGVCdWZmZXIobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKS5nZXQoKSk7
CiAgICAgICAgIH0KICAgICB9XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggODZi
Y2JhMDY3MjlhMDlmZmJmOWM1MWZjOTA0YTEzODhlNzcwZWVjYS4uOGRlODk1ZDdiMjQxMThmZGIy
OGZhYzM5Y2IxYmZiZTk4YjhmNzYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTEz
Nyw2ICsxMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmbHVzaFJlbmRlcmVycygpOwogCisg
ICAgdm9pZCBwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmLCBib29sIGhhc0NoYW5n
ZWRPcmllbnRhdGlvbik7CiAgICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUm
KTsKICAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsK
IApAQCAtMjEyLDggKzIxMyw2IEBAIHByaXZhdGU6CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVy
KiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKLSAgICBDR0FmZmluZVRyYW5zZm9ybSB2
aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiwgYm9vbCBmb3JjZVVwZGF0ZSA9
IGZhbHNlKTsKLQogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSBmaW5hbDsK
IAogICAgIGJvb2wgaGlkZVJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuICghYWN0aXZlVmlkZW9U
cmFjaygpIHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UpICYmIG1fZGlzcGxheU1vZGUgIT0gUGFp
bnRJdEJsYWNrOyB9CkBAIC0yNDYsOSArMjQ1LDE3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV92
b2x1bWUgeyAxIH07CiAgICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZSB7IE5vbmUgfTsKICAg
ICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IFBsYXliYWNrU3RhdGU6Ok5vbmUgfTsK
LSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwotICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdmlk
ZW9UcmFuc2Zvcm07CisgICAgT3B0aW9uYWw8Q0dBZmZpbmVUcmFuc2Zvcm0+IG1fdmlkZW9UcmFu
c2Zvcm07CisKKyAgICAvLyBVc2VkIG9uIGJvdGggbWFpbiB0aHJlYWQgYW5kIHNhbXBsZSB0aHJl
YWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CisgICAgTG9jayBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckxvY2s7CisgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciB7IHRydWUgfTsKKyAg
ICAvLyBXcml0dGVuIG9uIG1haW4gdGhyZWFkLCByZWFkIG9uIHNhbXBsZSB0aHJlYWQuCisgICAg
Ym9vbCBtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgeyBmYWxzZSB9OworICAgIC8vIFVzZWQgb24g
c2FtcGxlIHRocmVhZC4KKyAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgIGJvb2wgbV92
aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2Vy
OwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKQEAgLTI1OSwxMyArMjY2LDExIEBA
IHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9vdFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5n
ZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVyOwogCi0gICAgYm9vbCBtX3ZpZGVvTWly
cm9yZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1fbXV0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5k
aW5nU2VsZWN0ZWRUcmFja0NoZWNrIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdHJhbnNmb3JtSXNW
YWxpZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXZlU2Vlbk1ldGFkYXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0
SW1hZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGI0MmMwMmNj
YThjNzhiMjBlOTNhMzExZGVmYWNkNjRhZDE2ZTE3ODkuLjFhMGNhYzZhYzkzNmY5NTg5ODdiMGU4
OTQ3YzBkYzgwNTNjNmYxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTQxLDYg
KzQxLDcgQEAKICNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9u
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8
cGFsL3N5c3RlbS9DbG9jay5oPgorI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMTM5LDcg
KzE0MCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgLCBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyKG1ha2VVbmlxdWU8VmlkZW9MYXllck1hbmFnZXJPYmpDPihtX2xvZ2dlciwgbV9sb2dJZGVu
dGlmaWVyKSkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICAvLyBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIGV4cGVj
dHMgYSB3ZWFrIHBvaW50ZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAg
Ly8gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9T
YW1wbGUgZXhwZWN0cyBhIHdlYWsgcG9pbnRlciB0byBiZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1
Y3Rvci4KICAgICBtX2JvdW5kc0NoYW5nZUxpc3RlbmVyID0gYWRvcHROUyhbW1dlYlJvb3RTYW1w
bGVCdWZmZXJCb3VuZHNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI3LDExICsyMjgsOCBAQCBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9y
dHNUeXBlKGNvbgogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlciBN
ZXRob2RzCiAKLUNHQWZmaW5lVHJhbnNmb3JtIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRpYVNhbXBsZSYgc2FtcGxlLCBi
b29sIGZvcmNlVXBkYXRlKQorc3RhdGljIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSB2aWRlb1Ry
YW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Ci0gICAgaWYgKCFmb3Jj
ZVVwZGF0ZSAmJiBtX3RyYW5zZm9ybUlzVmFsaWQpCi0gICAgICAgIHJldHVybiBtX3ZpZGVvVHJh
bnNmb3JtOwotCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLnBs
YXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwogICAgIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZUJ1ZmZlcikpOwogICAgIHNpemVfdCB3aWR0aCA9IENW
UGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcik7CkBAIC0yMzksMzcgKzIzNyw1MSBAQCBD
R0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZp
ZGVvVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKICAgICAg
ICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAKLSAgICBBU1NFUlQobV92aWRl
b1JvdGF0aW9uID49IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKTsKLSAgICBBU1NF
UlQobV92aWRlb1JvdGF0aW9uIDw9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0KTsK
LQotICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihz
dGF0aWNfY2FzdDxpbnQ+KG1fdmlkZW9Sb3RhdGlvbikgKiBNX1BJIC8gMTgwKTsKKyAgICBhdXRv
IHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nh
c3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwogICAgIGlmIChz
YW1wbGUudmlkZW9NaXJyb3JlZCgpKQotICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZp
bmVUcmFuc2Zvcm1TY2FsZShtX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CisgICAgICAgIHZpZGVv
VHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2aWRlb1RyYW5zZm9ybSwgLTEsIDEp
OworCisgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOworfQogCi0gICAgbV90cmFuc2Zvcm1Jc1Zh
bGlkID0gdHJ1ZTsKLSAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtcGxlKQoreworICAgIHByb2Nlc3NOZXdWaWRlb1NhbXBsZShzYW1wbGUsIHNhbXBs
ZS52aWRlb1JvdGF0aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9uIHx8IHNhbXBsZS52aWRlb01pcnJv
cmVkKCkgIT0gbV92aWRlb01pcnJvcmVkKTsKKyAgICBlbnF1ZXVlVmlkZW9TYW1wbGUoc2FtcGxl
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVl
dWVWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogeworICAgIGlmICghbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IHRy
eUhvbGRMb2NrKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgaWYgKCFsb2Nr
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgfHwgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9u
IHx8IHNhbXBsZS52aWRlb01pcnJvcmVkKCkgIT0gbV92aWRlb01pcnJvcmVkKSB7CiAgICAgICAg
IG1fdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7CiAgICAgICAgIG1fdmlk
ZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7Ci0gICAgICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlv
bk1hdHJpeChzYW1wbGUsIHRydWUpKTsKLSAgICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Cisg
ICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0o
dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUpKTsKKyAgICAgICAgbV9zaG91bGRVcGRh
dGVEaXNwbGF5TGF5ZXIgPSB0cnVlOworICAgIH0KKyAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNw
bGF5TGF5ZXIpIHsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUJv
dW5kc0FuZFBvc2l0aW9uKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKS5i
b3VuZHMsIG1fdmlkZW9Sb3RhdGlvbik7CisgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxh
eWVyID0gZmFsc2U7CiAgICAgfQorCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVu
cXVldWVTYW1wbGUoc2FtcGxlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVv
U2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsICBib29sIGhhc0NoYW5nZWRPcmllbnRhdGlvbikK
IHsKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNhbXBsZSA9IG1ha2VSZWYoc2FtcGxlKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgc2FtcGxlID0gbWFrZVJlZihzYW1wbGUpLCBoYXNDaGFuZ2VkT3JpZW50YXRp
b25dKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPnZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPnByb2Nlc3NOZXdWaWRlb1NhbXBsZShzYW1wbGUuZ2V0KCksIGhh
c0NoYW5nZWRPcmllbnRhdGlvbik7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjc3LDYgKzI4OSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtCiAgICAgaWYgKCFt
X2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChoYXNDaGFuZ2Vk
T3JpZW50YXRpb24pCisgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB7IH07CisKICAgICBpZiAo
IW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2VkSW1h
Z2UpIHsKICAgICAgICAgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgPSAmc2FtcGxlOwogICAg
ICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKQEAgLTI4Nyw4ICszMDIsNiBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbQogICAgIGlmIChtX2Rpc3BsYXlNb2RlICE9IExpdmVQ
cmV2aWV3ICYmICFtX3dhaXRpbmdGb3JGaXJzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBlbnF1ZXVlVmlkZW9TYW1wbGUoc2FtcGxlKTsKLQogICAgIGlmICghbV9oYXNFdmVyRW5xdWV1
ZWRWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSA9IHRy
dWU7CiAgICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKQEAgLTMz
NSw2ICszNDgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
ZW5zdXJlTGF5ZXJzKCkKICAgICBpZiAoIWFjdGl2ZVZpZGVvVHJhY2sgfHwgIWFjdGl2ZVZpZGVv
VHJhY2stPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9jYW5FbnF1ZXVlRGlz
cGxheUxheWVyID0gZmFsc2U7CiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgRVJST1JfTE9HX0lGKCFt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgTE9HSURFTlRJRklFUiwgIkNyZWF0aW5nIHRoZSBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmFpbGVkLiIpOwogICAgIGlmICghbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpCkBAIC0zNTEsMTYgKzM2NSwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICB1cGRhdGVSZW5kZXJpbmdNb2RlKCk7Ci0gICAgICAgIHVw
ZGF0ZURpc3BsYXlMYXllcigpOworICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciA9
IHRydWU7CiAKICAgICAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCksIHNpemUpOwogCiAgICAgICAgIFtt
X2JvdW5kc0NoYW5nZUxpc3RlbmVyIGJlZ2luOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5y
b290TGF5ZXIoKV07CisKKyAgICAgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gdHJ1ZTsK
ICAgICB9KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmRlc3Ryb3lMYXllcnMoKQogeworICAgIG1fY2FuRW5xdWV1ZURpc3BsYXlMYXllciA9IGZhbHNl
OworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckxvY2spOwogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBudWxscHRyOwogCkBAIC02NjEsNyArNjgwLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVJlbmRlcmlu
Z01vZGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhp
c10gewotICAgICAgICBtX3RyYW5zZm9ybUlzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbV92aWRl
b1RyYW5zZm9ybSA9IHsgfTsKICAgICAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9w
bGF5ZXItPnJlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiAgICAgfSk7CkBAIC05NDQsNyArOTYzLDkg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KIAogICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdlUGFp
bnRlci5jZ0ltYWdlLmdldCgpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOwotICAgIEFmZmluZVRy
YW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1h
Z2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0pCisgICAg
ICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdl
UGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3Jt
ID0gKm1fdmlkZW9UcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3Qg
PSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UmVjdChkZXN0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwog
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFu
c2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwpAQCAtMTAxMCwxNyArMTAzMSw5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpDdXJyZW50RnJhbWVQYWludGVy
OjpyZXNldCgpCiAgICAgcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBudWxscHRyOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxheWVy
KCkKLXsKLSAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQm91bmRzQW5kUG9z
aXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpLmJvdW5kcywgbV92
aWRlb1JvdGF0aW9uKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpCiB7Ci0gICAgdXBkYXRlRGlzcGxheUxh
eWVyKCk7CisgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIgPSB0cnVlOwogfQogCiBXVEZM
b2dDaGFubmVsJiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvZ0NoYW5u
ZWwoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>