<?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>221437</bug_id>
          
          <creation_ts>2021-02-04 16:28:01 -0800</creation_ts>
          <short_desc>[LFC][IFC] Incorrect last potential wrap position when inline box is present</short_desc>
          <delta_ts>2021-04-27 09:48:25 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225086</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>mic.gallego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1725868</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-02-04 16:28:01 -0800</bug_when>
    <thetext>The trailing run of the candidate content is not always a valid wrap opportunity see:
this_is_the_trailing_run&lt;span&gt; &lt;-but_this_space_here_is_the_soft_wrap_opportunity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725874</commentid>
    <comment_count>1</comment_count>
      <attachid>419340</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-02-04 16:49:43 -0800</bug_when>
    <thetext>Created attachment 419340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726040</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-05 06:29:27 -0800</bug_when>
    <thetext>Committed r272412: &lt;https://trac.webkit.org/changeset/272412&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419340.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726042</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-05 06:30:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74023255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754652</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-27 09:48:25 -0700</bug_when>
    <thetext>*** Bug 225086 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419340</attachid>
            <date>2021-02-04 16:49:43 -0800</date>
            <delta_ts>2021-02-05 06:29:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221437-20210204164942.patch</filename>
            <type>text/plain</type>
            <size>24714</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY0Y2Q2NGVkNzc4Yjhh
NTY0ZTQwZDdmNTkwNTdjODYxNzZhN2M1Mi4uMmY4YjE3NzJjNTdlMzU2YTE1OWEyNmZlM2M1Mzlm
NWI2YjE2ZjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTAyLTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmNvcnJl
Y3QgbGFzdCBwb3RlbnRpYWwgd3JhcCBwb3NpdGlvbiB3aGVuIGlubGluZSBib3ggaXMgcHJlc2Vu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDM3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRy
YWlsaW5nIHJ1biBvZiB0aGUgY29udGludW91cyBjb250ZW50IGlzIG5vdCBuZWNlc3NhcmlseSBh
IGxlZ2FsIHdyYXAgcG9zaXRpb24uCisgICAgICAgIEluIHNvbWUgY2FzZXMgd2hlbiB0aGUgdGV4
dCBjb250ZW50IGlzIGVtYmVkZGVkIGluIGFuIGlubGluZSBib3gsIHRoZSB3cmFwIHBvc2l0aW9u
IG1heSBiZSBwYXJ0IG9mCisgICAgICAgIHRoZSBzdWJzZXF1ZW50IGNvbnRlbnQgZS5nLgorICAg
ICAgICAKKyAgICAgICAgPGRpdj5jb250ZW50PHNwYW4+IDwtc3BhY2U8L3NwYW4+PC9kaXY+Cisg
ICAgICAgIAorICAgICAgICBUaGlzIG1hcHMgdG8gdGhlIGZvbGxvd2luZyBzZXQgb2YgaW5saW5l
IGl0ZW1zOgorICAgICAgICBbY29udGVudF1baW5saW5lIGJveCBzdGFydF1bIF1bPC1zcGFjZV1b
aW5saW5lIGJveCBlbmRdCisgICAgICAgIAorICAgICAgICBUaGlzIGNvbnRlbnQgcHJvZHVjZXMg
MyBzZXRzIG9mIGNvbnRpbnVvdXMgY29udGVudCBmb3IgbGluZSBicmVha2luZworICAgICAgICBb
bm9uLXdoaXRlc3BhY2UgY29udGVudF0KKyAgICAgICAgW2lubGluZSBib3ggc3RhcnRdW3doaXRl
c3BhY2UgY29udGVudF0KKyAgICAgICAgW25vbi13aGl0ZXNwYWNlIGNvbnRlbnRdW2lubGluZSBi
b3ggZW5kXQorCisgICAgICAgIFdoaWxlIHRoZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgaXMgYXQg
W3doaXRlc3BhY2UgY29udGVudF0sIHRoZSBjb250ZW50IGJvdW5kYXJ5IGlzIGF0IGEgZGlmZmVy
ZW50IHBvc2l0aW9uLCByaWdodCBiZWZvcmUKKyAgICAgICAgdGhlIFtpbmxpbmUgYm94IHN0YXJ0
XSBzaW5jZSB0aGUgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBib3ggYWx3YXlzIGJlbG9uZ3Mg
dG8gdGhlIGlubGluZSBib3guCisgICAgICAgIChhcyBvcHBvc2VkIHRvIFtub24td2hpdGVzcGFj
ZSBjb250ZW50XVtpbmxpbmUgYm94IHN0YXJ0XSBhbmQgYSBzZXBhcmF0ZSBbd2hpdGVzcGFjZSBj
b250ZW50XSBzZXQpCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCB3ZSBzdGFydCB0cmFja2luZyB0
aGUgImhhcyB0cmFpbGluZyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkiIGluIExpbmVDYW5kaWRhdGUg
YW5kIHBhc3MgaXQgdG8gdGhlIElubGluZUNvbnRlbnRCcmVha2VyCisgICAgICAgIGFzIHBhcnQg
b2YgdGhlIGxpbmUgc3RhdHVzLgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6aXNXcmFwcGluZ0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc0lubGluZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJm
bG93aW5nQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNv
bnRlbnRCcmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0aFRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6d29yZEJyZWFr
QmVoYXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50
QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6aXNXcmFwcGluZ0FsbG93ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpsYXN0V3JhcE9wcG9ydHVuaXR5SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUNvbnRlbnRCcmVha2VyLmg6CisgICAgICAgICogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjpzZXRIYXNUcmFpbGlu
Z1NvZnRXcmFwT3Bwb3J0dW5pdHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQ2Fu
ZGlkYXRlOjpJbmxpbmVDb250ZW50OjpoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29u
dGVudEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aGFu
ZGxlSW5saW5lQ29udGVudCk6CisKIDIwMjEtMDItMDQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciAid29yZCBzZXBh
cmF0b3IiIHdoZW4gdGhlIHdoaXRlc3BhY2UgY29udGVudCBoYXMgbXVsdGlwbGUgY2hhcmFjdGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCmluZGV4IDdhMDk0MDlmYzNjNDk2YmU2MTE4
MzM0N2ZhOGNiOTNmYTIxOTVkYmQuLmU5NjVjZDU3YWQ2MDhkOTc1MzBkNDA2MmUxYmM4NDNiM2I2
YzZjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKQEAgLTExMiwyMiArMTEyLDEx
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c2l6ZV90PiBmaXJzdFRleHRSdW5JbmRleChjb25z
dCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29uCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGlj
IGlubGluZSBib29sIGlzV3JhcHBpbmdBbGxvd2VkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
K2Jvb2wgSW5saW5lQ29udGVudEJyZWFrZXI6OmlzV3JhcHBpbmdBbGxvd2VkKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0pCiB7CisgICAgYXV0byYgc3R5bGVUb1VzZSA9IGlubGluZUl0ZW0u
aXNCb3goKSA/IGlubGluZUl0ZW0ubGF5b3V0Qm94KCkucGFyZW50KCkuc3R5bGUoKSA6IGlubGlu
ZUl0ZW0ubGF5b3V0Qm94KCkuc3R5bGUoKTsgCiAgICAgLy8gRG8gbm90IHRyeSB0byB3cmFwIG92
ZXJmbG93biAncHJlJyBhbmQgJ25vLXdyYXAnIGNvbnRlbnQgdG8gbmV4dCBsaW5lLgotICAgIHJl
dHVybiBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gV2hpdGVTcGFjZTo6UHJlICYmIHN0eWxlLndoaXRl
U3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8c2l6ZV90PiBsYXN0V3JhcE9wcG9ydHVuaXR5SW5kZXgoY29uc3QgSW5saW5lQ29udGVudEJy
ZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5MaXN0KQotewotICAgIC8vIDxz
cGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlIj5ub193cmFwPC9zcGFuPjxzcGFuPnllcyB3cmFw
PC9zcGFuPjxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlIj5ub193cmFwPC9zcGFuPi4KLSAg
ICAvLyBbY29udGFpbmVyIHN0YXJ0XVtub193cmFwXVtjb250YWluZXIgZW5kXVtjb250YWluZXIg
c3RhcnRdW3llc10gPC0gY29udGludW91cyBjb250ZW50Ci0gICAgLy8gWyBdIDwtIGNvbnRpbnVv
dXMgY29udGVudAotICAgIC8vIFt3cmFwXVtjb250YWluZXIgZW5kXVtjb250YWluZXIgc3RhcnRd
W25vX3dyYXBdW2NvbnRhaW5lciBlbmRdIDwtIGNvbnRpbnVvdXMgY29udGVudAotICAgIC8vIFJl
dHVybiAjMCBhcyB0aGUgaW5kZXggd2hlcmUgdGhlIHNlY29uZCBjb250aW51b3VzIGNvbnRlbnQg
Y2FuIHdyYXAgYXQuCi0gICAgQVNTRVJUKCFydW5MaXN0LmlzRW1wdHkoKSk7Ci0gICAgYXV0byBs
YXN0SXRlbUluZGV4ID0gcnVuTGlzdC5zaXplKCkgLSAxOwotICAgIHJldHVybiBpc1dyYXBwaW5n
QWxsb3dlZChydW5MaXN0W2xhc3RJdGVtSW5kZXhdLmlubGluZUl0ZW0uc3R5bGUoKSkgPyBtYWtl
T3B0aW9uYWwobGFzdEl0ZW1JbmRleCkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0eWxl
VG9Vc2Uud2hpdGVTcGFjZSgpICE9IFdoaXRlU3BhY2U6OlByZSAmJiBzdHlsZVRvVXNlLndoaXRl
U3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXA7CiB9CiAKIGJvb2wgSW5saW5lQ29udGVudEJy
ZWFrZXI6OnNob3VsZEtlZXBFbmRPZkxpbmVXaGl0ZXNwYWNlKGNvbnN0IENvbnRpbnVvdXNDb250
ZW50JiBjb250aW51b3VzQ29udGVudCkgY29uc3QKQEAgLTE1NCwzMSArMTQzLDEyIEBAIElubGlu
ZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NJbmxp
bmVDb250ZW50KGNvbnN0IENvCiAgICAgfTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcHJvY2Vzc0Nh
bmRpZGF0ZUNvbnRlbnQoKTsKLSAgICBpZiAocmVzdWx0LmFjdGlvbiA9PSBSZXN1bHQ6OkFjdGlv
bjo6S2VlcCkgewotICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgZW5kIG9mIHRoZSBsaW5l
LCBob2xkIG9uIHRvIHRoZSBsYXN0IGVsaWdpYmxlIGxpbmUgd3JhcCBvcHBvcnR1bml0eSBzbyB0
aGF0IHdlIGNvdWxkIHJldmVydCBiYWNrCi0gICAgICAgIC8vIHRvIHRoaXMgcG9zaXRpb24gaWYg
bm8gb3RoZXIgbGluZSBicmVha2luZyBvcHBvcnR1bml0eSBleGlzdHMgaW4gdGhpcyBjb250ZW50
LgotICAgICAgICBpZiAoYXV0byBsYXN0TGluZVdyYXBPcHBvcnR1bml0eUluZGV4ID0gbGFzdFdy
YXBPcHBvcnR1bml0eUluZGV4KGNhbmRpZGF0ZUNvbnRlbnQucnVucygpKSkgewotICAgICAgICAg
ICAgYXV0byBpc0VsaWdpYmxlTGluZVdyYXBPcHBvcnR1bml0eSA9IFsmXSAoYXV0byYgY2FuZGlk
YXRlSXRlbSkgewotICAgICAgICAgICAgICAgIC8vIEp1c3QgY2hlY2sgZm9yIGxlYWRpbmcgcHJl
c2VydmVkIHdoaXRlc3BhY2UgZm9yIG5vdy4KLSAgICAgICAgICAgICAgICBpZiAobGluZVN0YXR1
cy5oYXNDb250ZW50IHx8ICFpczxJbmxpbmVUZXh0SXRlbT4oY2FuZGlkYXRlSXRlbSkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGF1dG8gaW5saW5l
VGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oY2FuZGlkYXRlSXRlbSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICFpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSB8fCBJbmxp
bmVUZXh0SXRlbTo6c2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJzKGlubGluZVRleHRJdGVtKTsK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhdXRvJiBsYXN0V3JhcE9wcG9ydHVuaXR5Q2Fu
ZGlkYXRlSXRlbSA9IGNhbmRpZGF0ZUNvbnRlbnQucnVucygpWypsYXN0TGluZVdyYXBPcHBvcnR1
bml0eUluZGV4XS5pbmxpbmVJdGVtOwotICAgICAgICAgICAgaWYgKGlzRWxpZ2libGVMaW5lV3Jh
cE9wcG9ydHVuaXR5KGxhc3RXcmFwT3Bwb3J0dW5pdHlDYW5kaWRhdGVJdGVtKSkgewotICAgICAg
ICAgICAgICAgIHJlc3VsdC5sYXN0V3JhcE9wcG9ydHVuaXR5SXRlbSA9ICZsYXN0V3JhcE9wcG9y
dHVuaXR5Q2FuZGlkYXRlSXRlbTsKLSAgICAgICAgICAgICAgICBtX2hhc1dyYXBPcHBvcnR1bml0
eUF0UHJldmlvdXNQb3NpdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKHJlc3VsdC5hY3Rpb24gPT0gUmVzdWx0OjpBY3Rpb246OldyYXApIHsKLSAg
ICAgICAgaWYgKGxpbmVTdGF0dXMudHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGggJiYgaGFzTGVhZGlu
Z1RleHRDb250ZW50KGNhbmRpZGF0ZUNvbnRlbnQpKSB7Ci0gICAgICAgICAgICAvLyBBIHRyYWls
aW5nIHNvZnQgaHlwaGVuIHdpdGggYSB3cmFwcGVkIHRleHQgY29udGVudCB0dXJucyBpbnRvIGEg
dmlzaWJsZSBoeXBoZW4uCi0gICAgICAgICAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSdzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIGh5cGhlbiBjaGFyYWN0ZXIuCi0gICAgICAgICAgICBhdXRvIGh5
cGhlbk92ZXJmbG93cyA9ICpsaW5lU3RhdHVzLnRyYWlsaW5nU29mdEh5cGhlbldpZHRoID4gbGlu
ZVN0YXR1cy5hdmFpbGFibGVXaWR0aDsgCi0gICAgICAgICAgICBhdXRvIGFjdGlvbiA9IGh5cGhl
bk92ZXJmbG93cyA/IFJlc3VsdDo6QWN0aW9uOjpSZXZlcnRUb0xhc3ROb25PdmVyZmxvd2luZ1dy
YXBPcHBvcnR1bml0eSA6IFJlc3VsdDo6QWN0aW9uOjpXcmFwV2l0aEh5cGhlbjsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHsgYWN0aW9uLCBJc0VuZE9mTGluZTo6WWVzIH07Ci0gICAgICAgIH0KKyAg
ICBpZiAocmVzdWx0LmFjdGlvbiA9PSBSZXN1bHQ6OkFjdGlvbjo6V3JhcCAmJiBsaW5lU3RhdHVz
LnRyYWlsaW5nU29mdEh5cGhlbldpZHRoICYmIGhhc0xlYWRpbmdUZXh0Q29udGVudChjYW5kaWRh
dGVDb250ZW50KSkgeworICAgICAgICAvLyBBIHRyYWlsaW5nIHNvZnQgaHlwaGVuIHdpdGggYSB3
cmFwcGVkIHRleHQgY29udGVudCB0dXJucyBpbnRvIGEgdmlzaWJsZSBoeXBoZW4uCisgICAgICAg
IC8vIExldCdzIGNoZWNrIGlmIHRoZXJlJ3MgZW5vdWdoIHNwYWNlIGZvciB0aGUgaHlwaGVuIGNo
YXJhY3Rlci4KKyAgICAgICAgYXV0byBoeXBoZW5PdmVyZmxvd3MgPSAqbGluZVN0YXR1cy50cmFp
bGluZ1NvZnRIeXBoZW5XaWR0aCA+IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGg7CisgICAgICAg
IGF1dG8gYWN0aW9uID0gaHlwaGVuT3ZlcmZsb3dzID8gUmVzdWx0OjpBY3Rpb246OlJldmVydFRv
TGFzdE5vbk92ZXJmbG93aW5nV3JhcE9wcG9ydHVuaXR5IDogUmVzdWx0OjpBY3Rpb246OldyYXBX
aXRoSHlwaGVuOworICAgICAgICByZXN1bHQgPSB7IGFjdGlvbiwgSXNFbmRPZkxpbmU6OlllcyB9
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjc0LDIzICsyNDQsMTkgQEAgSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092
ZXJmbG93aW5nQ29udGVudChjb24KICAgICB9CiAKICAgICAvLyBJZiB3ZSBhcmUgbm90IGFsbG93
ZWQgdG8gYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBjb250ZW50LCB3ZSBzdGlsbCBuZWVkIHRvIGRl
Y2lkZSB3aGV0aGVyIGtlZXAgaXQgb3Igd3JhcCBpdCB0byB0aGUgbmV4dCBsaW5lLgotICAgIGlm
ICghbGluZVN0YXR1cy5oYXNDb250ZW50KSB7Ci0gICAgICAgIEFTU0VSVCghbV9oYXNXcmFwT3Bw
b3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pOworICAgIGlmICghbGluZVN0YXR1cy5oYXNDb250
ZW50KQogICAgICAgICByZXR1cm4geyBSZXN1bHQ6OkFjdGlvbjo6S2VlcCwgSXNFbmRPZkxpbmU6
Ok5vIH07Ci0gICAgfQogICAgIC8vIE5vdyBlaXRoZXIgd3JhcCB0aGlzIGNvbnRlbnQgb3ZlciB0
byB0aGUgbmV4dCBsaW5lIG9yIHJldmVydCBiYWNrIHRvIGFuIGVhcmxpZXIgd3JhcHBpbmcgb3Bw
b3J0dW5pdHksIG9yIG5vdCB3cmFwIGF0IGFsbC4KICAgICBhdXRvIHNob3VsZFdyYXBVbmJyZWFr
YWJsZUNvbnRlbnRUb05leHRMaW5lID0gWyZdIHsKLSAgICAgICAgYXV0byBvdmVyZmxvd2luZ0lu
bGluZUl0ZW0gPSBjb250aW51b3VzQ29udGVudC5ydW5zKClbb3ZlcmZsb3dpbmdSdW5JbmRleF0u
aW5saW5lSXRlbTsKLSAgICAgICAgYXV0byYgc3R5bGVUb1VzZSA9IG92ZXJmbG93aW5nSW5saW5l
SXRlbS5pc0JveCgpID8gb3ZlcmZsb3dpbmdJbmxpbmVJdGVtLmxheW91dEJveCgpLnBhcmVudCgp
LnN0eWxlKCkgOiBvdmVyZmxvd2luZ0lubGluZUl0ZW0ubGF5b3V0Qm94KCkuc3R5bGUoKTsgCiAg
ICAgICAgIC8vIFRoZSBpbmRpdmlkdWFsIHJ1bnMgaW4gdGhpcyBjb250aW51b3VzIGNvbnRlbnQg
ZG9uJ3QgYnJlYWssIGxldCdzIGNoZWNrIGlmIHdlIGFyZSBhbGxvd2VkIHRvIHdyYXAgdGhpcyBj
b250ZW50IHRvIG5leHQgbGluZSAoZS5nLiBwcmUgd291bGQgcHJldmVudCB1cyBmcm9tIHdyYXBw
aW5nKS4KICAgICAgICAgLy8gUGFyZW50IHN0eWxlIGRyaXZlcyB0aGUgd3JhcHBpbmcgYmVoYXZp
b3IgaGVyZS4KICAgICAgICAgLy8gZS5nLiA8ZGl2IHN0eWxlPSJ3aGl0ZS1zcGFjZTogbm93cmFw
Ij5zb21lIHRleHQ8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdoaXRlLXNwYWNl
OiBwcmUtd3JhcCI+PC9kaXY+PC9kaXY+LgogICAgICAgICAvLyBXaGlsZSB0aGUgaW5saW5lLWJs
b2NrIGhhcyBwcmUtd3JhcCB3aGljaCBhbGxvd3Mgd3JhcHBpbmcsIHRoZSBjb250ZW50IGxpdmVz
IGluIGEgbm93cmFwIGNvbnRleHQuCi0gICAgICAgIHJldHVybiBpc1dyYXBwaW5nQWxsb3dlZChz
dHlsZVRvVXNlKTsKKyAgICAgICAgcmV0dXJuIGlzV3JhcHBpbmdBbGxvd2VkKGNvbnRpbnVvdXND
b250ZW50LnJ1bnMoKVtvdmVyZmxvd2luZ1J1bkluZGV4XS5pbmxpbmVJdGVtKTsKICAgICB9Owog
ICAgIGlmIChzaG91bGRXcmFwVW5icmVha2FibGVDb250ZW50VG9OZXh0TGluZSgpKQogICAgICAg
ICByZXR1cm4geyBSZXN1bHQ6OkFjdGlvbjo6V3JhcCwgSXNFbmRPZkxpbmU6OlllcyB9OwotICAg
IGlmIChtX2hhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikKKyAgICBpZiAobGlu
ZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pCiAgICAgICAgIHJl
dHVybiB7IFJlc3VsdDo6QWN0aW9uOjpSZXZlcnRUb0xhc3RXcmFwT3Bwb3J0dW5pdHksIElzRW5k
T2ZMaW5lOjpZZXMgfTsKICAgICByZXR1cm4geyBSZXN1bHQ6OkFjdGlvbjo6S2VlcCwgSXNFbmRP
ZkxpbmU6Ok5vIH07CiB9CkBAIC0zMDgsNyArMjc0LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVu
dCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0
KGMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAvLyBDaGVj
ayBpZiB0aGlzIHRleHQgcnVuIG5lZWRzIHRvIHN0YXkgb24gdGhlIGN1cnJlbnQgbGluZS4gIAot
ICAgICAgICByZXR1cm4gaXNXcmFwcGluZ0FsbG93ZWQocnVuLmlubGluZUl0ZW0uc3R5bGUoKSk7
CisgICAgICAgIHJldHVybiBpc1dyYXBwaW5nQWxsb3dlZChydW4uaW5saW5lSXRlbSk7CiAgICAg
fTsKIAogICAgIGF1dG8gZmluZFRyYWlsaW5nUnVuSW5kZXggPSBbJl0gKGF1dG8gYnJlYWthYmxl
UnVuSW5kZXgpIC0+IE9wdGlvbmFsPHNpemVfdD4gewpAQCAtMzQ1LDcgKzMxMSw3IEBAIE92ZXJm
bG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2lu
Z0NvbnRlbnRXaXRoVGV4dChjCiAgICAgICAgIGF1dG8gb3ZlcmZsb3dpbmdSdW4gPSBydW5zW292
ZXJmbG93aW5nUnVuSW5kZXhdOwogICAgICAgICBpZiAoIWlzQnJlYWthYmxlUnVuKG92ZXJmbG93
aW5nUnVuKSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmIChhdXRvIHBhcnRp
YWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ob3ZlcmZsb3dpbmdSdW4sIGxpbmVTdGF0dXMuY29u
dGVudExvZ2ljYWxSaWdodCArIGFjY3VtdWxhdGVkQ29udGVudFdpZHRoLCBzdGQ6Om1heCgwLjBm
LCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gYWNjdW11bGF0ZWRDb250ZW50V2lkdGgpKSkg
eworICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKG92ZXJm
bG93aW5nUnVuLCBsaW5lU3RhdHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBhY2N1bXVsYXRlZENv
bnRlbnRXaWR0aCwgc3RkOjptYXgoMC4wZiwgbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCAtIGFj
Y3VtdWxhdGVkQ29udGVudFdpZHRoKSwgbGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFBy
ZXZpb3VzUG9zaXRpb24pKSB7CiAgICAgICAgICAgICBpZiAocGFydGlhbFJ1bi0+bGVuZ3RoKQog
ICAgICAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bv
c2l0aW9uIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJl
YWtpbmdQb3NpdGlvbjo6VHJhaWxpbmdDb250ZW50IHsgZmFsc2UsIHBhcnRpYWxSdW4gfSB9Owog
ICAgICAgICAgICAgLy8gV2hlbiB0aGUgYnJlYWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgcnVuLCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBwcmV2aW91cyBvbmUuCkBA
IC0zNjksNyArMzM1LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAgICAgICAgICAgIGlm
ICghaXNCcmVha2FibGVSdW4ocnVuKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1biwgbGluZVN0YXR1cy5jb250
ZW50TG9naWNhbFJpZ2h0ICsgcHJldmlvdXNDb250ZW50V2lkdGgsIHsgfSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVuLCBsaW5lU3Rh
dHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBwcmV2aW91c0NvbnRlbnRXaWR0aCwgeyB9LCBsaW5l
U3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBrbm93IHRoaXMgcnVuIGZpdHMsIHNvIGlmIGJyZWFraW5nIGlzIGFsbG93
ZWQgb24gdGhlIHJ1biwgaXQgc2hvdWxkIHJldHVybiBhIG5vbi1lbXB0eSBsZWZ0LXNpZGUKICAg
ICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGVpdGhlciBhdCBoeXBoZW4gcG9zaXRpb24gb3Ig
dGhlIGVudGlyZSBydW4gaXMgcmV0dXJuZWQuCiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnRp
YWxSdW4tPmxlbmd0aCk7CkBAIC0zOTEsNyArMzU3LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVu
dCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0
KGMKICAgICAgICAgICAgIGlmIChpc0JyZWFrYWJsZVJ1bihydW4pKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKICAgICAgICAgICAgICAgICAvLyBX
ZSBrbm93IHRoYXQgdGhpcyBydW4gZG9lcyBub3QgZml0IHRoZSBhdmFpbGFibGUgc3BhY2UuIElm
IHdlIGNhbiBicmVhayBpdCBhdCBhbnkgcG9zaXRpb24sIGxldCdzIGp1c3QgdXNlIHRoZSBzdGFy
dCBvZiB0aGUgcnVuLgotICAgICAgICAgICAgICAgIGlmICh3b3JkQnJlYWtCZWhhdmlvcihydW4u
aW5saW5lSXRlbS5zdHlsZSgpKSA9PSBXb3JkQnJlYWtSdWxlOjpBdEFyYml0cmFyeVBvc2l0aW9u
KSB7CisgICAgICAgICAgICAgICAgaWYgKHdvcmRCcmVha0JlaGF2aW9yKHJ1bi5pbmxpbmVJdGVt
LnN0eWxlKCksIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9u
KSA9PSBXb3JkQnJlYWtSdWxlOjpBdEFyYml0cmFyeVBvc2l0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIG11c3QgYmUgb24gYW4gaW5saW5lIGJveCBib3VuZGFyeS4gTGV0J3MgZ28g
YmFjayB0byB0aGUgcnVuIGluIGZyb250IG9mIHRoZSBpbmxpbmUgYm94IHN0YXJ0IHJ1bi4KICAg
ICAgICAgICAgICAgICAgICAgLy8gZS5nLiA8c3Bhbj51bmJyZWFrYWJsZV9hbmRfb3ZlcmZsb3c8
c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj5icmVha2FibGU8L3NwYW4+CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhdCAiYnJlYWthYmxlIiwgPHNwYW4+IGlzIGF0IGlu
ZGV4IC0gMSBhbmQgdGhlIHRyYWlsaW5nIHJ1biBpcyBhdCBpbmRleCAtIDIuCkBAIC00MDUsNyAr
MzcxLDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJv
Y2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCp0cmFpbGluZ1J1bkluZGV4ID49IG92ZXJmbG93aW5nUnVuSW5kZXgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlv
biB7ICp0cmFpbGluZ1J1bkluZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bv
c2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyB0cnVlIH0gfTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihy
dW4sIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIG5leHRDb250ZW50V2lkdGgsIHsg
fSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdU
ZXh0UnVuKHJ1biwgbGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbmV4dENvbnRlbnRX
aWR0aCwgeyB9LCBsaW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlv
bikpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnRpYWxSdW4tPmxlbmd0aCk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIG1hbmFnZWQgdG8gYnJlYWsgdGhpcyB0ZXh0IHJ1biBt
aWQgY29udGVudC4gSXQgaGFzIHRvIGJlIGEgaHlwaGVuIGJyZWFrLgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbiB7IGlu
ZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uOjpUcmFpbGluZ0Nv
bnRlbnQgeyB0cnVlLCBwYXJ0aWFsUnVuIH0gfTsKQEAgLTQyNSw3ICszOTEsNyBAQCBPdmVyZmxv
d2luZ1RleHRDb250ZW50IElubGluZUNvbnRlbnRCcmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdD
b250ZW50V2l0aFRleHQoYwogICAgIHJldHVybiB7IG92ZXJmbG93aW5nUnVuSW5kZXggfTsKIH0K
IAotSW5saW5lQ29udGVudEJyZWFrZXI6OldvcmRCcmVha1J1bGUgSW5saW5lQ29udGVudEJyZWFr
ZXI6OndvcmRCcmVha0JlaGF2aW9yKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKK0lu
bGluZUNvbnRlbnRCcmVha2VyOjpXb3JkQnJlYWtSdWxlIElubGluZUNvbnRlbnRCcmVha2VyOjp3
b3JkQnJlYWtCZWhhdmlvcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGJvb2wgaGFzV3JhcE9w
cG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdAogewogICAgIC8vIERpc3JlZ2FyZCBh
bnkgcHJvaGliaXRpb24gYWdhaW5zdCBsaW5lIGJyZWFrcyBtYW5kYXRlZCBieSB0aGUgd29yZC1i
cmVhayBwcm9wZXJ0eS4KICAgICAvLyBUaGUgZGlmZmVyZW50IHdyYXBwaW5nIG9wcG9ydHVuaXRp
ZXMgbXVzdCBub3QgYmUgcHJpb3JpdGl6ZWQuIEh5cGhlbmF0aW9uIGlzIG5vdCBhcHBsaWVkLgpA
QCAtNDM5LDEwICs0MDUsMTAgQEAgSW5saW5lQ29udGVudEJyZWFrZXI6OldvcmRCcmVha1J1bGUg
SW5saW5lQ29udGVudEJyZWFrZXI6OndvcmRCcmVha0JlaGF2aW9yKGNvbnMKICAgICAgICAgcmV0
dXJuIFdvcmRCcmVha1J1bGU6Ok5vQnJlYWs7CiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0
aCBsZWdhY3kgY29udGVudCwgdGhlIHdvcmQtYnJlYWsgcHJvcGVydHkgYWxzbyBzdXBwb3J0cyBh
IGRlcHJlY2F0ZWQgYnJlYWstd29yZCBrZXl3b3JkLgogICAgIC8vIFdoZW4gc3BlY2lmaWVkLCB0
aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgd29yZC1icmVhazogbm9ybWFsIGFuZCBvdmVyZmxv
dy13cmFwOiBhbnl3aGVyZSwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0dWFsIHZhbHVlIG9mIHRoZSBv
dmVyZmxvdy13cmFwIHByb3BlcnR5LgotICAgIGlmIChzdHlsZS53b3JkQnJlYWsoKSA9PSBXb3Jk
QnJlYWs6OkJyZWFrV29yZCAmJiAhbV9oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRp
b24pCisgICAgaWYgKHN0eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtXb3JkICYm
ICFoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24pCiAgICAgICAgIHJldHVybiBX
b3JkQnJlYWtSdWxlOjpBdEFyYml0cmFyeVBvc2l0aW9uOwogICAgIC8vIE92ZXJmbG93V3JhcDo6
QnJlYWs6IEFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1h
eSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndp
c2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuCi0gICAgaWYgKHN0eWxlLm92
ZXJmbG93V3JhcCgpID09IE92ZXJmbG93V3JhcDo6QnJlYWsgJiYgIW1faGFzV3JhcE9wcG9ydHVu
aXR5QXRQcmV2aW91c1Bvc2l0aW9uKQorICAgIGlmIChzdHlsZS5vdmVyZmxvd1dyYXAoKSA9PSBP
dmVyZmxvd1dyYXA6OkJyZWFrICYmICFoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRp
b24pCiAgICAgICAgIHJldHVybiBXb3JkQnJlYWtSdWxlOjpBdEFyYml0cmFyeVBvc2l0aW9uOwog
CiAgICAgaWYgKCFuX2h5cGhlbmF0aW9uSXNEaXNhYmxlZCAmJiBzdHlsZS5oeXBoZW5zKCkgPT0g
SHlwaGVuczo6QXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUuY29tcHV0ZWRMb2NhbGUoKSkpCkBA
IC00NTEsMTQgKzQxNywxNCBAQCBJbmxpbmVDb250ZW50QnJlYWtlcjo6V29yZEJyZWFrUnVsZSBJ
bmxpbmVDb250ZW50QnJlYWtlcjo6d29yZEJyZWFrQmVoYXZpb3IoY29ucwogICAgIHJldHVybiBX
b3JkQnJlYWtSdWxlOjpOb0JyZWFrOwogfQogCi1PcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtl
cjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihj
b25zdCBDb250aW51b3VzQ29udGVudDo6UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lk
dGgpIGNvbnN0CitPcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBDb250aW51b3VzQ29u
dGVudDo6UnVuJiBvdmVyZmxvd2luZ1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwg
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaGFzV3JhcE9w
cG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChvdmVyZmxv
d2luZ1J1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9
IGRvd25jYXN0PElubGluZVRleHRJdGVtPihvdmVyZmxvd2luZ1J1bi5pbmxpbmVJdGVtKTsKICAg
ICBhdXRvJiBzdHlsZSA9IGlubGluZVRleHRJdGVtLnN0eWxlKCk7CiAgICAgYXV0byBhdmFpbGFi
bGVTcGFjZUlzSW5maW5pdGUgPSAhYXZhaWxhYmxlV2lkdGguaGFzVmFsdWUoKTsKIAotICAgIGF1
dG8gYnJlYWtSdWxlID0gd29yZEJyZWFrQmVoYXZpb3Ioc3R5bGUpOworICAgIGF1dG8gYnJlYWtS
dWxlID0gd29yZEJyZWFrQmVoYXZpb3Ioc3R5bGUsIGhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlv
dXNQb3NpdGlvbik7CiAgICAgaWYgKGJyZWFrUnVsZSA9PSBXb3JkQnJlYWtSdWxlOjpBdEFyYml0
cmFyeVBvc2l0aW9uKSB7CiAgICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgIC8vIEVtcHR5IHRleHQgcnVucyBtYXkgYmUgYnJlYWthYmxlIGJhc2VkIG9u
IHN0eWxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FuJ3QgcmVhbGx5IHNwbGl0IHRoZW0gYW55IGZ1
cnRoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lQ29udGVudEJyZWFrZXIuaAppbmRleCAxN2JjOGU4ZGZmNjI2NDg3MmVm
OThmYzY4ZDk1OWQ1NzNlZDUzZjI2Li41ODYwMDg1OWJlZjgzOTZjYTYyMTE4ZTc1ZWY2NWI1ODA1
NjRiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVDb250ZW50QnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUNvbnRlbnRCcmVha2VyLmgKQEAgLTExMSwyNiArMTExLDI3IEBA
IHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gdHJhaWxpbmdTb2Z0
SHlwaGVuV2lkdGg7CiAgICAgICAgIGJvb2wgaGFzRnVsbHlDb2xsYXBzaWJsZVRyYWlsaW5nUnVu
IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBoYXNDb250ZW50IHsgZmFsc2UgfTsKKyAgICAgICAg
Ym9vbCBoYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24geyBmYWxzZSB9OwogICAg
IH07CiAgICAgUmVzdWx0IHByb2Nlc3NJbmxpbmVDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250
ZW50JiwgY29uc3QgTGluZVN0YXR1cyYpOwotCiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkRpc2Fi
bGVkKCkgeyBuX2h5cGhlbmF0aW9uSXNEaXNhYmxlZCA9IHRydWU7IH0KIAorICAgIHN0YXRpYyBi
b29sIGlzV3JhcHBpbmdBbGxvd2VkKGNvbnN0IElubGluZUl0ZW0mKTsKKwogcHJpdmF0ZToKICAg
ICBSZXN1bHQgcHJvY2Vzc092ZXJmbG93aW5nQ29udGVudChjb25zdCBDb250aW51b3VzQ29udGVu
dCYsIGNvbnN0IExpbmVTdGF0dXMmKSBjb25zdDsKICAgICBPdmVyZmxvd2luZ1RleHRDb250ZW50
IHByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjb25zdCBDb250aW51b3VzQ29udGVu
dCYsIGNvbnN0IExpbmVTdGF0dXMmKSBjb25zdDsKLSAgICBPcHRpb25hbDxQYXJ0aWFsUnVuPiB0
cnlCcmVha2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1biYgb3ZlcmZsb3dS
dW4sIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIE9wdGlvbmFsPElubGluZUxheW91dFVu
aXQ+IGF2YWlsYWJsZVdpZHRoKSBjb25zdDsKKyAgICBPcHRpb25hbDxQYXJ0aWFsUnVuPiB0cnlC
cmVha2luZ1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1biYgb3ZlcmZsb3dSdW4s
IElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IGF2YWlsYWJsZVdpZHRoLCBib29sIGhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlv
bikgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFdvcmRCcmVha1J1bGUgewogICAgICAgICBOb0Jy
ZWFrLAogICAgICAgICBBdEFyYml0cmFyeVBvc2l0aW9uLAogICAgICAgICBPbmx5SHlwaGVuYXRp
b25BbGxvd2VkCiAgICAgfTsKLSAgICBXb3JkQnJlYWtSdWxlIHdvcmRCcmVha0JlaGF2aW9yKGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgV29yZEJyZWFrUnVsZSB3b3JkQnJlYWtCZWhh
dmlvcihjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91
c1Bvc2l0aW9uKSBjb25zdDsKICAgICBib29sIHNob3VsZEtlZXBFbmRPZkxpbmVXaGl0ZXNwYWNl
KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JikgY29uc3Q7CiAKICAgICBib29sIG5faHlwaGVuYXRp
b25Jc0Rpc2FibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzV3JhcE9wcG9ydHVuaXR5QXRQ
cmV2aW91c1Bvc2l0aW9uIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGlu
ZUl0ZW0sIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCmluZGV4IGM1MDQ5MjVjYmRhODY3YzVkNDQ4NzU5YmFlYjU4MzZmYjFlMTZkNDguLmE1NDM1
OWI5ODFlOWU2ZjJhMjQ2ZWJmYjgzYmIyYTk3ZjRkNDUxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAKQEAgLTE0MCw2ICsxNDAsOSBAQCBzdHJ1Y3QgTGluZUNhbmRpZGF0ZSB7CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQucnVucygp
LmlzRW1wdHkoKSAmJiAhdHJhaWxpbmdXb3JkQnJlYWtPcHBvcnR1bml0eSgpICYmICF0cmFpbGlu
Z0xpbmVCcmVhaygpOyB9CiAgICAgICAgIGJvb2wgaGFzSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7
IHJldHVybiBtX2hhc0lubGluZUxldmVsQm94OyB9CiAKKyAgICAgICAgdm9pZCBzZXRIYXNUcmFp
bGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkoYm9vbCBoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0dW5p
dHkpIHsgbV9oYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkgPSBoYXNUcmFpbGluZ1NvZnRX
cmFwT3Bwb3J0dW5pdHk7IH0KKyAgICAgICAgYm9vbCBoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eTsg
fQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2lnbm9yZVRyYWlsaW5nTGV0dGVyU3Bh
Y2luZyB7IGZhbHNlIH07CiAKQEAgLTE0Nyw2ICsxNTAsNyBAQCBzdHJ1Y3QgTGluZUNhbmRpZGF0
ZSB7CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIG1fdHJhaWxpbmdMaW5lQnJlYWsgeyBudWxs
cHRyIH07CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIG1fdHJhaWxpbmdXb3JkQnJlYWtPcHBv
cnR1bml0eSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBtX2hhc0lubGluZUxldmVsQm94IHsg
ZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eSB7
IGZhbHNlIH07CiAgICAgfTsKIAogICAgIC8vIENhbmRpZGF0ZSBjb250ZW50IGlzIGEgY29sbGVj
dGlvbiBvZiBpbmxpbmUgY29udGVudCBvciBhIGZsb2F0IGJveC4KQEAgLTUwMSw2ICs1MDUsMzkg
QEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0
ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CisgICAgYXV0byBpbmxpbmVDb250ZW50RW5kc0luU29mdFdyYXBP
cHBvcnR1bml0eSA9IFsmXSB7CisgICAgICAgIGlmICghc29mdFdyYXBPcHBvcnR1bml0eUluZGV4
IHx8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9PSBsYXlvdXRSYW5nZS5lbmQpIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgY2FuZGlkYXRlIGlubGluZSBjb250ZW50IGVuZHMgYmVjYXVzZSB0aGUg
ZW50aXJlIGNvbnRlbnQgZW5kcyBhbmQgbm90IGJlY2F1c2UgdGhlcmUncyBhIHNvZnQgd3JhcCBv
cHBvcnR1bml0eS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LTMvI2xpbmUtYnJlYWstZGV0
YWlscworICAgICAgICBhdXRvJiB0cmFpbGluZ0lubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1zW3Nv
ZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAtIDFdOworICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVJ
dGVtLmlzQm94KCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwgdHJhaWxp
bmdJbmxpbmVJdGVtLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSB8fCB0cmFpbGluZ0lubGluZUl0
ZW0uaXNJbmxpbmVCb3hFbmQoKSkgeworICAgICAgICAgICAgLy8gRm9yIFdlYi1jb21wYXRpYmls
aXR5IHRoZXJlIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJlZm9yZSBhbmQgYWZ0ZXIgZWFj
aCByZXBsYWNlZCBlbGVtZW50IG9yIG90aGVyIGF0b21pYyBpbmxpbmUuCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVJdGVtLmlz
VGV4dCgpKSB7CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElu
bGluZVRleHRJdGVtPih0cmFpbGluZ0lubGluZUl0ZW0pOworICAgICAgICAgICAgaWYgKGlubGlu
ZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgLy8gTm93IGluIGNhc2Ugb2Ygbm9uLXdoaXRlc3BhY2UgdHJhaWxpbmcgY29u
dGVudCwgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgYWN0dWFsIHNvZnQgd3JhcCBvcHBvcnR1bml0
eSBiZWxvbmdzIHRvIHRoZSBuZXh0IHNldC4KKyAgICAgICAgICAgIC8vIGUuZy4gInRoaXNfaXNf
dGhlX3RyYWlsaW5nX3J1bjxzcGFuPiA8LWJ1dF90aGlzX3NwYWNlX2hlcmVfaXNfdGhlX3NvZnRf
d3JhcF9vcHBvcnR1bml0eSIKKyAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUncyBhbiBpbmxpbmUg
Ym94IHN0YXJ0KDxzcGFuPikvZW5kKDwvc3Bhbj4pIGJldHdlZW4gdGhlIHRyYWlsaW5nIGFuZCB0
aGUgKG5leHQpbGVhZGluZyBydW4sIHdoaWxlIHdlIGJyZWFrIGJlZm9yZSB0aGUgaW5saW5lIGJv
eCBzdGFydCAoPHNwYW4+KQorICAgICAgICAgICAgLy8gdGhlIGFjdHVhbCBzb2Z0IHdyYXAgcG9z
aXRpb24gaXMgYWZ0ZXIgdGhlIGlubGluZSBib3ggc3RhcnQgKDxzcGFuPikgYnV0IGluIHRlcm1z
IG9mIGxpbmUgYnJlYWtpbmcgY29udGludWl0eSB0aGUgaW5saW5lIGJveCBzdGFydCAoPHNwYW4+
KSBhbmQgdGhlIHdoaXRlc3BhY2UgcnVuIGJlbG9uZyB0b2dldGhlci4KKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGxheW91dFJhbmdlLmVuZCA8PSBtX2lubGluZUl0ZW1zLnNpemUoKSk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXg7IGlu
ZGV4IDwgbGF5b3V0UmFuZ2UuZW5kOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
aW5saW5lSXRlbXNbaW5kZXhdLmlzSW5saW5lQm94U3RhcnQoKSB8fCBtX2lubGluZUl0ZW1zW2lu
ZGV4XS5pc0lubGluZUJveEVuZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgaWYgW25vbi13aGl0ZXNwYWNlXVtpbmxpbmUt
Ym94XVtuby13aGl0ZXNwYWNlXSBjb250ZW50IGhhcyBydWxlcyBhYm91dCBpdC4KKyAgICAgICAg
ICAgICAgICAvLyBGb3Igbm93IGxldCdzIHNheSB0aGUgc29mdCB3cmFwIHBvc2l0aW9uIGJlbG9u
Z3MgdG8gdGhlIG5leHQgc2V0IG9mIHJ1bnMgd2hlbiBbbm9uLXdoaXRlc3BhY2VdW2lubGluZS1i
b3hdW3doaXRlc3BhY2VdLCBbbm9uLXdoaXRlc3BhY2VdW2lubGluZS1ib3hdW2JveF0gZXRjLgor
ICAgICAgICAgICAgICAgIHJldHVybiBtX2lubGluZUl0ZW1zW2luZGV4XS5pc1RleHQoKSAmJiAh
ZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbXNbaW5kZXhdKS5pc1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9OworICAgIGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5zZXRIYXNUcmFpbGluZ1NvZnRX
cmFwT3Bwb3J0dW5pdHkoaW5saW5lQ29udGVudEVuZHNJblNvZnRXcmFwT3Bwb3J0dW5pdHkoKSk7
CiB9CiAKIHNpemVfdCBMaW5lQnVpbGRlcjo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3Rh
cnRJbmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2Up
IGNvbnN0CkBAIC02MzAsMTYgKzY2NywyMiBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWls
ZGVyOjpoYW5kbGVJbmxpbmVDb250ZW50KElubGluZUNvbnRlbnRCcmVha2VyJiBpbmxpbgogICAg
IGF1dG8gYXZhaWxhYmxlV2lkdGggPSBsaW5lTG9naWNhbFJlY3RGb3JDYW5kaWRhdGVDb250ZW50
LndpZHRoKCkgLSBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpOwogICAgIC8vIFdoaWxlIHRo
ZSBmbG9hdHMgYXJlIG5vdCBjb25zaWRlcmVkIHRvIGJlIG9uIHRoZSBsaW5lLCB0aGV5IG1ha2Ug
dGhlIGxpbmUgY29udGVudGZ1bCBmb3IgbGluZSBicmVha2luZy4KICAgICBhdXRvIGxpbmVIYXND
b250ZW50ID0gIW1fbGluZS5ydW5zKCkuaXNFbXB0eSgpIHx8IG1fY29udGVudElzQ29uc3RyYWlu
ZWRCeUZsb2F0OwotICAgIGF1dG8gbGluZVN0YXR1cyA9IElubGluZUNvbnRlbnRCcmVha2VyOjpM
aW5lU3RhdHVzIHsgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgYXZhaWxhYmxlV2lkdGgs
IG1fbGluZS50cmltbWFibGVUcmFpbGluZ1dpZHRoKCksIG1fbGluZS50cmFpbGluZ1NvZnRIeXBo
ZW5XaWR0aCgpLCBtX2xpbmUuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCksIGxpbmVIYXND
b250ZW50IH07CisgICAgYXV0byBsaW5lU3RhdHVzID0gSW5saW5lQ29udGVudEJyZWFrZXI6Okxp
bmVTdGF0dXMgeyBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBhdmFpbGFibGVXaWR0aCwg
bV9saW5lLnRyaW1tYWJsZVRyYWlsaW5nV2lkdGgoKSwgbV9saW5lLnRyYWlsaW5nU29mdEh5cGhl
bldpZHRoKCksIG1fbGluZS5pc1RyYWlsaW5nUnVuRnVsbHlUcmltbWFibGUoKSwgbGluZUhhc0Nv
bnRlbnQsICFtX3dyYXBPcHBvcnR1bml0eUxpc3QuaXNFbXB0eSgpIH07CiAgICAgYXV0byByZXN1
bHQgPSBpbmxpbmVDb250ZW50QnJlYWtlci5wcm9jZXNzSW5saW5lQ29udGVudChjb250aW51b3Vz
SW5saW5lQ29udGVudCwgbGluZVN0YXR1cyk7Ci0gICAgaWYgKHJlc3VsdC5sYXN0V3JhcE9wcG9y
dHVuaXR5SXRlbSkKLSAgICAgICAgbV93cmFwT3Bwb3J0dW5pdHlMaXN0LmFwcGVuZChyZXN1bHQu
bGFzdFdyYXBPcHBvcnR1bml0eUl0ZW0pOwogICAgIGF1dG8mIGNhbmRpZGF0ZVJ1bnMgPSBjb250
aW51b3VzSW5saW5lQ29udGVudC5ydW5zKCk7CiAgICAgaWYgKHJlc3VsdC5hY3Rpb24gPT0gSW5s
aW5lQ29udGVudEJyZWFrZXI6OlJlc3VsdDo6QWN0aW9uOjpLZWVwKSB7CiAgICAgICAgIC8vIFRo
aXMgY29udGludW91cyBjb250ZW50IGNhbiBiZSBmdWxseSBwbGFjZWQgb24gdGhlIGN1cnJlbnQg
bGluZS4KICAgICAgICAgbV9saW5lTG9naWNhbFJlY3QgPSBsaW5lTG9naWNhbFJlY3RGb3JDYW5k
aWRhdGVDb250ZW50OwogICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IGNhbmRpZGF0ZVJ1bnMpCiAg
ICAgICAgICAgICBtX2xpbmUuYXBwZW5kKHJ1bi5pbmxpbmVJdGVtLCBydW4ubG9naWNhbFdpZHRo
KTsKKyAgICAgICAgaWYgKGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5oYXNUcmFpbGluZ1Nv
ZnRXcmFwT3Bwb3J0dW5pdHkoKSkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgYXJlIGFs
bG93ZWQgdG8gd3JhcCBhdCB0aGlzIHBvc2l0aW9uLgorICAgICAgICAgICAgYXV0byYgdHJhaWxp
bmdJdGVtID0gY2FuZGlkYXRlUnVucy5sYXN0KCkuaW5saW5lSXRlbTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIGRlY2lkZSBpZiB0aGUgdHJhaWxpbmcgcnVu
IGFjdHVhbGx5IGVuZGVkIHVwIG9uIHRoZSBsaW5lLgorICAgICAgICAgICAgLy8gTGV0J3MganVz
dCBkZWFsIHdpdGggY29sbGFwc2VkIGxlYWRpbmcgd2hpdGVzcGFjZSBmb3Igbm93LgorICAgICAg
ICAgICAgaWYgKCFtX2xpbmUucnVucygpLmlzRW1wdHkoKSAmJiBJbmxpbmVDb250ZW50QnJlYWtl
cjo6aXNXcmFwcGluZ0FsbG93ZWQodHJhaWxpbmdJdGVtKSkKKyAgICAgICAgICAgICAgICBtX3dy
YXBPcHBvcnR1bml0eUxpc3QuYXBwZW5kKCZ0cmFpbGluZ0l0ZW0pOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiB7IHJlc3VsdC5pc0VuZE9mTGluZSwgeyBjYW5kaWRhdGVSdW5zLnNpemUoKSwg
ZmFsc2UgfSB9OwogICAgIH0KICAgICBpZiAocmVzdWx0LmFjdGlvbiA9PSBJbmxpbmVDb250ZW50
QnJlYWtlcjo6UmVzdWx0OjpBY3Rpb246OldyYXApIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>