<?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>271359</bug_id>
          
          <creation_ts>2024-03-20 20:35:07 -0700</creation_ts>
          <short_desc>[IFC] Introduce RangeBasedLineBuilder</short_desc>
          <delta_ts>2024-03-21 17:12:14 -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>
          
          
          <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>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>2022630</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-03-20 20:35:07 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022633</commentid>
    <comment_count>1</comment_count>
      <attachid>470453</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-03-20 20:39:50 -0700</bug_when>
    <thetext>Created attachment 470453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022716</commentid>
    <comment_count>2</comment_count>
      <attachid>470456</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-03-21 06:08:25 -0700</bug_when>
    <thetext>Created attachment 470456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022817</commentid>
    <comment_count>3</comment_count>
      <attachid>470463</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-03-21 11:02:55 -0700</bug_when>
    <thetext>Created attachment 470463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022818</commentid>
    <comment_count>4</comment_count>
      <attachid>470464</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-03-21 11:05:15 -0700</bug_when>
    <thetext>Created attachment 470464
Patch with dependencies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022950</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-21 17:11:15 -0700</bug_when>
    <thetext>Committed 276509@main (639f7f3a3aa1): &lt;https://commits.webkit.org/276509@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 470463.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2022952</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-03-21 17:12:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/125202508&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470453</attachid>
            <date>2024-03-20 20:39:50 -0700</date>
            <delta_ts>2024-03-21 06:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-271359-20240320203949.patch</filename>
            <type>text/plain</type>
            <size>17804</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2NDk1MTM0ZjQzNjVmNGJmYTc2ZDBiY2UxZDA5ZWUzYzZlM2NmY2E1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMjAgTWFyIDIwMjQgMjA6MzU6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgUmFuZ2VCYXNlZExpbmVCdWlsZGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjcxMzU5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClJhbmdl
QmFzZWRMaW5lQnVpbGRlciBzdXBwb3J0cyBhIG1peCBvZiBjb250ZW50IHdoZXJlIGEgc2lnbmlm
aWNhbnQgcmFuZ2UgY291bGQgYmUgbGFpZCBvdXQgdXNpbmcgYSBzaW1wbGlmaWVkIGJ1aWxkZXIK
ICBlLmcuIDxkaXY+PHNwYW4+dGhpcyBpcyB0ZXh0IG9ubHkgY29udGVudDwvc3Bhbj48L2Rpdj4K
ICB3aGVyZSB0aGUgbmVzdGVkIGNvbnRlbnQgbmVlZHMgdGV4dC1vbmx5IGxpbmUgYnVpbGRlci4K
CiogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQ6CiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5l
QnVpbGRlci5jcHA6IEFkZGVkLgooV2ViQ29yZTo6TGF5b3V0OjpSYW5nZUJhc2VkTGluZUJ1aWxk
ZXI6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcik6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdlQmFzZWRM
aW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdl
QmFzZWRMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGlu
ZUJ1aWxkZXIuaDogQWRkZWQuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAg
ICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiB8ICAgNiArCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cCAgICAgICAgfCAgIDUgKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oICAgIHwgICA2ICstCiAuLi4vaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgICAg
ICAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrCiAuLi4vaW5saW5lL1JhbmdlQmFzZWRMaW5l
QnVpbGRlci5oICAgICAgICAgICAgfCAgNDggKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTgw
IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVC
dWlsZGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5oCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAzMWUzZDBhZGQ4YWIuLjM3MGE1YjA1MWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3
NTgsNiArMTc1OCw3IEBAIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVUZXh0SXRlbS5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZVF1aXJrcy5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0ludHJpbnNp
Y1dpZHRoSGFuZGxlci5jcHAKK2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1Jhbmdl
QmFzZWRMaW5lQnVpbGRlci5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1Rl
eHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50LmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOGVlMzgyNjgzNTk1Li5lYTY2ZWNjZTcyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MTIsNiArNTQxMiw3IEBACiAJ
CUREREZFODNGMjg0NkVDRTUwMDZGMUVFNSAvKiBjb250ZW50LXNjcmlwdC5qcyBpbiBDb3B5IFBE
Ri5qcyBFeHRyYXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERERkU4M0My
ODQ2RUNENDAwNkYxRUU1IC8qIGNvbnRlbnQtc2NyaXB0LmpzICovOyB9OwogCQlEREU5OTMxRTI3
OEQwRTRCMDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgaW4gUHJvZHVjdCBEZXBlbmRl
bmNpZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFOTkzMDgyNzhEMDgw
QjAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovOyB9OwogCQlEREVBOTFCQTI5OTQ2
RTQzMDA3RTlGREEgLyogSW5saW5lTGluZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREVBOTFCOTI5OTQ2RTQzMDA3RTlGREEgLyogSW5saW5l
TGluZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRERFQ0NDMUYyQkFCQTg0OTAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFQ0NDMUUy
QkFCQTg0ODAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRlci5oICovOyB9OwogCQlEREZD
QjQ4MTI5MTcwMTQ2MDBDNzk5QzYgLyogSW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREZDQjQ4MDI5MTcw
MTQ1MDBDNzk5QzYgLyogSW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREU1Rjg0MTYxRkExODZFOTAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMDEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREU1RjgzQjIxRkExODY3NjAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzMDEuY3BwICovOyB9OwogCQlERTVGODQxNzFGQTE4NkU5MDA2REI2M0EgLyogVW5pZmll
ZFNvdXJjZTMwMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERTVGODNFQjFGQTE4NkFEMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMwMi5jcHAgKi87
IH07CkBAIC0xODc4Nyw2ICsxODc4OCw4IEBACiAJCUREREZFODNDMjg0NkVDRDQwMDZGMUVFNSAv
KiBjb250ZW50LXNjcmlwdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJjb250ZW50LXNjcmlw
dC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERTk5MzA4Mjc4RDA4MEIwMEY2
MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYldlYktpdEFkZGl0aW9u
cy5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlEREVBOTFCOTI5OTQ2
RTQzMDA3RTlGREEgLyogSW5saW5lTGluZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZUxpbmVUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEREVDQ0MxRDJCQUJBODNFMDA0MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURERUNDQzFFMkJBQkE4NDgwMDQxQ0QzQyAvKiBSYW5nZUJhc2Vk
TGluZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VCYXNl
ZExpbmVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERkNCNDgwMjkx
NzAxNDUwMEM3OTlDNiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUY4M0IyMUZBMTg2NzYwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMzAxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZpZWRTb3VyY2UzMDEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTVG
ODNCMzFGQTE4Njc3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM1NS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlmaWVkU291cmNlMzU1LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODI1LDYgKzIxODI4LDggQEAKIAkJCQlERDk0NjdENTJB
OTJEM0EzMDA0NTg5NzkgLyogSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcCAqLywKIAkJCQlERDk0
NjdENjJBOTJEM0I4MDA0NTg5NzkgLyogSW50cmluc2ljV2lkdGhIYW5kbGVyLmggKi8sCiAJCQkJ
RERENTE3RUIyQTlGQzU0NDAwNjlBRjgxIC8qIExpbmVMYXlvdXRSZXN1bHQuaCAqLywKKwkJCQlE
REVDQ0MxRDJCQUJBODNFMDA0MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcCAqLywK
KwkJCQlEREVDQ0MxRTJCQUJBODQ4MDA0MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmgg
Ki8sCiAJCQkJRERBM0Q1RDAyQTdEODQ3RTAwMEVDRUUxIC8qIFRleHRPbmx5U2ltcGxlTGluZUJ1
aWxkZXIuY3BwICovLAogCQkJCUREQTNENUNFMkE3RDg0NEQwMDBFQ0VFMSAvKiBUZXh0T25seVNp
bXBsZUxpbmVCdWlsZGVyLmggKi8sCiAJCQkpOwpAQCAtNDE1MTUsNiArNDE1MjAsNyBAQAogCQkJ
CUY1NUIzRENDMTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjY1OEZGQTYxNTIyRUZBQTAwREQ1NTk1IC8qIFJhZGlvTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRjE5OTE4MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRERFQ0NDMUYyQkFCQTg0OTAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5l
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNEOUQ1M0MwREEyN0UxODAwNzcyMTZDIC8q
IFJhbmdlQm91bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0UxMjUxRjEy
RDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRBMEZE
NzI1QzM0MzUwMDBEOUVFOTcgLyogUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggZDBmZTRlYzQ1OGZlLi5mMTVjNjZmODNmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs
dWRlICJMYXlvdXRJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVGV4dE9ubHlTaW1wbGVM
aW5lQnVpbGRlci5oIgogI2luY2x1ZGUgIlRleHRVdGlsLmgiCkBAIC0xNTEsNiArMTUyLDEwIEBA
IElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5saW5lQ29uCiAgICAgICAgIGF1dG8gc2ltcGxpZmllZExpbmVCdWls
ZGVyID0gVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlciB7ICp0aGlzLCBjb25zdHJhaW50cy5ob3Jp
em9udGFsKCksIGlubGluZUl0ZW1MaXN0IH07CiAgICAgICAgIHJldHVybiBsaW5lTGF5b3V0KHNp
bXBsaWZpZWRMaW5lQnVpbGRlciwgaW5saW5lSXRlbUxpc3QsIG5lZWRzTGF5b3V0UmFuZ2UsIHBy
ZXZpb3VzTGluZSgpLCBjb25zdHJhaW50cywgbGluZURhbWFnZSk7CiAgICAgfQorICAgIGlmIChS
YW5nZUJhc2VkTGluZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JSYW5nZUlubGluZUxheW91dCgqdGhp
cywgaW5saW5lQ29udGVudENhY2hlKCkuaW5saW5lSXRlbXMoKSwgcGxhY2VkRmxvYXRzKSkgewor
ICAgICAgICBhdXRvIHJhbmdlQmFzZWRMaW5lQnVpbGRlciA9IFJhbmdlQmFzZWRMaW5lQnVpbGRl
ciB7ICp0aGlzLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIGlubGluZUl0ZW1MaXN0IH07Cisg
ICAgICAgIHJldHVybiBsaW5lTGF5b3V0KHJhbmdlQmFzZWRMaW5lQnVpbGRlciwgaW5saW5lSXRl
bUxpc3QsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSgpLCBjb25zdHJhaW50cywgbGlu
ZURhbWFnZSk7CisgICAgfQogICAgIGF1dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0
aGlzLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCksIGlubGluZUl0ZW1MaXN0IH07CiAgICAgcmV0
dXJuIGxpbmVMYXlvdXQobGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJh
bmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5oCmluZGV4IDQzMTc0ZjVhNjEzNi4uMWEzYjg2MTYwZDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oCkBAIC0xNDAsNiArMTQwLDEwIEBAIHB1YmxpYzoKIAogICAgICAg
ICBVQmlEaUxldmVsIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmlkaUxldmVsOyB9CiAK
KyAgICAgICAgLy8gRklYTUU6IE1heWJlIGFkZCBjcmVhdGUgZnVuY3Rpb25zIGludGVhZD8KKyAg
ICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbExlZnQpOworICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRlbSYgbGlu
ZVNwYW5uaW5nSW5saW5lQm94SXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJp
ZW5kIGNsYXNzIExpbmU7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVDb250ZW50QWxpZ25l
cjsKQEAgLTE0OCw4ICsxNTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVU
ZXh0SXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgICAgICBSdW4oY29uc3QgSW5s
aW5lU29mdExpbmVCcmVha0l0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVu
aXQgbG9naWNhbExlZnQpOwogICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgpOwotICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7Ci0gICAgICAgIFJ1bihj
b25zdCBJbmxpbmVJdGVtJiBsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJdGVtLCBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAKICAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQog
ICAgICAgICB2b2lkIGV4cGFuZChjb25zdCBJbmxpbmVUZXh0SXRlbSYsIElubGluZUxheW91dFVu
aXQgbG9naWNhbFdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1
aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDVmZTY2
ODUxMTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcApAQCAtMCwwICsxLDEx
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5nZUJh
c2VkTGluZUJ1aWxkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91
dCB7CisKK1JhbmdlQmFzZWRMaW5lQnVpbGRlcjo6UmFuZ2VCYXNlZExpbmVCdWlsZGVyKElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpvbnRhbENv
bnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0
JiBpbmxpbmVJdGVtTGlzdCkKKyAgICA6IEFic3RyYWN0TGluZUJ1aWxkZXIoaW5saW5lRm9ybWF0
dGluZ0NvbnRleHQsIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGlubGluZUl0ZW1MaXN0KQor
ICAgICwgbV90ZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyKGlubGluZUZvcm1hdHRpbmdDb250ZXh0
LCByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBpbmxpbmVJdGVtTGlzdCkKK3sKK30KKworTGlu
ZUxheW91dFJlc3VsdCBSYW5nZUJhc2VkTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQo
Y29uc3QgTGluZUlucHV0JiBsaW5lSW5wdXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNM
aW5lPiYgcHJldmlvdXNMaW5lKQoreworICAgIGF1dG8gaXNGaXJzdExpbmUgPSAhbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnRJbmRleCgpOworCisgICAgYXV0byBhZGp1c3RlZE5lZWRz
TGF5b3V0UmFuZ2UgPSBbJl0geworICAgICAgICBhdXRvIG5lZWRzTGF5b3V0UmFuZ2UgPSBsaW5l
SW5wdXQubmVlZHNMYXlvdXRSYW5nZTsKKyAgICAgICAgaWYgKGlzRmlyc3RMaW5lKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV9pbmxpbmVJdGVtTGlzdFswXS5pc0lubGluZUJveFN0YXJ0KCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdlLnN0YXJ0Lm9mZnNldCk7CisgICAg
ICAgICAgICAvLyBTa2lwIGxlYWRpbmcgSW5saW5lSXRlbVN0YXJ0IChlLmcuIDxzcGFuPikKKyAg
ICAgICAgICAgICsrbmVlZHNMYXlvdXRSYW5nZS5zdGFydC5pbmRleDsKKyAgICAgICAgfQorICAg
ICAgICAvLyBTS2lwIHRyYWlsaW5nIElubGluZUl0ZW1FbmQgKGUuZy4gPC9zcGFuPikKKyAgICAg
ICAgQVNTRVJUKG1faW5saW5lSXRlbUxpc3QubGFzdCgpLmlzSW5saW5lQm94RW5kKCkpOworICAg
ICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0UmFuZ2UuZW5kLm9mZnNldCk7CisgICAgICAgIC0tbmVl
ZHNMYXlvdXRSYW5nZS5lbmQuaW5kZXg7CisgICAgICAgIHJldHVybiBuZWVkc0xheW91dFJhbmdl
OworICAgIH07CisgICAgYXV0byBuZWVkc0xheW91dFJhbmdlID0gYWRqdXN0ZWROZWVkc0xheW91
dFJhbmdlKCk7CisgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdlLmlzRW1wdHkoKSk7CisKKyAg
ICBhdXRvIGxpbmVMYXlvdXRSZXN1bHQgPSBtX3RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIubGF5
b3V0SW5saW5lQ29udGVudCh7IG5lZWRzTGF5b3V0UmFuZ2UsIGxpbmVJbnB1dC5pbml0aWFsTG9n
aWNhbFJlY3QgfSwgcHJldmlvdXNMaW5lKTsKKworICAgIGF1dG8gaW5zZXJ0TGVhZGluZ0lubGlu
ZUJveFJ1biA9IFsmXSB7CisgICAgICAgIGF1dG8mIGxlYWRpbmdJbmxpbmVJdGVtID0gbV9pbmxp
bmVJdGVtTGlzdC5maXJzdCgpOworICAgICAgICBBU1NFUlQobGVhZGluZ0lubGluZUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpKTsKKworICAgICAgICBpZiAoaXNGaXJzdExpbmUpIHsKKyAgICAgICAg
ICAgIEFTU0VSVCghcHJldmlvdXNMaW5lKTsKKyAgICAgICAgICAgIGxpbmVMYXlvdXRSZXN1bHQu
aW5saW5lQ29udGVudC5pbnNlcnQoMCwgeyBsZWFkaW5nSW5saW5lSXRlbSwgbGVhZGluZ0lubGlu
ZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSwgeyB9IH0pOworICAgICAgICAgICAgbGluZUxheW91dFJl
c3VsdC5pbmxpbmVJdGVtUmFuZ2Uuc3RhcnQgPSBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5z
dGFydDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBTdWJzZXF1
ZW50IGxpbmVzIG5lZWQgbGVhZGluZyBzcGFubmluZyBpbmxpbmUgYm94IHJ1bi4KKyAgICAgICAg
bGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmluc2VydCgwLCB7IGxlYWRpbmdJbmxpbmVJ
dGVtLCB7IH0sIHsgfSB9KTsKKyAgICB9OworICAgIGluc2VydExlYWRpbmdJbmxpbmVCb3hSdW4o
KTsKKworICAgIGF1dG8gYXBwZW5kVHJhaWxpbmdJbmxpbmVCb3hSdW5JZk5lZWRlZCA9IFsmXSB7
CisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0LmlubGluZUl0ZW1SYW5nZS5lbmQgIT0gbmVl
ZHNMYXlvdXRSYW5nZS5lbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8mIHRy
YWlsaW5nSW5saW5lSXRlbSA9IG1faW5saW5lSXRlbUxpc3QubGFzdCgpOworICAgICAgICBsaW5l
TGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuYXBwZW5kKHsgdHJhaWxpbmdJbmxpbmVJdGVtLCBp
c0ZpcnN0TGluZSA/IHRyYWlsaW5nSW5saW5lSXRlbS5maXJzdExpbmVTdHlsZSgpIDogdHJhaWxp
bmdJbmxpbmVJdGVtLnN0eWxlKCksIHsgfSB9KTsKKyAgICAgICAgbGluZUxheW91dFJlc3VsdC5p
bmxpbmVJdGVtUmFuZ2UuZW5kID0gbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UuZW5kOworICAg
IH07CisgICAgYXBwZW5kVHJhaWxpbmdJbmxpbmVCb3hSdW5JZk5lZWRlZCgpOworCisgICAgcmV0
dXJuIGxpbmVMYXlvdXRSZXN1bHQ7Cit9CisKK2Jvb2wgUmFuZ2VCYXNlZExpbmVCdWlsZGVyOjpp
c0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVMYXlvdXQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJbmxpbmVDb250ZW50Q2FjaGU6Oklu
bGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgY29uc3QgUGxhY2VkRmxvYXRzJiBwbGFjZWRGbG9hdHMp
Cit7CisgICAgaWYgKGlubGluZUl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIFJhbmdlIGJhc2VkIGxpbmUgYnVpbGRlciBvbmx5IHN1cHBvcnRzIHRoZSBmb2xs
b3dpbmcgY29udGVudCA8aW5saW5lIGJveD5lbGlnaWJsZSBmb3IgdGV4dCBvbmx5IGxheW91dDwv
aW5saW5lIGJveD4KKyAgICBhdXRvJiBpbmxpbmVJdGVtTGlzdCA9IGlubGluZUl0ZW1zLmNvbnRl
bnQoKTsKKyAgICBhdXRvIGlzRnVsbHlOZXN0ZWRDb250ZW50ID0gaW5saW5lSXRlbXMuaW5saW5l
Qm94Q291bnQoKSA9PSAxICYmIGlubGluZUl0ZW1MaXN0LmZpcnN0KCkuaXNJbmxpbmVCb3hTdGFy
dCgpICYmIGlubGluZUl0ZW1MaXN0Lmxhc3QoKS5pc0lubGluZUJveEVuZCgpICYmIGlubGluZUl0
ZW1MaXN0LnNpemUoKSA+IDI7CisgICAgaWYgKCFpc0Z1bGx5TmVzdGVkQ29udGVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgaW5saW5lQm94ID0gaW5saW5lSXRlbUxpc3Qu
Zmlyc3QoKS5sYXlvdXRCb3goKTsKKyAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGlubGluZUJveCk7CisgICAgaWYgKGlu
bGluZUJveEdlb21ldHJ5Lmhvcml6b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IEFkZCBzdGFydCBkZWNvcmF0aW9uIHN1cHBvcnQgaXMganVzdCBhIG1h
dHRlciBvZiBzaHJpbmtpbmcgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGZpcnN0IGxpbmUg
KG9yIG9uIHN1YnNlcXVlbnQgbGluZXMgd2hlbiBkZWNvcmF0aW9uIGJyZWFrIGlzIHByZXNlbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGlubGluZUJveC5zdHlsZSgp
LmJveERlY29yYXRpb25CcmVhaygpICE9IFJlbmRlclN0eWxlOjppbml0aWFsQm94RGVjb3JhdGlv
bkJyZWFrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBuZXN0
ZWQgdGV4dCBjb250ZW50LgorICAgIGlmICghaW5saW5lSXRlbXMuaGFzVGV4dEFuZExpbmVCcmVh
a09ubHlDb250ZW50KCkgfHwgaW5saW5lSXRlbXMucmVxdWlyZXNWaXN1YWxSZW9yZGVyaW5nKCkg
fHwgIXBsYWNlZEZsb2F0cy5pc0VtcHR5KCkgfHwgIVRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6
OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5yb290KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVp
bGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWQ0NDkwOTEy
YTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWJzdHJhY3RMaW5lQnVpbGRl
ci5oIgorI2luY2x1ZGUgIlRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIElubGluZUNvbnRlbnRCcmVh
a2VyOworCitjbGFzcyBSYW5nZUJhc2VkTGluZUJ1aWxkZXIgOiBwdWJsaWMgQWJzdHJhY3RMaW5l
QnVpbGRlciB7CitwdWJsaWM6CisgICAgUmFuZ2VCYXNlZExpbmVCdWlsZGVyKElubGluZUZvcm1h
dHRpbmdDb250ZXh0JiwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3Ry
YWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0Jik7CisgICAgTGluZUxheW91dFJlc3VsdCBsYXlv
dXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJl
dmlvdXNMaW5lPiYpIGZpbmFsOworCisgICAgc3RhdGljIGJvb2wgaXNFbGlnaWJsZUZvclJhbmdl
SW5saW5lTGF5b3V0KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5l
Q29udGVudENhY2hlOjpJbmxpbmVJdGVtcyYsIGNvbnN0IFBsYWNlZEZsb2F0cyYpOworCitwcml2
YXRlOgorICAgIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIgbV90ZXh0T25seVNpbXBsZUxpbmVC
dWlsZGVyOworfTsKKworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470456</attachid>
            <date>2024-03-21 06:08:25 -0700</date>
            <delta_ts>2024-03-21 11:02:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-271359-20240321060825.patch</filename>
            <type>text/plain</type>
            <size>18264</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2ZTYxMzVjNzdjMDVjNTIwOWEzZDViM2U5N2JjMzM0ZjBiM2NmN2E1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMjAgTWFyIDIwMjQgMjA6MzU6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgUmFuZ2VCYXNlZExpbmVCdWlsZGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjcxMzU5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClJhbmdl
QmFzZWRMaW5lQnVpbGRlciBpcyBtZWFudCB0byBzdXBwb3J0IGEgbWl4IG9mIGNvbnRlbnQgd2hl
cmUgYSBzaW1wbGlmaWVkIGxpbmUgYnVpbGRlciBjYW4gYmUgdXNlZCBvbgp3ZWxsLWRlZmluZWQg
Y29udGVudCByYW5nZShzKS4KQ3VycmVudGx5IGl0IHN1cHBvcnRzIGEgdmVyeSBzaW1wbGUgY2Fz
ZSBvbmx5IHdoZXJlIHRleHQgY29udGVudCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGlubGluZSBib3gu
CgogIGUuZy4gPGRpdj48c3Bhbj50aGlzIGlzIHRleHQgb25seSBjb250ZW50PC9zcGFuPjwvZGl2
PgoKSW4gdGhpcyBjYXNlIHdlIGNhbiB1c2UgdGhlIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIg
Zm9yIHRoZSBuZXN0ZWQgY29udGVudCB3aGlsZSBhZGp1c3RpbmcgdGhlIHJlc3VsdAp3aXRoIHRo
ZSBlbmNsb3NpbmcgaW5saW5lIGJveCBnZW9tZXRyeS4KCiogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQ6CiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHA6IEFkZGVkLgooV2Vi
Q29yZTo6TGF5b3V0OjpSYW5nZUJhc2VkTGluZUJ1aWxkZXI6OlJhbmdlQmFzZWRMaW5lQnVpbGRl
cik6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6aXNFbGln
aWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuaDogQWRkZWQuCi0tLQog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4u
Li9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNiArCiAuLi4v
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAgICAgfCAgIDUgKwogLi4uL2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgICA2ICstCiAuLi4vaW5s
aW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgICAgICAgICAgfCAxMTkgKysrKysrKysrKysr
KysrKysrCiAuLi4vaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5oICAgICAgICAgICAgfCAg
NDggKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFu
Z2VCYXNlZExpbmVCdWlsZGVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDMxZTNkMGFkZDhhYi4uMzcw
YTViMDUxYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc1OCw2ICsxNzU4LDcgQEAgbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAK
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUXVpcmtzLmNwcAogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAorbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcAogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5j
cHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnQuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZWUzODI2ODM1OTUuLmVhNjZlY2Nl
NzI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTQxMiw2ICs1NDEyLDcgQEAKIAkJRERERkU4M0YyODQ2RUNFNTAwNkYxRUU1
IC8qIGNvbnRlbnQtc2NyaXB0LmpzIGluIENvcHkgUERGLmpzIEV4dHJhcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERERGRTgzQzI4NDZFQ0Q0MDA2RjFFRTUgLyogY29udGVu
dC1zY3JpcHQuanMgKi87IH07CiAJCURERTk5MzFFMjc4RDBFNEIwMEY2MEQyNiAvKiBsaWJXZWJL
aXRBZGRpdGlvbnMuYSBpbiBQcm9kdWN0IERlcGVuZGVuY2llcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEREU5OTMwODI3OEQwODBCMDBGNjBEMjYgLyogbGliV2ViS2l0QWRk
aXRpb25zLmEgKi87IH07CiAJCURERUE5MUJBMjk5NDZFNDMwMDdFOUZEQSAvKiBJbmxpbmVMaW5l
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
RUE5MUI5Mjk5NDZFNDMwMDdFOUZEQSAvKiBJbmxpbmVMaW5lVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEREVDQ0MxRjJCQUJBODQ5MDA0
MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREVDQ0MxRTJCQUJBODQ4MDA0MUNEM0MgLyogUmFuZ2VC
YXNlZExpbmVCdWlsZGVyLmggKi87IH07CiAJCURERkNCNDgxMjkxNzAxNDYwMEM3OTlDNiAvKiBJ
bmxpbmVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERERkNCNDgwMjkxNzAxNDUwMEM3OTlDNiAvKiBJbmxpbmVGb3Jt
YXR0aW5nQ29uc3RyYWludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlERTVGODQxNjFGQTE4NkU5MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMw
MS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVG
ODNCMjFGQTE4Njc2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMwMS5jcHAgKi87IH07CiAJCURF
NUY4NDE3MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzAyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4M0VCMUZBMTg2QUQwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMzAyLmNwcCAqLzsgfTsKQEAgLTE4Nzg3LDYgKzE4Nzg4LDgg
QEAKIAkJRERERkU4M0MyODQ2RUNENDAwNkYxRUU1IC8qIGNvbnRlbnQtc2NyaXB0LmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gImNvbnRlbnQtc2NyaXB0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRERFOTkzMDgyNzhEMDgwQjAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9u
cy5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNo
aXZlLmFyOyBwYXRoID0gbGliV2ViS2l0QWRkaXRpb25zLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCURERUE5MUI5Mjk5NDZFNDMwMDdFOUZEQSAvKiBJbmxpbmVMaW5l
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZVR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERUNDQzFEMkJBQkE4M0UwMDQxQ0Qz
QyAvKiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFuZ2VC
YXNlZExpbmVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRERFQ0ND
MUUyQkFCQTg0ODAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERGQ0I0ODAyOTE3MDE0NTAwQzc5OUM2IC8qIElubGluZUZv
cm1hdHRpbmdDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmxpbmVGb3JtYXR0aW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREU1RjgzQjIxRkExODY3NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMDEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTMwMS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUY4M0IzMUZBMTg2NzcwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlMzU1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZpZWRTb3VyY2UzNTUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4
MjUsNiArMjE4MjgsOCBAQAogCQkJCUREOTQ2N0Q1MkE5MkQzQTMwMDQ1ODk3OSAvKiBJbnRyaW5z
aWNXaWR0aEhhbmRsZXIuY3BwICovLAogCQkJCUREOTQ2N0Q2MkE5MkQzQjgwMDQ1ODk3OSAvKiBJ
bnRyaW5zaWNXaWR0aEhhbmRsZXIuaCAqLywKIAkJCQlEREQ1MTdFQjJBOUZDNTQ0MDA2OUFGODEg
LyogTGluZUxheW91dFJlc3VsdC5oICovLAorCQkJCURERUNDQzFEMkJBQkE4M0UwMDQxQ0QzQyAv
KiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwICovLAorCQkJCURERUNDQzFFMkJBQkE4NDgwMDQx
Q0QzQyAvKiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCAqLywKIAkJCQlEREEzRDVEMDJBN0Q4NDdF
MDAwRUNFRTEgLyogVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAgKi8sCiAJCQkJRERBM0Q1
Q0UyQTdEODQ0RDAwMEVDRUUxIC8qIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaCAqLywKIAkJ
CSk7CkBAIC00MTUxNSw2ICs0MTUyMCw3IEBACiAJCQkJRjU1QjNEQ0MxMjUxRjEyRDAwM0VGMjY5
IC8qIFJhZGlvSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjU4RkZBNjE1MjJFRkFB
MDBERDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5MTgw
ODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEREVDQ0MxRjJC
QUJBODQ5MDA0MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0Q5RDUzQzBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RDRTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNEEwRkQ3MjVDMzQzNTAwMEQ5RUU5NyAvKiBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBkMGZlNGVjNDU4ZmUuLmYxNWM2
NmY4M2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkxheW91dElubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
VGV4dFV0aWwuaCIKQEAgLTE1MSw2ICsxNTIsMTAgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24K
ICAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVC
dWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgaW5saW5lSXRlbUxpc3Qg
fTsKICAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQoc2ltcGxpZmllZExpbmVCdWlsZGVyLCBpbmxp
bmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lKCksIGNvbnN0cmFpbnRz
LCBsaW5lRGFtYWdlKTsKICAgICB9CisgICAgaWYgKFJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6aXNF
bGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KCp0aGlzLCBpbmxpbmVDb250ZW50Q2FjaGUoKS5p
bmxpbmVJdGVtcygpLCBwbGFjZWRGbG9hdHMpKSB7CisgICAgICAgIGF1dG8gcmFuZ2VCYXNlZExp
bmVCdWlsZGVyID0gUmFuZ2VCYXNlZExpbmVCdWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRzLmhv
cml6b250YWwoKSwgaW5saW5lSXRlbUxpc3QgfTsKKyAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXQo
cmFuZ2VCYXNlZExpbmVCdWlsZGVyLCBpbmxpbmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwg
cHJldmlvdXNMaW5lKCksIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKKyAgICB9CiAgICAgYXV0
byBsaW5lQnVpbGRlciA9IExpbmVCdWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRzLmhvcml6b250
YWwoKSwgaW5saW5lSXRlbUxpc3QgfTsKICAgICByZXR1cm4gbGluZUxheW91dChsaW5lQnVpbGRl
ciwgaW5saW5lSXRlbUxpc3QsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSgpLCBjb25z
dHJhaW50cywgbGluZURhbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKaW5kZXggNDMx
NzRmNWE2MTM2Li4xYTNiODYxNjBkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKQEAgLTE0
MCw2ICsxNDAsMTAgQEAgcHVibGljOgogCiAgICAgICAgIFVCaURpTGV2ZWwgYmlkaUxldmVsKCkg
Y29uc3QgeyByZXR1cm4gbV9iaWRpTGV2ZWw7IH0KIAorICAgICAgICAvLyBGSVhNRTogTWF5YmUg
YWRkIGNyZWF0ZSBmdW5jdGlvbnMgaW50ZWFkPworICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRl
bSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7Cisg
ICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiBsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJdGVtLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGluZTsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIElubGluZUNvbnRlbnRBbGlnbmVyOwpAQCAtMTQ4LDggKzE1Miw2IEBAIHB1
YmxpYzoKICAgICAgICAgUnVuKGNvbnN0IElubGluZVRleHRJdGVtJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIFJ1bihjb25zdCBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbSYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CiAgICAgICAg
IFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7Ci0gICAgICAg
IFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW0mIGxpbmVTcGFu
bmluZ0lubGluZUJveEl0ZW0sIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKIAogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9CiAgICAgICAgIHZvaWQgZXhwYW5kKGNvbnN0
IElubGluZVRleHRJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFu
Z2VCYXNlZExpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZWE2ZjBmN2Y4YjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJh
c2VkTGluZUJ1aWxkZXIuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhbmdlQmFzZWRMaW5lQnVpbGRlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworUmFuZ2VCYXNlZExpbmVCdWls
ZGVyOjpSYW5nZUJhc2VkTGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6b250YWxD
b25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQorICAgIDog
QWJzdHJhY3RMaW5lQnVpbGRlcihpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgcm9vdEhvcml6b250
YWxDb25zdHJhaW50cywgaW5saW5lSXRlbUxpc3QpCisgICAgLCBtX3RleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIHJvb3RIb3Jpem9udGFsQ29uc3RyYWlu
dHMsIGlubGluZUl0ZW1MaXN0KQoreworfQorCitMaW5lTGF5b3V0UmVzdWx0IFJhbmdlQmFzZWRM
aW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+JiBwcmV2aW91c0xpbmUpCit7Cisg
ICAgLy8gMS4gU2hyaW5rIHRoZSBsYXlvdXQgcmFuZ2UgdGhhdCB3ZSBjYW4gcnVuIHRleHQtb25s
eSBidWlsZGVyIG9uIChjdXJyZW50bHkgaXQncyBqdXN0IHRoZSBvcGVuaW5nL2Nsb3NpbmcgaW5s
aW5lIGJveCkKKyAgICAvLyAyLiBSdW4gdGV4dC1vbmx5IGxpbmUgYnVpbGRlcgorICAgIC8vIDMu
IEluc2VydC9hcHBlbmQgdGhlIG1pc3NpbmcgaW5saW5lIGJveCBydW4KKyAgICBhdXRvIGlzRmly
c3RMaW5lID0gIWxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLnN0YXJ0SW5kZXgoKTsKKworICAg
IGF1dG8gYWRqdXN0ZWROZWVkc0xheW91dFJhbmdlID0gWyZdIHsKKyAgICAgICAgYXV0byBuZWVk
c0xheW91dFJhbmdlID0gbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2U7CisgICAgICAgIGlmIChp
c0ZpcnN0TGluZSkgeworICAgICAgICAgICAgQVNTRVJUKG1faW5saW5lSXRlbUxpc3RbMF0uaXNJ
bmxpbmVCb3hTdGFydCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghbmVlZHNMYXlvdXRSYW5nZS5z
dGFydC5vZmZzZXQpOworICAgICAgICAgICAgLy8gU2tpcCBsZWFkaW5nIElubGluZUl0ZW1TdGFy
dCAoZS5nLiA8c3Bhbj4pCisgICAgICAgICAgICArK25lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQuaW5k
ZXg7CisgICAgICAgIH0KKyAgICAgICAgLy8gU0tpcCB0cmFpbGluZyBJbmxpbmVJdGVtRW5kIChl
LmcuIDwvc3Bhbj4pCisgICAgICAgIEFTU0VSVChtX2lubGluZUl0ZW1MaXN0Lmxhc3QoKS5pc0lu
bGluZUJveEVuZCgpKTsKKyAgICAgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdlLmVuZC5vZmZz
ZXQpOworICAgICAgICAtLW5lZWRzTGF5b3V0UmFuZ2UuZW5kLmluZGV4OworICAgICAgICByZXR1
cm4gbmVlZHNMYXlvdXRSYW5nZTsKKyAgICB9OworICAgIGF1dG8gbmVlZHNMYXlvdXRSYW5nZSA9
IGFkanVzdGVkTmVlZHNMYXlvdXRSYW5nZSgpOworICAgIEFTU0VSVCghbmVlZHNMYXlvdXRSYW5n
ZS5pc0VtcHR5KCkpOworCisgICAgYXV0byBsaW5lTGF5b3V0UmVzdWx0ID0gbV90ZXh0T25seVNp
bXBsZUxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQoeyBuZWVkc0xheW91dFJhbmdlLCBs
aW5lSW5wdXQuaW5pdGlhbExvZ2ljYWxSZWN0IH0sIHByZXZpb3VzTGluZSk7CisKKyAgICBhdXRv
IGluc2VydExlYWRpbmdJbmxpbmVCb3hSdW4gPSBbJl0geworICAgICAgICBhdXRvJiBsZWFkaW5n
SW5saW5lSXRlbSA9IG1faW5saW5lSXRlbUxpc3QuZmlyc3QoKTsKKyAgICAgICAgQVNTRVJUKGxl
YWRpbmdJbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSk7CisKKyAgICAgICAgaWYgKGlzRmly
c3RMaW5lKSB7CisgICAgICAgICAgICBBU1NFUlQoIXByZXZpb3VzTGluZSk7CisgICAgICAgICAg
ICBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuaW5zZXJ0KDAsIHsgbGVhZGluZ0lubGlu
ZUl0ZW0sIGxlYWRpbmdJbmxpbmVJdGVtLmZpcnN0TGluZVN0eWxlKCksIHsgfSB9KTsKKyAgICAg
ICAgICAgIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLnN0YXJ0ID0gbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgLy8gU3Vic2VxdWVudCBsaW5lcyBuZWVkIGxlYWRpbmcgc3Bhbm5pbmcgaW5saW5l
IGJveCBydW4uCisgICAgICAgIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5pbnNlcnQo
MCwgeyBsZWFkaW5nSW5saW5lSXRlbSwgeyB9LCB7IH0gfSk7CisgICAgfTsKKyAgICBpbnNlcnRM
ZWFkaW5nSW5saW5lQm94UnVuKCk7CisKKyAgICBhdXRvIGFwcGVuZFRyYWlsaW5nSW5saW5lQm94
UnVuSWZOZWVkZWQgPSBbJl0geworICAgICAgICBpZiAobGluZUxheW91dFJlc3VsdC5pbmxpbmVJ
dGVtUmFuZ2UuZW5kICE9IG5lZWRzTGF5b3V0UmFuZ2UuZW5kKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBhdXRvJiB0cmFpbGluZ0lubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1MaXN0Lmxh
c3QoKTsKKyAgICAgICAgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50LmFwcGVuZCh7IHRy
YWlsaW5nSW5saW5lSXRlbSwgaXNGaXJzdExpbmUgPyB0cmFpbGluZ0lubGluZUl0ZW0uZmlyc3RM
aW5lU3R5bGUoKSA6IHRyYWlsaW5nSW5saW5lSXRlbS5zdHlsZSgpLCBsaW5lTGF5b3V0UmVzdWx0
LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGggfSk7CisgICAgICAgIGxpbmVMYXlvdXRSZXN1
bHQuaW5saW5lSXRlbVJhbmdlLmVuZCA9IGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLmVuZDsK
KyAgICB9OworICAgIGFwcGVuZFRyYWlsaW5nSW5saW5lQm94UnVuSWZOZWVkZWQoKTsKKworICAg
IHJldHVybiBsaW5lTGF5b3V0UmVzdWx0OworfQorCitib29sIFJhbmdlQmFzZWRMaW5lQnVpbGRl
cjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5lQ29udGVudENhY2hl
OjpJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IFBsYWNlZEZsb2F0cyYgcGxhY2VkRmxv
YXRzKQoreworICAgIGlmIChpbmxpbmVJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBSYW5nZSBiYXNlZCBsaW5lIGJ1aWxkZXIgb25seSBzdXBwb3J0cyB0aGUg
Zm9sbG93aW5nIGNvbnRlbnQgPGlubGluZSBib3g+ZWxpZ2libGUgZm9yIHRleHQgb25seSBsYXlv
dXQ8L2lubGluZSBib3g+CisgICAgYXV0byYgaW5saW5lSXRlbUxpc3QgPSBpbmxpbmVJdGVtcy5j
b250ZW50KCk7CisgICAgYXV0byBpc0Z1bGx5TmVzdGVkQ29udGVudCA9IGlubGluZUl0ZW1zLmlu
bGluZUJveENvdW50KCkgPT0gMSAmJiBpbmxpbmVJdGVtTGlzdC5maXJzdCgpLmlzSW5saW5lQm94
U3RhcnQoKSAmJiBpbmxpbmVJdGVtTGlzdC5sYXN0KCkuaXNJbmxpbmVCb3hFbmQoKSAmJiBpbmxp
bmVJdGVtTGlzdC5zaXplKCkgPiAyOworICAgIGlmICghaXNGdWxseU5lc3RlZENvbnRlbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGlubGluZUJveCA9IGlubGluZUl0ZW1M
aXN0LmZpcnN0KCkubGF5b3V0Qm94KCk7CisgICAgYXV0byYgaW5saW5lQm94R2VvbWV0cnkgPSBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpOworICAgIGlm
IChpbmxpbmVCb3hHZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgc3RhcnQgZGVjb3JhdGlvbiBzdXBwb3J0IGlzIGp1c3Qg
YSBtYXR0ZXIgb2Ygc2hyaW5raW5nIHRoZSBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZSBmaXJzdCBs
aW5lIChvciBvbiBzdWJzZXF1ZW50IGxpbmVzIHdoZW4gZGVjb3JhdGlvbiBicmVhayBpcyBwcmVz
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChpbmxpbmVCb3guc3R5
bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWsoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEJveERlY29y
YXRpb25CcmVhaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUg
bmVzdGVkIHRleHQgY29udGVudC4KKyAgICBpZiAoIWlubGluZUl0ZW1zLmhhc1RleHRBbmRMaW5l
QnJlYWtPbmx5Q29udGVudCgpIHx8IGlubGluZUl0ZW1zLnJlcXVpcmVzVmlzdWFsUmVvcmRlcmlu
ZygpIHx8ICFwbGFjZWRGbG9hdHMuaXNFbXB0eSgpIHx8ICFUZXh0T25seVNpbXBsZUxpbmVCdWls
ZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZElubGluZUxheW91dEJ5U3R5bGUoaW5saW5lRm9y
bWF0dGluZ0NvbnRleHQucm9vdCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGlu
ZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlkNDQ5
MDkxMmE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5oCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFic3RyYWN0TGluZUJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBJbmxpbmVDb250ZW50
QnJlYWtlcjsKKworY2xhc3MgUmFuZ2VCYXNlZExpbmVCdWlsZGVyIDogcHVibGljIEFic3RyYWN0
TGluZUJ1aWxkZXIgeworcHVibGljOgorICAgIFJhbmdlQmFzZWRMaW5lQnVpbGRlcihJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYpOworICAgIExpbmVMYXlvdXRSZXN1bHQg
bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFByZXZpb3VzTGluZT4mKSBmaW5hbDsKKworICAgIHN0YXRpYyBib29sIGlzRWxpZ2libGVGb3JS
YW5nZUlubGluZUxheW91dChjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElu
bGluZUNvbnRlbnRDYWNoZTo6SW5saW5lSXRlbXMmLCBjb25zdCBQbGFjZWRGbG9hdHMmKTsKKwor
cHJpdmF0ZToKKyAgICBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIG1fdGV4dE9ubHlTaW1wbGVM
aW5lQnVpbGRlcjsKK307CisKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470463</attachid>
            <date>2024-03-21 11:02:55 -0700</date>
            <delta_ts>2024-03-21 17:11:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-271359-20240321110255.patch</filename>
            <type>text/plain</type>
            <size>30792</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1NWZiZDc5NWExZjFiYjNkZWM5Y2E3ZmE0NWJjZjk4MWI2MmQ4NTE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMjAgTWFyIDIwMjQgMjA6MzU6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgUmFuZ2VCYXNlZExpbmVCdWlsZGVyCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjcxMzU5CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KClJhbmdl
QmFzZWRMaW5lQnVpbGRlciBpcyBtZWFudCB0byBzdXBwb3J0IGEgbWl4IG9mIGNvbnRlbnQgd2hl
cmUgYSBzaW1wbGlmaWVkIGxpbmUgYnVpbGRlciBjYW4gYmUgdXNlZCBvbgp3ZWxsLWRlZmluZWQg
Y29udGVudCByYW5nZShzKS4KQ3VycmVudGx5IGl0IHN1cHBvcnRzIGEgdmVyeSBzaW1wbGUgY2Fz
ZSBvbmx5IHdoZXJlIHRleHQgY29udGVudCBpcyBuZXN0ZWQgaW5zaWRlIGFuIGlubGluZSBib3gu
CgogIGUuZy4gPGRpdj48c3Bhbj50aGlzIGlzIHRleHQgb25seSBjb250ZW50PC9zcGFuPjwvZGl2
PgoKSW4gdGhpcyBjYXNlIHdlIGNhbiB1c2UgdGhlIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIg
Zm9yIHRoZSBuZXN0ZWQgY29udGVudCB3aGlsZSBhZGp1c3RpbmcgdGhlIHJlc3VsdAp3aXRoIHRo
ZSBlbmNsb3NpbmcgaW5saW5lIGJveCBnZW9tZXRyeS4KCiogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQ6CiogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHA6IEFkZGVkLgooV2Vi
Q29yZTo6TGF5b3V0OjpSYW5nZUJhc2VkTGluZUJ1aWxkZXI6OlJhbmdlQmFzZWRMaW5lQnVpbGRl
cik6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6aXNFbGln
aWJsZUZvclJhbmdlSW5saW5lTGF5b3V0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuaDogQWRkZWQuCi0tLQog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4u
Li9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNiArCiAuLi4v
aW5saW5lL0Fic3RyYWN0TGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgfCAgIDggKy0KIC4uLi9p
bmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRlci5oICAgICAgICAgICAgICB8ICAgNSArLQogLi4uL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgICAgIHwgICA5ICstCiAuLi4vZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggICAgfCAgIDYgKy0KIC4uLi9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2lubGlu
ZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwICAgICAgICAgIHwgICA4ICstCiAuLi4vaW5saW5l
L1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgICAgICAgICAgfCAxMjIgKysrKysrKysrKysrKysr
KysrCiAuLi4vaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5oICAgICAgICAgICAgfCAgNDgg
KysrKysrKwogLi4uL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcCAgICAgIHwg
IDI3ICsrLS0KIC4uLi9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5oICAgICAgICB8
ICAgNCArLQogMTIgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5n
ZUJhc2VkTGluZUJ1aWxkZXIuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMzFlM2QwYWRkOGFiLi4zNzBh
NWIwNTFiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzU4LDYgKzE3NTgsNyBAQCBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVRdWlya3MuY3BwCiBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCitsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNw
cAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudC5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZTM4MjY4MzU5NS4uZWE2NmVjY2U3
MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01NDEyLDYgKzU0MTIsNyBAQAogCQlERERGRTgzRjI4NDZFQ0U1MDA2RjFFRTUg
LyogY29udGVudC1zY3JpcHQuanMgaW4gQ29weSBQREYuanMgRXh0cmFzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREREZFODNDMjg0NkVDRDQwMDZGMUVFNSAvKiBjb250ZW50
LXNjcmlwdC5qcyAqLzsgfTsKIAkJRERFOTkzMUUyNzhEMEU0QjAwRjYwRDI2IC8qIGxpYldlYktp
dEFkZGl0aW9ucy5hIGluIFByb2R1Y3QgRGVwZW5kZW5jaWVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERERTk5MzA4Mjc4RDA4MEIwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRp
dGlvbnMuYSAqLzsgfTsKIAkJRERFQTkxQkEyOTk0NkU0MzAwN0U5RkRBIC8qIElubGluZUxpbmVU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERF
QTkxQjkyOTk0NkU0MzAwN0U5RkRBIC8qIElubGluZUxpbmVUeXBlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURERUNDQzFGMkJBQkE4NDkwMDQx
Q0QzQyAvKiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERUNDQzFFMkJBQkE4NDgwMDQxQ0QzQyAvKiBSYW5nZUJh
c2VkTGluZUJ1aWxkZXIuaCAqLzsgfTsKIAkJRERGQ0I0ODEyOTE3MDE0NjAwQzc5OUM2IC8qIElu
bGluZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRERGQ0I0ODAyOTE3MDE0NTAwQzc5OUM2IC8qIElubGluZUZvcm1h
dHRpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCURFNUY4NDE2MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzAx
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4
M0IyMUZBMTg2NzYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzAxLmNwcCAqLzsgfTsKIAkJREU1
Rjg0MTcxRkExODZFOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMDIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1RjgzRUIxRkExODZBRDAwNkRC
NjNBIC8qIFVuaWZpZWRTb3VyY2UzMDIuY3BwICovOyB9OwpAQCAtMTg3ODcsNiArMTg3ODgsOCBA
QAogCQlERERGRTgzQzI4NDZFQ0Q0MDA2RjFFRTUgLyogY29udGVudC1zY3JpcHQuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSAiY29udGVudC1zY3JpcHQuanMiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEREU5OTMwODI3OEQwODBCMDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25z
LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hp
dmUuYXI7IHBhdGggPSBsaWJXZWJLaXRBZGRpdGlvbnMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJRERFQTkxQjkyOTk0NkU0MzAwN0U5RkRBIC8qIElubGluZUxpbmVU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRERFQ0NDMUQyQkFCQTgzRTAwNDFDRDND
IC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5nZUJh
c2VkTGluZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEREVDQ0Mx
RTJCQUJBODQ4MDA0MUNEM0MgLyogUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlQmFzZWRMaW5lQnVpbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEREZDQjQ4MDI5MTcwMTQ1MDBDNzk5QzYgLyogSW5saW5lRm9y
bWF0dGluZ0NvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
bGluZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERTVGODNCMjFGQTE4Njc2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTMwMS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlmaWVkU291cmNlMzAxLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU1RjgzQjMxRkExODY3NzAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzNTUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VW5pZmllZFNvdXJjZTM1NS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgy
NSw2ICsyMTgyOCw4IEBACiAJCQkJREQ5NDY3RDUyQTkyRDNBMzAwNDU4OTc5IC8qIEludHJpbnNp
Y1dpZHRoSGFuZGxlci5jcHAgKi8sCiAJCQkJREQ5NDY3RDYyQTkyRDNCODAwNDU4OTc5IC8qIElu
dHJpbnNpY1dpZHRoSGFuZGxlci5oICovLAogCQkJCURERDUxN0VCMkE5RkM1NDQwMDY5QUY4MSAv
KiBMaW5lTGF5b3V0UmVzdWx0LmggKi8sCisJCQkJRERFQ0NDMUQyQkFCQTgzRTAwNDFDRDNDIC8q
IFJhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgKi8sCisJCQkJRERFQ0NDMUUyQkFCQTg0ODAwNDFD
RDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRlci5oICovLAogCQkJCUREQTNENUQwMkE3RDg0N0Uw
MDBFQ0VFMSAvKiBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcCAqLywKIAkJCQlEREEzRDVD
RTJBN0Q4NDREMDAwRUNFRTEgLyogVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5oICovLAogCQkJ
KTsKQEAgLTQxNTE1LDYgKzQxNTIwLDcgQEAKIAkJCQlGNTVCM0RDQzEyNTFGMTJEMDAzRUYyNjkg
LyogUmFkaW9JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2NThGRkE2MTUyMkVGQUEw
MERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkxODA4
MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCURERUNDQzFGMkJB
QkE4NDkwMDQxQ0QzQyAvKiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzRDlENTNDMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzRENFMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QTBGRDcyNUMzNDM1MDAwRDlFRTk3IC8qIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9B
YnN0cmFjdExpbmVCdWlsZGVyLmNwcAppbmRleCBmODdkMGVkODI5ZGQuLjQ3NWMzNGFmYjQ2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvQWJzdHJhY3RMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRlci5jcHAKQEAgLTMzLDEw
ICszMywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLUFi
c3RyYWN0TGluZUJ1aWxkZXI6OkFic3RyYWN0TGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9v
dEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1M
aXN0KQorQWJzdHJhY3RMaW5lQnVpbGRlcjo6QWJzdHJhY3RMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IEVsZW1lbnRCb3gm
IHJvb3RCb3gsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBjb25zdCBJbmxpbmVJdGVtTGlzdCYgaW5saW5lSXRlbUxpc3QpCiAgICAgOiBtX2xpbmUoaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2lubGluZUl0ZW1MaXN0KGlubGluZUl0ZW1M
aXN0KQogICAgICwgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCkKKyAgICAsIG1fcm9vdEJveChyb290Qm94KQogICAgICwgbV9yb290SG9yaXpvbnRhbENv
bnN0cmFpbnRzKHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiB9CkBAIC05NSwxMSArOTYs
NiBAQCB2b2lkIEFic3RyYWN0TGluZUJ1aWxkZXI6OnNldEludHJpbnNpY1dpZHRoTW9kZShJbnRy
aW5zaWNXaWR0aE1vZGUgaW50cmluc2ljV2lkdAogICAgIG1faW5saW5lQ29udGVudEJyZWFrZXIu
c2V0SXNNaW5pbXVtSW5JbnRyaW5zaWNXaWR0aE1vZGUobV9pbnRyaW5zaWNXaWR0aE1vZGUgPT0g
SW50cmluc2ljV2lkdGhNb2RlOjpNaW5pbXVtKTsKIH0KIAotY29uc3QgRWxlbWVudEJveCYgQWJz
dHJhY3RMaW5lQnVpbGRlcjo6cm9vdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZvcm1hdHRpbmdD
b250ZXh0KCkucm9vdCgpOwotfQotCiBjb25zdCBSZW5kZXJTdHlsZSYgQWJzdHJhY3RMaW5lQnVp
bGRlcjo6cm9vdFN0eWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNGaXJzdEZvcm1hdHRlZExp
bmUoKSA/IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpIDogcm9vdCgpLnN0eWxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9BYnN0
cmFjdExpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmgKaW5kZXggMTVkYjg0ZTdlNmZlLi5jNTAy
ZDQ3NmY5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0Fic3RyYWN0TGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW50cmluc2ljV2lkdGhNb2RlKElu
dHJpbnNpY1dpZHRoTW9kZSk7CiAKIHByb3RlY3RlZDoKLSAgICBBYnN0cmFjdExpbmVCdWlsZGVy
KElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jp
em9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0Jik7CisgICAgQWJzdHJhY3RM
aW5lQnVpbGRlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IEVsZW1lbnRCb3gmIHJv
b3RCb3gsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBj
b25zdCBJbmxpbmVJdGVtTGlzdCYpOwogCiAgICAgdm9pZCByZXNldCgpOwogCkBAIC02Nyw3ICs2
Nyw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUoKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKTsKICAgICBj
b25zdCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0U3RhdGUoKS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCk7IH0KLSAgICBjb25zdCBFbGVt
ZW50Qm94JiByb290KCkgY29uc3Q7CisgICAgY29uc3QgRWxlbWVudEJveCYgcm9vdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdEJveDsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUo
KSBjb25zdDsKIAogcHJvdGVjdGVkOgpAQCAtODAsNiArODAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ7CisgICAgY29uc3QgRWxlbWVudEJveCYgbV9yb290Qm94OwogICAgIEhvcml6b250YWxD
b25zdHJhaW50cyBtX3Jvb3RIb3Jpem9udGFsQ29uc3RyYWludHM7CiAKICAgICBJbmxpbmVDb250
ZW50QnJlYWtlciBtX2lubGluZUNvbnRlbnRCcmVha2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQwZmU0ZWM0NThmZS4uM2EwN2Uz
YzkyZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiTGF5b3V0SW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlJhbmdlQmFzZWRMaW5lQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJU
ZXh0VXRpbC5oIgpAQCAtMTQ3LDEwICsxNDgsMTQgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24K
ICAgICAgICAgICAgIGxheW91dFN0YXRlKCkuc2V0QXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUo
eyAqYmFsYW5jZWRMaW5lV2lkdGhzIH0pOwogICAgIH0KIAotICAgIGlmIChUZXh0T25seVNpbXBs
ZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0
QnlDb250ZW50KGlubGluZUNvbnRlbnRDYWNoZSgpLmlubGluZUl0ZW1zKCksIHBsYWNlZEZsb2F0
cykgJiYgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZpZWRJ
bmxpbmVMYXlvdXRCeVN0eWxlKHJvb3QoKSkpIHsKLSAgICAgICAgYXV0byBzaW1wbGlmaWVkTGlu
ZUJ1aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKSwgaW5saW5lSXRlbUxpc3QgfTsKKyAgICBpZiAoVGV4dE9ubHlTaW1wbGVM
aW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZpZWRUZXh0T25seUlubGluZUxheW91dEJ5
Q29udGVudChpbmxpbmVDb250ZW50Q2FjaGUoKS5pbmxpbmVJdGVtcygpLCBwbGFjZWRGbG9hdHMp
ICYmIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5s
aW5lTGF5b3V0QnlTdHlsZShyb290KCkuc3R5bGUoKSkpIHsKKyAgICAgICAgYXV0byBzaW1wbGlm
aWVkTGluZUJ1aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgKnRoaXMsIHJvb3Qo
KSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBpbmxpbmVJdGVtTGlzdCB9OwogICAgICAgICBy
ZXR1cm4gbGluZUxheW91dChzaW1wbGlmaWVkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBu
ZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2Up
OwogICAgIH0KKyAgICBpZiAoUmFuZ2VCYXNlZExpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yUmFu
Z2VJbmxpbmVMYXlvdXQoKnRoaXMsIGlubGluZUNvbnRlbnRDYWNoZSgpLmlubGluZUl0ZW1zKCks
IHBsYWNlZEZsb2F0cykpIHsKKyAgICAgICAgYXV0byByYW5nZUJhc2VkTGluZUJ1aWxkZXIgPSBS
YW5nZUJhc2VkTGluZUJ1aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBp
bmxpbmVJdGVtTGlzdCB9OworICAgICAgICByZXR1cm4gbGluZUxheW91dChyYW5nZUJhc2VkTGlu
ZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUo
KSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOworICAgIH0KICAgICBhdXRvIGxpbmVCdWlsZGVy
ID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBpbmxpbmVJ
dGVtTGlzdCB9OwogICAgIHJldHVybiBsaW5lTGF5b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVt
TGlzdCwgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lKCksIGNvbnN0cmFpbnRzLCBsaW5l
RGFtYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRleCA0MzE3NGY1YTYxMzYuLjFh
M2I4NjE2MGQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApAQCAtMTQwLDYgKzE0MCwxMCBA
QCBwdWJsaWM6CiAKICAgICAgICAgVUJpRGlMZXZlbCBiaWRpTGV2ZWwoKSBjb25zdCB7IHJldHVy
biBtX2JpZGlMZXZlbDsgfQogCisgICAgICAgIC8vIEZJWE1FOiBNYXliZSBhZGQgY3JlYXRlIGZ1
bmN0aW9ucyBpbnRlYWQ/CisgICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgUnVuKGNv
bnN0IElubGluZUl0ZW0mIGxpbmVTcGFubmluZ0lubGluZUJveEl0ZW0sIElubGluZUxheW91dFVu
aXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5lOwogICAgICAgICBmcmllbmQgY2xhc3Mg
SW5saW5lQ29udGVudEFsaWduZXI7CkBAIC0xNDgsOCArMTUyLDYgQEAgcHVibGljOgogICAgICAg
ICBSdW4oY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAg
ICAgICAgUnVuKGNvbnN0IElubGluZVNvZnRMaW5lQnJlYWtJdGVtJiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgUnVuKGNvbnN0IElu
bGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExl
ZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKLSAgICAgICAgUnVuKGNvbnN0IElu
bGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExl
ZnQpOwotICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRlbSYgbGluZVNwYW5uaW5nSW5saW5lQm94
SXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsV2lkdGgpOwogCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGU7IH0KICAgICAgICAgdm9pZCBleHBhbmQoY29uc3QgSW5saW5lVGV4dEl0
ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggYmY0M2M0ZDljNzRhLi5iYjZkMjhmYWM0YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTIzMCw3ICsyMzAs
NyBAQCBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpyZXNldCgpCiAKIAogTGluZUJ1aWxkZXI6
OkxpbmVCdWlsZGVyKElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVtTGlzdCkKLSAgICA6IEFic3RyYWN0TGluZUJ1
aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMs
IGlubGluZUl0ZW1MaXN0KQorICAgIDogQWJzdHJhY3RMaW5lQnVpbGRlcihpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQucm9vdCgpLCByb290SG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBpbmxpbmVJdGVtTGlzdCkKICAgICAsIG1fZmxvYXRpbmdDb250ZXh0KGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmZsb2F0aW5nQ29udGV4dCgpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmlu
c2ljV2lkdGhIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAKaW5kZXggY2UyNGM3MjAwMDQz
Li4wNzk1NDcwYjA0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhI
YW5kbGVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBJbnRyaW5zaWNXaWR0aEhhbmRsZXI6OkludHJp
bnNpY1dpZHRoSGFuZGxlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybQogewog
ICAgIGF1dG8gaW5pdGlhbGl6ZVJhbmdlQW5kVGV4dE9ubHlCdWlsZGVyRWxpZ2liaWxpdHkgPSBb
Jl0gewogICAgICAgICBtX2lubGluZUl0ZW1SYW5nZSA9IHsgMCwgaW5saW5lSXRlbXMuY29udGVu
dCgpLnNpemUoKSB9OwotICAgICAgICBtX21heVVzZVNpbXBsaWZpZWRUZXh0T25seUlubGluZUxh
eW91dEluUmFuZ2UgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2lt
cGxpZmllZElubGluZUxheW91dEJ5U3R5bGUocm9vdCgpKTsKKyAgICAgICAgbV9tYXlVc2VTaW1w
bGlmaWVkVGV4dE9ubHlJbmxpbmVMYXlvdXRJblJhbmdlID0gVGV4dE9ubHlTaW1wbGVMaW5lQnVp
bGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZpZWRJbmxpbmVMYXlvdXRCeVN0eWxlKHJvb3QoKS5z
dHlsZSgpKTsKICAgICAgICAgaWYgKCFtX21heVVzZVNpbXBsaWZpZWRUZXh0T25seUlubGluZUxh
eW91dEluUmFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBJ
bmxpbmVMYXlvdXRVbml0IEludHJpbnNpY1dpZHRoSGFuZGxlcjo6bWluaW11bUNvbnRlbnRTaXpl
KCkKICAgICBpZiAoaXNDb250ZW50RWxpZ2libGVGb3JOb25MaW5lQnVpbGRlck1pbmltdW1XaWR0
aChyb290KCksIG1fbWF5VXNlU2ltcGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0SW5SYW5nZSkp
CiAgICAgICAgIG1pbmltdW1Db250ZW50U2l6ZSA9IHNpbXBsaWZpZWRNaW5pbXVtV2lkdGgocm9v
dCgpKTsKICAgICBlbHNlIGlmIChtX21heVVzZVNpbXBsaWZpZWRUZXh0T25seUlubGluZUxheW91
dEluUmFuZ2UpIHsKLSAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBUZXh0T25s
eVNpbXBsZUxpbmVCdWlsZGVyIHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgeyB9LCBpbmxpbmVJdGVt
TGlzdCgpIH07CisgICAgICAgIGF1dG8gc2ltcGxpZmllZExpbmVCdWlsZGVyID0gVGV4dE9ubHlT
aW1wbGVMaW5lQnVpbGRlciB7IGZvcm1hdHRpbmdDb250ZXh0KCksIGZvcm1hdHRpbmdDb250ZXh0
KCkucm9vdCgpLCB7IH0sIGlubGluZUl0ZW1MaXN0KCkgfTsKICAgICAgICAgbWluaW11bUNvbnRl
bnRTaXplID0gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNvbnN0cmFpbnQoSW50cmluc2ljV2lk
dGhNb2RlOjpNaW5pbXVtLCBzaW1wbGlmaWVkTGluZUJ1aWxkZXIsIE1heUNhY2hlTGF5b3V0UmVz
dWx0OjpObyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBsaW5lQnVpbGRlciA9IExpbmVC
dWlsZGVyIHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgeyB9LCBpbmxpbmVJdGVtTGlzdCgpIH07CkBA
IC0xNTEsMTEgKzE1MSwxMSBAQCBJbmxpbmVMYXlvdXRVbml0IEludHJpbnNpY1dpZHRoSGFuZGxl
cjo6bWF4aW11bUNvbnRlbnRTaXplKCkKICAgICAgICAgaWYgKG1fbWF4aW11bUNvbnRlbnRXaWR0
aEJldHdlZW5MaW5lQnJlYWtzICYmIG1heVVzZUNvbnRlbnRXaWR0aEJldHdlZW5MaW5lQnJlYWtz
QXNNYXhpbXVtU2l6ZShyb290KCksIGlubGluZUl0ZW1MaXN0KCkpKSB7CiAgICAgICAgICAgICBt
YXhpbXVtQ29udGVudFNpemUgPSAqbV9tYXhpbXVtQ29udGVudFdpZHRoQmV0d2VlbkxpbmVCcmVh
a3M7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxk
ZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgeyB9
LCBpbmxpbmVJdGVtTGlzdCgpIH07CisgICAgICAgICAgICBhdXRvIHNpbXBsaWZpZWRMaW5lQnVp
bGRlciA9IFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIgeyBmb3JtYXR0aW5nQ29udGV4dCgpLCBm
b3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSwgeyB9LCBpbmxpbmVJdGVtTGlzdCgpIH07CiAgICAg
ICAgICAgICBBU1NFUlQoc3RkOjphYnMobWF4aW11bUNvbnRlbnRTaXplIC0gY29tcHV0ZWRJbnRy
aW5zaWNXaWR0aEZvckNvbnN0cmFpbnQoSW50cmluc2ljV2lkdGhNb2RlOjpNYXhpbXVtLCBzaW1w
bGlmaWVkTGluZUJ1aWxkZXIsIE1heUNhY2hlTGF5b3V0UmVzdWx0OjpObykpIDwgMSk7CiAjZW5k
aWYKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gc2ltcGxpZmllZExpbmVCdWls
ZGVyID0gVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlciB7IGZvcm1hdHRpbmdDb250ZXh0KCksIHsg
fSwgaW5saW5lSXRlbUxpc3QoKSB9OworICAgICAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1
aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgZm9ybWF0dGluZ0NvbnRleHQoKSwg
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCksIHsgfSwgaW5saW5lSXRlbUxpc3QoKSB9OwogICAg
ICAgICAgICAgbWF4aW11bUNvbnRlbnRTaXplID0gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNv
bnN0cmFpbnQoSW50cmluc2ljV2lkdGhNb2RlOjpNYXhpbXVtLCBzaW1wbGlmaWVkTGluZUJ1aWxk
ZXIsIG1heUNhY2hlTGF5b3V0UmVzdWx0KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9S
YW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY0NTJkNzRhODEyYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1Jhbmdl
QmFzZWRMaW5lQnVpbGRlci5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitSYW5nZUJhc2VkTGluZUJ1
aWxkZXI6OlJhbmdlQmFzZWRMaW5lQnVpbGRlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYgaW5saW5lSXRlbUxpc3QpCisgICAg
OiBBYnN0cmFjdExpbmVCdWlsZGVyKGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBpbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5yb290KCksIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGlubGluZUl0
ZW1MaXN0KQorICAgICwgbV90ZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyKGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LCBkb3duY2FzdDxFbGVtZW50Qm94PihpbmxpbmVJdGVtTGlzdFswXS5sYXlvdXRC
b3goKSksIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGlubGluZUl0ZW1MaXN0KQoreworfQor
CitMaW5lTGF5b3V0UmVzdWx0IFJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2
aW91c0xpbmU+JiBwcmV2aW91c0xpbmUpCit7CisgICAgLy8gMS4gU2hyaW5rIHRoZSBsYXlvdXQg
cmFuZ2UgdGhhdCB3ZSBjYW4gcnVuIHRleHQtb25seSBidWlsZGVyIG9uIChjdXJyZW50bHkgaXQn
cyBqdXN0IHRoZSBvcGVuaW5nL2Nsb3NpbmcgaW5saW5lIGJveCkKKyAgICAvLyAyLiBSdW4gdGV4
dC1vbmx5IGxpbmUgYnVpbGRlcgorICAgIC8vIDMuIEluc2VydC9hcHBlbmQgdGhlIG1pc3Npbmcg
aW5saW5lIGJveCBydW4KKyAgICBhdXRvIGlzRmlyc3RMaW5lID0gIWxpbmVJbnB1dC5uZWVkc0xh
eW91dFJhbmdlLnN0YXJ0SW5kZXgoKTsKKworICAgIGF1dG8gYWRqdXN0ZWROZWVkc0xheW91dFJh
bmdlID0gWyZdIHsKKyAgICAgICAgYXV0byBuZWVkc0xheW91dFJhbmdlID0gbGluZUlucHV0Lm5l
ZWRzTGF5b3V0UmFuZ2U7CisgICAgICAgIGlmIChpc0ZpcnN0TGluZSkgeworICAgICAgICAgICAg
QVNTRVJUKG1faW5saW5lSXRlbUxpc3RbMF0uaXNJbmxpbmVCb3hTdGFydCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghbmVlZHNMYXlvdXRSYW5nZS5zdGFydC5vZmZzZXQpOworICAgICAgICAgICAg
Ly8gU2tpcCBsZWFkaW5nIElubGluZUl0ZW1TdGFydCAoZS5nLiA8c3Bhbj4pCisgICAgICAgICAg
ICArK25lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQuaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgLy8g
U0tpcCB0cmFpbGluZyBJbmxpbmVJdGVtRW5kIChlLmcuIDwvc3Bhbj4pCisgICAgICAgIEFTU0VS
VChtX2lubGluZUl0ZW1MaXN0Lmxhc3QoKS5pc0lubGluZUJveEVuZCgpKTsKKyAgICAgICAgQVNT
RVJUKCFuZWVkc0xheW91dFJhbmdlLmVuZC5vZmZzZXQpOworICAgICAgICAtLW5lZWRzTGF5b3V0
UmFuZ2UuZW5kLmluZGV4OworICAgICAgICByZXR1cm4gbmVlZHNMYXlvdXRSYW5nZTsKKyAgICB9
OworICAgIGF1dG8gbmVlZHNMYXlvdXRSYW5nZSA9IGFkanVzdGVkTmVlZHNMYXlvdXRSYW5nZSgp
OworICAgIEFTU0VSVCghbmVlZHNMYXlvdXRSYW5nZS5pc0VtcHR5KCkpOworCisgICAgYXV0byBs
aW5lTGF5b3V0UmVzdWx0ID0gbV90ZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmxheW91dElubGlu
ZUNvbnRlbnQoeyBuZWVkc0xheW91dFJhbmdlLCBsaW5lSW5wdXQuaW5pdGlhbExvZ2ljYWxSZWN0
IH0sIHByZXZpb3VzTGluZSk7CisKKyAgICBhdXRvIGluc2VydExlYWRpbmdJbmxpbmVCb3hSdW4g
PSBbJl0geworICAgICAgICBhdXRvJiBsZWFkaW5nSW5saW5lSXRlbSA9IG1faW5saW5lSXRlbUxp
c3QuZmlyc3QoKTsKKyAgICAgICAgQVNTRVJUKGxlYWRpbmdJbmxpbmVJdGVtLmlzSW5saW5lQm94
U3RhcnQoKSk7CisKKyAgICAgICAgaWYgKGlzRmlyc3RMaW5lKSB7CisgICAgICAgICAgICBBU1NF
UlQoIXByZXZpb3VzTGluZSk7CisgICAgICAgICAgICBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNv
bnRlbnQuaW5zZXJ0KDAsIHsgbGVhZGluZ0lubGluZUl0ZW0sIGxlYWRpbmdJbmxpbmVJdGVtLmZp
cnN0TGluZVN0eWxlKCksIHsgfSB9KTsKKyAgICAgICAgICAgIGxpbmVMYXlvdXRSZXN1bHQuaW5s
aW5lSXRlbVJhbmdlLnN0YXJ0ID0gbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQ7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU3Vic2VxdWVudCBsaW5l
cyBuZWVkIGxlYWRpbmcgc3Bhbm5pbmcgaW5saW5lIGJveCBydW4uCisgICAgICAgIGxpbmVMYXlv
dXRSZXN1bHQuaW5saW5lQ29udGVudC5pbnNlcnQoMCwgeyBsZWFkaW5nSW5saW5lSXRlbSwgeyB9
LCB7IH0gfSk7CisgICAgfTsKKyAgICBpbnNlcnRMZWFkaW5nSW5saW5lQm94UnVuKCk7CisKKyAg
ICBhdXRvIGFwcGVuZFRyYWlsaW5nSW5saW5lQm94UnVuSWZOZWVkZWQgPSBbJl0geworICAgICAg
ICBpZiAobGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kICE9IG5lZWRzTGF5b3V0
UmFuZ2UuZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvJiB0cmFpbGluZ0lu
bGluZUl0ZW0gPSBtX2lubGluZUl0ZW1MaXN0Lmxhc3QoKTsKKyAgICAgICAgbGluZUxheW91dFJl
c3VsdC5pbmxpbmVDb250ZW50LmFwcGVuZCh7IHRyYWlsaW5nSW5saW5lSXRlbSwgaXNGaXJzdExp
bmUgPyB0cmFpbGluZ0lubGluZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSA6IHRyYWlsaW5nSW5saW5l
SXRlbS5zdHlsZSgpLCBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lk
dGggfSk7CisgICAgICAgIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLmVuZCA9IGxp
bmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLmVuZDsKKyAgICB9OworICAgIGFwcGVuZFRyYWlsaW5n
SW5saW5lQm94UnVuSWZOZWVkZWQoKTsKKworICAgIHJldHVybiBsaW5lTGF5b3V0UmVzdWx0Owor
fQorCitib29sIFJhbmdlQmFzZWRMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclJhbmdlSW5saW5l
TGF5b3V0KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCwgY29uc3QgSW5saW5lQ29udGVudENhY2hlOjpJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMs
IGNvbnN0IFBsYWNlZEZsb2F0cyYgcGxhY2VkRmxvYXRzKQoreworICAgIGlmIChpbmxpbmVJdGVt
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBSYW5nZSBiYXNlZCBs
aW5lIGJ1aWxkZXIgb25seSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGNvbnRlbnQgPGlubGluZSBi
b3g+ZWxpZ2libGUgZm9yIHRleHQgb25seSBsYXlvdXQ8L2lubGluZSBib3g+CisgICAgYXV0byYg
aW5saW5lSXRlbUxpc3QgPSBpbmxpbmVJdGVtcy5jb250ZW50KCk7CisgICAgYXV0byBpc0Z1bGx5
TmVzdGVkQ29udGVudCA9IGlubGluZUl0ZW1zLmlubGluZUJveENvdW50KCkgPT0gMSAmJiBpbmxp
bmVJdGVtTGlzdC5maXJzdCgpLmlzSW5saW5lQm94U3RhcnQoKSAmJiBpbmxpbmVJdGVtTGlzdC5s
YXN0KCkuaXNJbmxpbmVCb3hFbmQoKSAmJiBpbmxpbmVJdGVtTGlzdC5zaXplKCkgPiAyOworICAg
IGlmICghaXNGdWxseU5lc3RlZENvbnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8mIGlubGluZUJveCA9IGlubGluZUl0ZW1MaXN0LmZpcnN0KCkubGF5b3V0Qm94KCk7Cisg
ICAgYXV0byYgaW5saW5lQm94R2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5nZW9t
ZXRyeUZvckJveChpbmxpbmVCb3gpOworICAgIGlmIChpbmxpbmVCb3hHZW9tZXRyeS5ob3Jpem9u
dGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgc3Rh
cnQgZGVjb3JhdGlvbiBzdXBwb3J0IGlzIGp1c3QgYSBtYXR0ZXIgb2Ygc2hyaW5raW5nIHRoZSBh
dmFpbGFibGUgc3BhY2UgZm9yIHRoZSBmaXJzdCBsaW5lIChvciBvbiBzdWJzZXF1ZW50IGxpbmVz
IHdoZW4gZGVjb3JhdGlvbiBicmVhayBpcyBwcmVzZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGlmIChpbmxpbmVCb3guc3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWsoKSAh
PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEJveERlY29yYXRpb25CcmVhaygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgbmVzdGVkIHRleHQgY29udGVudC4KKyAgICBp
ZiAoIWlubGluZUl0ZW1zLmhhc1RleHRBbmRMaW5lQnJlYWtPbmx5Q29udGVudCgpIHx8IGlubGlu
ZUl0ZW1zLnJlcXVpcmVzVmlzdWFsUmVvcmRlcmluZygpIHx8ICFwbGFjZWRGbG9hdHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVRleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShpbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5yb290KCkuc3R5bGUoKSkgfHwgIVRleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShpbmxp
bmVCb3guc3R5bGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZDQ0OTA5MTJhNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBYnN0cmFjdExpbmVCdWlsZGVyLmgi
CisjaW5jbHVkZSAiVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworY2xhc3MgSW5saW5lQ29udGVudEJyZWFrZXI7
CisKK2NsYXNzIFJhbmdlQmFzZWRMaW5lQnVpbGRlciA6IHB1YmxpYyBBYnN0cmFjdExpbmVCdWls
ZGVyIHsKK3B1YmxpYzoKKyAgICBSYW5nZUJhc2VkTGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmLCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgSW5saW5lSXRlbUxpc3QmKTsKKyAgICBMaW5lTGF5b3V0UmVzdWx0IGxheW91dElu
bGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91
c0xpbmU+JikgZmluYWw7CisKKyAgICBzdGF0aWMgYm9vbCBpc0VsaWdpYmxlRm9yUmFuZ2VJbmxp
bmVMYXlvdXQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBJbmxpbmVDb250
ZW50Q2FjaGU6OklubGluZUl0ZW1zJiwgY29uc3QgUGxhY2VkRmxvYXRzJik7CisKK3ByaXZhdGU6
CisgICAgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlciBtX3RleHRPbmx5U2ltcGxlTGluZUJ1aWxk
ZXI7Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxl
TGluZUJ1aWxkZXIuY3BwCmluZGV4IGZjYTliMDMwMDQyYi4uMzBjOTEwZTA3MmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0
T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcApAQCAt
OTIsOCArOTIsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29uc3VtZVRyYWlsaW5nTGluZUJyZWFr
SWZBcHBsaWNhYmxlKGNvbnN0IFRleHRPbmx5TGluZUJyZWFrUgogICAgIHJldHVybiB0cnVlOwog
fQogCi1UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVy
KElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpv
bnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0
ZW1MaXN0JiBpbmxpbmVJdGVtTGlzdCkKLSAgICA6IEFic3RyYWN0TGluZUJ1aWxkZXIoaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQsIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGlubGluZUl0ZW1M
aXN0KQorVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6VGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRl
cihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0
IEVsZW1lbnRCb3gmIHJvb3RCb3gsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYgaW5saW5lSXRlbUxpc3QpCisgICAg
OiBBYnN0cmFjdExpbmVCdWlsZGVyKGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCByb290Qm94LCBy
b290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBpbmxpbmVJdGVtTGlzdCkKICAgICAsIG1faXNXcmFw
cGluZ0FsbG93ZWQoVGV4dFV0aWw6OmlzV3JhcHBpbmdBbGxvd2VkKHJvb3RTdHlsZSgpKSkKIHsK
IH0KQEAgLTQ1MiwyOCArNDUyLDI3IEBAIGJvb2wgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6
aXNFbGlnaWJsZUZvclNpbXBsaWZpZWRUZXh0T25seUlubGluZUxheW91dEJ5Q29uCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJs
ZUZvclNpbXBsaWZpZWRJbmxpbmVMYXlvdXRCeVN0eWxlKGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RC
b3gpCitib29sIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlm
aWVkSW5saW5lTGF5b3V0QnlTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAg
YXV0byYgcm9vdFN0eWxlID0gcm9vdEJveC5zdHlsZSgpOwotICAgIGlmIChyb290U3R5bGUuZm9u
dENhc2NhZGUoKS53b3JkU3BhY2luZygpKQorICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLndv
cmRTcGFjaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXJvb3RTdHlsZS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgaWYgKCFzdHlsZS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocm9vdFN0eWxlLndvcmRC
cmVhaygpID09IFdvcmRCcmVhazo6QXV0b1BocmFzZSkKKyAgICBpZiAoc3R5bGUud29yZEJyZWFr
KCkgPT0gV29yZEJyZWFrOjpBdXRvUGhyYXNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKHJvb3RTdHlsZS50ZXh0SW5kZW50KCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5k
ZW50KCkpCisgICAgaWYgKHN0eWxlLnRleHRJbmRlbnQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHRJbmRlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyb290U3R5bGUu
dGV4dEFsaWduTGFzdCgpID09IFRleHRBbGlnbkxhc3Q6Okp1c3RpZnkgfHwgcm9vdFN0eWxlLnRl
eHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgfHwgcm9vdEJveC5pc1J1YnlBbm5v
dGF0aW9uQm94KCkpCisgICAgaWYgKHN0eWxlLnRleHRBbGlnbkxhc3QoKSA9PSBUZXh0QWxpZ25M
YXN0OjpKdXN0aWZ5IHx8IHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3Rp
ZnkgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5QW5ub3RhdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyb290U3R5bGUuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gQm94RGVjb3JhdGlvbkJyZWFrOjpDbG9uZSkKKyAgICBpZiAoc3R5bGUuYm94RGVjb3Jh
dGlvbkJyZWFrKCkgPT0gQm94RGVjb3JhdGlvbkJyZWFrOjpDbG9uZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghcm9vdFN0eWxlLmhhbmdpbmdQdW5jdHVhdGlvbigpLmlzRW1wdHko
KSkKKyAgICBpZiAoIXN0eWxlLmhhbmdpbmdQdW5jdHVhdGlvbigpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyb290U3R5bGUuaHlwaGVuYXRpb25MaW1pdExpbmVz
KCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxIeXBoZW5hdGlvbkxpbWl0TGluZXMoKSkKKyAgICBp
ZiAoc3R5bGUuaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxI
eXBoZW5hdGlvbkxpbWl0TGluZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChy
b290U3R5bGUudGV4dFdyYXBNb2RlKCkgPT0gVGV4dFdyYXBNb2RlOjpXcmFwICYmIHJvb3RTdHls
ZS50ZXh0V3JhcFN0eWxlKCkgPT0gVGV4dFdyYXBTdHlsZTo6QmFsYW5jZSkKKyAgICBpZiAoc3R5
bGUudGV4dFdyYXBNb2RlKCkgPT0gVGV4dFdyYXBNb2RlOjpXcmFwICYmIHN0eWxlLnRleHRXcmFw
U3R5bGUoKSA9PSBUZXh0V3JhcFN0eWxlOjpCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKHJvb3RTdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5lQWxpZ246Ok5vbmUgfHwgcm9v
dFN0eWxlLmxpbmVTbmFwKCkgIT0gTGluZVNuYXA6Ok5vbmUpCisgICAgaWYgKHN0eWxlLmxpbmVB
bGlnbigpICE9IExpbmVBbGlnbjo6Tm9uZSB8fCBzdHlsZS5saW5lU25hcCgpICE9IExpbmVTbmFw
OjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1Rl
eHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaAppbmRleCAyY2M5
ZTkwN2M2NjAuLjdkNThhZWU1NGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRP
bmx5U2ltcGxlTGluZUJ1aWxkZXIuaApAQCAtMzcsMTEgKzM3LDExIEBAIHN0cnVjdCBUZXh0T25s
eUxpbmVCcmVha1Jlc3VsdDsKIAogY2xhc3MgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlciA6IHB1
YmxpYyBBYnN0cmFjdExpbmVCdWlsZGVyIHsKIHB1YmxpYzoKLSAgICBUZXh0T25seVNpbXBsZUxp
bmVCdWlsZGVyKElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSG9yaXpvbnRhbENvbnN0cmFpbnRz
IHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0Jik7CisgICAg
VGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0
IEVsZW1lbnRCb3gmIHJvb3RCb3gsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYpOwogICAgIExpbmVMYXlvdXRSZXN1
bHQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFByZXZpb3VzTGluZT4mKSBmaW5hbDsKIAogICAgIHN0YXRpYyBib29sIGlzRWxpZ2libGVG
b3JTaW1wbGlmaWVkVGV4dE9ubHlJbmxpbmVMYXlvdXRCeUNvbnRlbnQoY29uc3QgSW5saW5lQ29u
dGVudENhY2hlOjpJbmxpbmVJdGVtcyYsIGNvbnN0IFBsYWNlZEZsb2F0cyYpOwotICAgIHN0YXRp
YyBib29sIGlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShjb25zdCBF
bGVtZW50Qm94JiByb290KTsKKyAgICBzdGF0aWMgYm9vbCBpc0VsaWdpYmxlRm9yU2ltcGxpZmll
ZElubGluZUxheW91dEJ5U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogcHJpdmF0ZToKICAg
ICBJbmxpbmVJdGVtUG9zaXRpb24gcGxhY2VJbmxpbmVUZXh0Q29udGVudChjb25zdCBJbmxpbmVJ
dGVtUmFuZ2UmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470464</attachid>
            <date>2024-03-21 11:05:15 -0700</date>
            <delta_ts>2024-03-21 11:05:15 -0700</delta_ts>
            <desc>Patch with dependencies</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>33628</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggMzFlM2QwYWRkOGFiLi4zNzBhNWIwNTFiMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzU4LDYgKzE3NTgsNyBAQCBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVRdWlya3MuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCitsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudC5jcHAKIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDhlZTM4MjY4MzU5NS4uZWE2NmVjY2U3MjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDEyLDYgKzU0
MTIsNyBAQAogCQlERERGRTgzRjI4NDZFQ0U1MDA2RjFFRTUgLyogY29udGVudC1zY3JpcHQuanMg
aW4gQ29weSBQREYuanMgRXh0cmFzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEREREZFODNDMjg0NkVDRDQwMDZGMUVFNSAvKiBjb250ZW50LXNjcmlwdC5qcyAqLzsgfTsKIAkJ
RERFOTkzMUUyNzhEMEU0QjAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hIGluIFByb2R1
Y3QgRGVwZW5kZW5jaWVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERTk5
MzA4Mjc4RDA4MEIwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLzsgfTsKIAkJRERF
QTkxQkEyOTk0NkU0MzAwN0U5RkRBIC8qIElubGluZUxpbmVUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFQTkxQjkyOTk0NkU0MzAwN0U5RkRB
IC8qIElubGluZUxpbmVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCURERUNDQzFGMkJBQkE4NDkwMDQxQ0QzQyAvKiBSYW5nZUJhc2VkTGlu
ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERERUNDQzFFMkJBQkE4NDgwMDQxQ0QzQyAvKiBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuaCAqLzsg
fTsKIAkJRERGQ0I0ODEyOTE3MDE0NjAwQzc5OUM2IC8qIElubGluZUZvcm1hdHRpbmdDb25zdHJh
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERG
Q0I0ODAyOTE3MDE0NTAwQzc5OUM2IC8qIElubGluZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURFNUY4NDE2
MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzAxLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4M0IyMUZBMTg2NzYwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzAxLmNwcCAqLzsgfTsKIAkJREU1Rjg0MTcxRkExODZFOTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzMDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1RjgzRUIxRkExODZBRDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2Uz
MDIuY3BwICovOyB9OwpAQCAtMTg3ODcsNiArMTg3ODgsOCBAQAogCQlERERGRTgzQzI4NDZFQ0Q0
MDA2RjFFRTUgLyogY29udGVudC1zY3JpcHQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiY29u
dGVudC1zY3JpcHQuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREU5OTMwODI3
OEQwODBCMDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXZWJL
aXRBZGRpdGlvbnMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRERF
QTkxQjkyOTk0NkU0MzAwN0U5RkRBIC8qIElubGluZUxpbmVUeXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRERFQ0NDMUQyQkFCQTgzRTAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVp
bGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5nZUJhc2VkTGluZUJ1aWxkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEREVDQ0MxRTJCQUJBODQ4MDA0MUNEM0MgLyog
UmFuZ2VCYXNlZExpbmVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhbmdlQmFzZWRMaW5lQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
REZDQjQ4MDI5MTcwMTQ1MDBDNzk5QzYgLyogSW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdDb25zdHJh
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTVGODNCMjFGQTE4Njc2MDA2
REI2M0EgLyogVW5pZmllZFNvdXJjZTMwMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVbmlmaWVkU291cmNlMzAxLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJREU1RjgzQjMxRkExODY3NzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNTUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTM1NS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgyNSw2ICsyMTgyOCw4IEBACiAJCQkJ
REQ5NDY3RDUyQTkyRDNBMzAwNDU4OTc5IC8qIEludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAgKi8s
CiAJCQkJREQ5NDY3RDYyQTkyRDNCODAwNDU4OTc5IC8qIEludHJpbnNpY1dpZHRoSGFuZGxlci5o
ICovLAogCQkJCURERDUxN0VCMkE5RkM1NDQwMDY5QUY4MSAvKiBMaW5lTGF5b3V0UmVzdWx0Lmgg
Ki8sCisJCQkJRERFQ0NDMUQyQkFCQTgzRTAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5lQnVpbGRl
ci5jcHAgKi8sCisJCQkJRERFQ0NDMUUyQkFCQTg0ODAwNDFDRDNDIC8qIFJhbmdlQmFzZWRMaW5l
QnVpbGRlci5oICovLAogCQkJCUREQTNENUQwMkE3RDg0N0UwMDBFQ0VFMSAvKiBUZXh0T25seVNp
bXBsZUxpbmVCdWlsZGVyLmNwcCAqLywKIAkJCQlEREEzRDVDRTJBN0Q4NDREMDAwRUNFRTEgLyog
VGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5oICovLAogCQkJKTsKQEAgLTQxNTE1LDYgKzQxNTIw
LDcgQEAKIAkJCQlGNTVCM0RDQzEyNTFGMTJEMDAzRUYyNjkgLyogUmFkaW9JbnB1dFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUI2NThGRkE2MTUyMkVGQUEwMERENTU5NSAvKiBSYWRpb05vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFu
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCURERUNDQzFGMkJBQkE4NDkwMDQxQ0QzQyAvKiBSYW5n
ZUJhc2VkTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDlENTNDMERBMjdFMTgw
MDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
RENFMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM0QTBGRDcyNUMzNDM1MDAwRDlFRTk3IC8qIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmNw
cAppbmRleCBmODdkMGVkODI5ZGQuLjQ3NWMzNGFmYjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvQWJzdHJhY3RMaW5lQnVpbGRlci5jcHAKQEAgLTMzLDEwICszMywxMSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLUFic3RyYWN0TGluZUJ1aWxkZXI6OkFi
c3RyYWN0TGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6b250YWxDb25zdHJhaW50
cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQorQWJzdHJhY3RMaW5lQnVp
bGRlcjo6QWJzdHJhY3RMaW5lQnVpbGRlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RCb3gsIEhvcml6b250YWxD
b25zdHJhaW50cyByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlz
dCYgaW5saW5lSXRlbUxpc3QpCiAgICAgOiBtX2xpbmUoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQp
CiAgICAgLCBtX2lubGluZUl0ZW1MaXN0KGlubGluZUl0ZW1MaXN0KQogICAgICwgbV9pbmxpbmVG
b3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAgICAsIG1fcm9vdEJv
eChyb290Qm94KQogICAgICwgbV9yb290SG9yaXpvbnRhbENvbnN0cmFpbnRzKHJvb3RIb3Jpem9u
dGFsQ29uc3RyYWludHMpCiB7CiB9CkBAIC05NSwxMSArOTYsNiBAQCB2b2lkIEFic3RyYWN0TGlu
ZUJ1aWxkZXI6OnNldEludHJpbnNpY1dpZHRoTW9kZShJbnRyaW5zaWNXaWR0aE1vZGUgaW50cmlu
c2ljV2lkdAogICAgIG1faW5saW5lQ29udGVudEJyZWFrZXIuc2V0SXNNaW5pbXVtSW5JbnRyaW5z
aWNXaWR0aE1vZGUobV9pbnRyaW5zaWNXaWR0aE1vZGUgPT0gSW50cmluc2ljV2lkdGhNb2RlOjpN
aW5pbXVtKTsKIH0KIAotY29uc3QgRWxlbWVudEJveCYgQWJzdHJhY3RMaW5lQnVpbGRlcjo6cm9v
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOwotfQot
CiBjb25zdCBSZW5kZXJTdHlsZSYgQWJzdHJhY3RMaW5lQnVpbGRlcjo6cm9vdFN0eWxlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IHJvb3QoKS5maXJzdExp
bmVTdHlsZSgpIDogcm9vdCgpLnN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9BYnN0cmFjdExp
bmVCdWlsZGVyLmgKaW5kZXggMTVkYjg0ZTdlNmZlLi5jNTAyZDQ3NmY5OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0Fic3RyYWN0
TGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SW50cmluc2ljV2lkdGhNb2RlKEludHJpbnNpY1dpZHRoTW9kZSk7CiAK
IHByb3RlY3RlZDoKLSAgICBBYnN0cmFjdExpbmVCdWlsZGVyKElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IElubGluZUl0ZW1MaXN0Jik7CisgICAgQWJzdHJhY3RMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYsIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RCb3gsIEhvcml6b250YWxDb25z
dHJhaW50cyByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYp
OwogCiAgICAgdm9pZCByZXNldCgpOwogCkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBJbmxp
bmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKTsKICAgICBjb25zdCBCbG9ja0xheW91dFN0YXRl
JiBibG9ja0xheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0U3RhdGUoKS5wYXJlbnRC
bG9ja0xheW91dFN0YXRlKCk7IH0KLSAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkgY29uc3Q7
CisgICAgY29uc3QgRWxlbWVudEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEJveDsg
fQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgpAQCAtODAsNiArODAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CisgICAgY29uc3QgRWxl
bWVudEJveCYgbV9yb290Qm94OwogICAgIEhvcml6b250YWxDb25zdHJhaW50cyBtX3Jvb3RIb3Jp
em9udGFsQ29uc3RyYWludHM7CiAKICAgICBJbmxpbmVDb250ZW50QnJlYWtlciBtX2lubGluZUNv
bnRlbnRCcmVha2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IGQwZmU0ZWM0NThmZS4uM2EwN2UzYzkyZjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01MCw2ICs1MCw3
IEBACiAjaW5jbHVkZSAiTGF5b3V0SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dFN0
YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJhbmdlQmFzZWRMaW5lQnVp
bGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRleHRP
bmx5U2ltcGxlTGluZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJUZXh0VXRpbC5oIgpAQCAtMTQ3LDEw
ICsxNDgsMTQgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb24KICAgICAgICAgICAgIGxheW91dFN0
YXRlKCkuc2V0QXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoeyAqYmFsYW5jZWRMaW5lV2lkdGhz
IH0pOwogICAgIH0KIAotICAgIGlmIChUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdp
YmxlRm9yU2ltcGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGlubGluZUNvbnRl
bnRDYWNoZSgpLmlubGluZUl0ZW1zKCksIHBsYWNlZEZsb2F0cykgJiYgVGV4dE9ubHlTaW1wbGVM
aW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZpZWRJbmxpbmVMYXlvdXRCeVN0eWxlKHJv
b3QoKSkpIHsKLSAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBUZXh0T25seVNp
bXBsZUxpbmVCdWlsZGVyIHsgKnRoaXMsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKSwgaW5saW5l
SXRlbUxpc3QgfTsKKyAgICBpZiAoVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJs
ZUZvclNpbXBsaWZpZWRUZXh0T25seUlubGluZUxheW91dEJ5Q29udGVudChpbmxpbmVDb250ZW50
Q2FjaGUoKS5pbmxpbmVJdGVtcygpLCBwbGFjZWRGbG9hdHMpICYmIFRleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShyb290
KCkuc3R5bGUoKSkpIHsKKyAgICAgICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBUZXh0
T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgKnRoaXMsIHJvb3QoKSwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCgpLCBpbmxpbmVJdGVtTGlzdCB9OwogICAgICAgICByZXR1cm4gbGluZUxheW91dChzaW1w
bGlmaWVkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1MaXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2
aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVEYW1hZ2UpOwogICAgIH0KKyAgICBpZiAoUmFu
Z2VCYXNlZExpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVMYXlvdXQoKnRoaXMs
IGlubGluZUNvbnRlbnRDYWNoZSgpLmlubGluZUl0ZW1zKCksIHBsYWNlZEZsb2F0cykpIHsKKyAg
ICAgICAgYXV0byByYW5nZUJhc2VkTGluZUJ1aWxkZXIgPSBSYW5nZUJhc2VkTGluZUJ1aWxkZXIg
eyAqdGhpcywgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBpbmxpbmVJdGVtTGlzdCB9OworICAg
ICAgICByZXR1cm4gbGluZUxheW91dChyYW5nZUJhc2VkTGluZUJ1aWxkZXIsIGlubGluZUl0ZW1M
aXN0LCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3RyYWludHMsIGxpbmVE
YW1hZ2UpOworICAgIH0KICAgICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhp
cywgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLCBpbmxpbmVJdGVtTGlzdCB9OwogICAgIHJldHVy
biBsaW5lTGF5b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtTGlzdCwgbmVlZHNMYXlvdXRSYW5n
ZSwgcHJldmlvdXNMaW5lKCksIGNvbnN0cmFpbnRzLCBsaW5lRGFtYWdlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmUuaAppbmRleCA0MzE3NGY1YTYxMzYuLjFhM2I4NjE2MGQzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuaApAQCAtMTQwLDYgKzE0MCwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAg
VUJpRGlMZXZlbCBiaWRpTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2JpZGlMZXZlbDsgfQogCisg
ICAgICAgIC8vIEZJWE1FOiBNYXliZSBhZGQgY3JlYXRlIGZ1bmN0aW9ucyBpbnRlYWQ/CisgICAg
ICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW0mIGxpbmVT
cGFubmluZ0lubGluZUJveEl0ZW0sIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMaW5lOwogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lQ29udGVudEFsaWduZXI7
CkBAIC0xNDgsOCArMTUyLDYgQEAgcHVibGljOgogICAgICAgICBSdW4oY29uc3QgSW5saW5lVGV4
dEl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQs
IElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICAgICAgUnVuKGNvbnN0IElubGlu
ZVNvZnRMaW5lQnJlYWtJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQg
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgUnVuKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpOwotICAgICAgICBSdW4oY29u
c3QgSW5saW5lSXRlbSYgbGluZVNwYW5uaW5nSW5saW5lQm94SXRlbSwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogCiAgICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KICAg
ICAgICAgdm9pZCBleHBhbmQoY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAK
aW5kZXggOTg0OTAxNmZkODM4Li5iYjZkMjhmYWM0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgdm9pZCBMaW5l
Q2FuZGlkYXRlOjpyZXNldCgpCiAKIAogTGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpvbnRhbENvbnN0
cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0JiBp
bmxpbmVJdGVtTGlzdCkKLSAgICA6IEFic3RyYWN0TGluZUJ1aWxkZXIoaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQsIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGlubGluZUl0ZW1MaXN0KQorICAg
IDogQWJzdHJhY3RMaW5lQnVpbGRlcihpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgaW5saW5lRm9y
bWF0dGluZ0NvbnRleHQucm9vdCgpLCByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBpbmxpbmVJ
dGVtTGlzdCkKICAgICAsIG1fZmxvYXRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0
LmZsb2F0aW5nQ29udGV4dCgpKQogewogfQpAQCAtODAxLDcgKzgwMSw3IEBAIExpbmVCdWlsZGVy
OjpSZWN0QW5kRmxvYXRDb25zdHJhaW50cyBMaW5lQnVpbGRlcjo6YWRqdXN0ZWRMaW5lUmVjdFdp
dGhDYW5kaWRhdGVJCiAgICAgICAgIHJldHVybiB7IG1fbGluZUxvZ2ljYWxSZWN0IH07CiAgICAg
Ly8gRklYTUU6IFVzZSBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxldmVsQm94QWZmZWN0
c0xpbmVCb3ggaW5zdGVhZC4KICAgICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnRIZWlnaHQgPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGxpbmVCb3hDb250YWluID0gZm9ybWF0dGluZ0Nv
bnRleHQoKS5yb290KCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigpOworICAgIGF1dG8gbGluZUJv
eENvbnRhaW4gPSByb290U3R5bGUoKS5saW5lQm94Q29udGFpbigpOwogICAgIGZvciAoYXV0byYg
cnVuIDogaW5saW5lQ29udGVudC5jb250aW51b3VzQ29udGVudCgpLnJ1bnMoKSkgewogICAgICAg
ICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07CiAgICAgICAgIGlmIChpbmxpbmVJ
dGVtLmlzVGV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5k
bGVyLmNwcAppbmRleCBjZTI0YzcyMDAwNDMuLjA3OTU0NzBiMDQ1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lk
dGhIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIElu
dHJpbnNpY1dpZHRoSGFuZGxlcjo6SW50cmluc2ljV2lkdGhIYW5kbGVyKElubGluZUZvcm1hdHRp
bmdDb250ZXh0JiBpbmxpbmVGb3JtCiB7CiAgICAgYXV0byBpbml0aWFsaXplUmFuZ2VBbmRUZXh0
T25seUJ1aWxkZXJFbGlnaWJpbGl0eSA9IFsmXSB7CiAgICAgICAgIG1faW5saW5lSXRlbVJhbmdl
ID0geyAwLCBpbmxpbmVJdGVtcy5jb250ZW50KCkuc2l6ZSgpIH07Ci0gICAgICAgIG1fbWF5VXNl
U2ltcGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0SW5SYW5nZSA9IFRleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVkSW5saW5lTGF5b3V0QnlTdHlsZShyb290
KCkpOworICAgICAgICBtX21heVVzZVNpbXBsaWZpZWRUZXh0T25seUlubGluZUxheW91dEluUmFu
Z2UgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZElu
bGluZUxheW91dEJ5U3R5bGUocm9vdCgpLnN0eWxlKCkpOwogICAgICAgICBpZiAoIW1fbWF5VXNl
U2ltcGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0SW5SYW5nZSkKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIElubGluZUxheW91dFVuaXQgSW50cmluc2ljV2lkdGhI
YW5kbGVyOjptaW5pbXVtQ29udGVudFNpemUoKQogICAgIGlmIChpc0NvbnRlbnRFbGlnaWJsZUZv
ck5vbkxpbmVCdWlsZGVyTWluaW11bVdpZHRoKHJvb3QoKSwgbV9tYXlVc2VTaW1wbGlmaWVkVGV4
dE9ubHlJbmxpbmVMYXlvdXRJblJhbmdlKSkKICAgICAgICAgbWluaW11bUNvbnRlbnRTaXplID0g
c2ltcGxpZmllZE1pbmltdW1XaWR0aChyb290KCkpOwogICAgIGVsc2UgaWYgKG1fbWF5VXNlU2lt
cGxpZmllZFRleHRPbmx5SW5saW5lTGF5b3V0SW5SYW5nZSkgewotICAgICAgICBhdXRvIHNpbXBs
aWZpZWRMaW5lQnVpbGRlciA9IFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIgeyBmb3JtYXR0aW5n
Q29udGV4dCgpLCB7IH0sIGlubGluZUl0ZW1MaXN0KCkgfTsKKyAgICAgICAgYXV0byBzaW1wbGlm
aWVkTGluZUJ1aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyIHsgZm9ybWF0dGluZ0Nv
bnRleHQoKSwgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCksIHsgfSwgaW5saW5lSXRlbUxpc3Qo
KSB9OwogICAgICAgICBtaW5pbXVtQ29udGVudFNpemUgPSBjb21wdXRlZEludHJpbnNpY1dpZHRo
Rm9yQ29uc3RyYWludChJbnRyaW5zaWNXaWR0aE1vZGU6Ok1pbmltdW0sIHNpbXBsaWZpZWRMaW5l
QnVpbGRlciwgTWF5Q2FjaGVMYXlvdXRSZXN1bHQ6Ok5vKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyBmb3JtYXR0aW5nQ29udGV4dCgpLCB7
IH0sIGlubGluZUl0ZW1MaXN0KCkgfTsKQEAgLTE1MSwxMSArMTUxLDExIEBAIElubGluZUxheW91
dFVuaXQgSW50cmluc2ljV2lkdGhIYW5kbGVyOjptYXhpbXVtQ29udGVudFNpemUoKQogICAgICAg
ICBpZiAobV9tYXhpbXVtQ29udGVudFdpZHRoQmV0d2VlbkxpbmVCcmVha3MgJiYgbWF5VXNlQ29u
dGVudFdpZHRoQmV0d2VlbkxpbmVCcmVha3NBc01heGltdW1TaXplKHJvb3QoKSwgaW5saW5lSXRl
bUxpc3QoKSkpIHsKICAgICAgICAgICAgIG1heGltdW1Db250ZW50U2l6ZSA9ICptX21heGltdW1D
b250ZW50V2lkdGhCZXR3ZWVuTGluZUJyZWFrczsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAg
ICBhdXRvIHNpbXBsaWZpZWRMaW5lQnVpbGRlciA9IFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIg
eyBmb3JtYXR0aW5nQ29udGV4dCgpLCB7IH0sIGlubGluZUl0ZW1MaXN0KCkgfTsKKyAgICAgICAg
ICAgIGF1dG8gc2ltcGxpZmllZExpbmVCdWlsZGVyID0gVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRl
ciB7IGZvcm1hdHRpbmdDb250ZXh0KCksIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLCB7IH0s
IGlubGluZUl0ZW1MaXN0KCkgfTsKICAgICAgICAgICAgIEFTU0VSVChzdGQ6OmFicyhtYXhpbXVt
Q29udGVudFNpemUgLSBjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChJbnRyaW5z
aWNXaWR0aE1vZGU6Ok1heGltdW0sIHNpbXBsaWZpZWRMaW5lQnVpbGRlciwgTWF5Q2FjaGVMYXlv
dXRSZXN1bHQ6Ok5vKSkgPCAxKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgYXV0byBzaW1wbGlmaWVkTGluZUJ1aWxkZXIgPSBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVy
IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgeyB9LCBpbmxpbmVJdGVtTGlzdCgpIH07CisgICAgICAg
ICAgICBhdXRvIHNpbXBsaWZpZWRMaW5lQnVpbGRlciA9IFRleHRPbmx5U2ltcGxlTGluZUJ1aWxk
ZXIgeyBmb3JtYXR0aW5nQ29udGV4dCgpLCBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSwgeyB9
LCBpbmxpbmVJdGVtTGlzdCgpIH07CiAgICAgICAgICAgICBtYXhpbXVtQ29udGVudFNpemUgPSBj
b21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChJbnRyaW5zaWNXaWR0aE1vZGU6Ok1h
eGltdW0sIHNpbXBsaWZpZWRMaW5lQnVpbGRlciwgbWF5Q2FjaGVMYXlvdXRSZXN1bHQpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9SYW5nZUJhc2VkTGlu
ZUJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ1
MmQ3NGE4MTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExpbmVCdWlsZGVyLmNwcApAQCAtMCwwICsx
LDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5n
ZUJhc2VkTGluZUJ1aWxkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExh
eW91dCB7CisKK1JhbmdlQmFzZWRMaW5lQnVpbGRlcjo6UmFuZ2VCYXNlZExpbmVCdWlsZGVyKElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpvbnRh
bENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1M
aXN0JiBpbmxpbmVJdGVtTGlzdCkKKyAgICA6IEFic3RyYWN0TGluZUJ1aWxkZXIoaW5saW5lRm9y
bWF0dGluZ0NvbnRleHQsIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LnJvb3QoKSwgcm9vdEhvcml6
b250YWxDb25zdHJhaW50cywgaW5saW5lSXRlbUxpc3QpCisgICAgLCBtX3RleHRPbmx5U2ltcGxl
TGluZUJ1aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGRvd25jYXN0PEVsZW1lbnRCb3g+
KGlubGluZUl0ZW1MaXN0WzBdLmxheW91dEJveCgpKSwgcm9vdEhvcml6b250YWxDb25zdHJhaW50
cywgaW5saW5lSXRlbUxpc3QpCit7Cit9CisKK0xpbmVMYXlvdXRSZXN1bHQgUmFuZ2VCYXNlZExp
bmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mIHByZXZpb3VzTGluZSkKK3sKKyAg
ICAvLyAxLiBTaHJpbmsgdGhlIGxheW91dCByYW5nZSB0aGF0IHdlIGNhbiBydW4gdGV4dC1vbmx5
IGJ1aWxkZXIgb24gKGN1cnJlbnRseSBpdCdzIGp1c3QgdGhlIG9wZW5pbmcvY2xvc2luZyBpbmxp
bmUgYm94KQorICAgIC8vIDIuIFJ1biB0ZXh0LW9ubHkgbGluZSBidWlsZGVyCisgICAgLy8gMy4g
SW5zZXJ0L2FwcGVuZCB0aGUgbWlzc2luZyBpbmxpbmUgYm94IHJ1bgorICAgIGF1dG8gaXNGaXJz
dExpbmUgPSAhbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnRJbmRleCgpOworCisgICAg
YXV0byBhZGp1c3RlZE5lZWRzTGF5b3V0UmFuZ2UgPSBbJl0geworICAgICAgICBhdXRvIG5lZWRz
TGF5b3V0UmFuZ2UgPSBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZTsKKyAgICAgICAgaWYgKGlz
Rmlyc3RMaW5lKSB7CisgICAgICAgICAgICBBU1NFUlQobV9pbmxpbmVJdGVtTGlzdFswXS5pc0lu
bGluZUJveFN0YXJ0KCkpOworICAgICAgICAgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdlLnN0
YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICAvLyBTa2lwIGxlYWRpbmcgSW5saW5lSXRlbVN0YXJ0
IChlLmcuIDxzcGFuPikKKyAgICAgICAgICAgICsrbmVlZHNMYXlvdXRSYW5nZS5zdGFydC5pbmRl
eDsKKyAgICAgICAgfQorICAgICAgICAvLyBTS2lwIHRyYWlsaW5nIElubGluZUl0ZW1FbmQgKGUu
Zy4gPC9zcGFuPikKKyAgICAgICAgQVNTRVJUKG1faW5saW5lSXRlbUxpc3QubGFzdCgpLmlzSW5s
aW5lQm94RW5kKCkpOworICAgICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0UmFuZ2UuZW5kLm9mZnNl
dCk7CisgICAgICAgIC0tbmVlZHNMYXlvdXRSYW5nZS5lbmQuaW5kZXg7CisgICAgICAgIHJldHVy
biBuZWVkc0xheW91dFJhbmdlOworICAgIH07CisgICAgYXV0byBuZWVkc0xheW91dFJhbmdlID0g
YWRqdXN0ZWROZWVkc0xheW91dFJhbmdlKCk7CisgICAgQVNTRVJUKCFuZWVkc0xheW91dFJhbmdl
LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGxpbmVMYXlvdXRSZXN1bHQgPSBtX3RleHRPbmx5U2lt
cGxlTGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7IG5lZWRzTGF5b3V0UmFuZ2UsIGxp
bmVJbnB1dC5pbml0aWFsTG9naWNhbFJlY3QgfSwgcHJldmlvdXNMaW5lKTsKKworICAgIGF1dG8g
aW5zZXJ0TGVhZGluZ0lubGluZUJveFJ1biA9IFsmXSB7CisgICAgICAgIGF1dG8mIGxlYWRpbmdJ
bmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtTGlzdC5maXJzdCgpOworICAgICAgICBBU1NFUlQobGVh
ZGluZ0lubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpKTsKKworICAgICAgICBpZiAoaXNGaXJz
dExpbmUpIHsKKyAgICAgICAgICAgIEFTU0VSVCghcHJldmlvdXNMaW5lKTsKKyAgICAgICAgICAg
IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5pbnNlcnQoMCwgeyBsZWFkaW5nSW5saW5l
SXRlbSwgbGVhZGluZ0lubGluZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSwgeyB9IH0pOworICAgICAg
ICAgICAgbGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2Uuc3RhcnQgPSBsaW5lSW5wdXQu
bmVlZHNMYXlvdXRSYW5nZS5zdGFydDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAvLyBTdWJzZXF1ZW50IGxpbmVzIG5lZWQgbGVhZGluZyBzcGFubmluZyBpbmxpbmUg
Ym94IHJ1bi4KKyAgICAgICAgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmluc2VydCgw
LCB7IGxlYWRpbmdJbmxpbmVJdGVtLCB7IH0sIHsgfSB9KTsKKyAgICB9OworICAgIGluc2VydExl
YWRpbmdJbmxpbmVCb3hSdW4oKTsKKworICAgIGF1dG8gYXBwZW5kVHJhaWxpbmdJbmxpbmVCb3hS
dW5JZk5lZWRlZCA9IFsmXSB7CisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0LmlubGluZUl0
ZW1SYW5nZS5lbmQgIT0gbmVlZHNMYXlvdXRSYW5nZS5lbmQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGF1dG8mIHRyYWlsaW5nSW5saW5lSXRlbSA9IG1faW5saW5lSXRlbUxpc3QubGFz
dCgpOworICAgICAgICBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuYXBwZW5kKHsgdHJh
aWxpbmdJbmxpbmVJdGVtLCBpc0ZpcnN0TGluZSA/IHRyYWlsaW5nSW5saW5lSXRlbS5maXJzdExp
bmVTdHlsZSgpIDogdHJhaWxpbmdJbmxpbmVJdGVtLnN0eWxlKCksIGxpbmVMYXlvdXRSZXN1bHQu
Y29udGVudEdlb21ldHJ5LmxvZ2ljYWxXaWR0aCB9KTsKKyAgICAgICAgbGluZUxheW91dFJlc3Vs
dC5pbmxpbmVJdGVtUmFuZ2UuZW5kID0gbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UuZW5kOwor
ICAgIH07CisgICAgYXBwZW5kVHJhaWxpbmdJbmxpbmVCb3hSdW5JZk5lZWRlZCgpOworCisgICAg
cmV0dXJuIGxpbmVMYXlvdXRSZXN1bHQ7Cit9CisKK2Jvb2wgUmFuZ2VCYXNlZExpbmVCdWlsZGVy
Ojppc0VsaWdpYmxlRm9yUmFuZ2VJbmxpbmVMYXlvdXQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJbmxpbmVDb250ZW50Q2FjaGU6
OklubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgY29uc3QgUGxhY2VkRmxvYXRzJiBwbGFjZWRGbG9h
dHMpCit7CisgICAgaWYgKGlubGluZUl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIFJhbmdlIGJhc2VkIGxpbmUgYnVpbGRlciBvbmx5IHN1cHBvcnRzIHRoZSBm
b2xsb3dpbmcgY29udGVudCA8aW5saW5lIGJveD5lbGlnaWJsZSBmb3IgdGV4dCBvbmx5IGxheW91
dDwvaW5saW5lIGJveD4KKyAgICBhdXRvJiBpbmxpbmVJdGVtTGlzdCA9IGlubGluZUl0ZW1zLmNv
bnRlbnQoKTsKKyAgICBhdXRvIGlzRnVsbHlOZXN0ZWRDb250ZW50ID0gaW5saW5lSXRlbXMuaW5s
aW5lQm94Q291bnQoKSA9PSAxICYmIGlubGluZUl0ZW1MaXN0LmZpcnN0KCkuaXNJbmxpbmVCb3hT
dGFydCgpICYmIGlubGluZUl0ZW1MaXN0Lmxhc3QoKS5pc0lubGluZUJveEVuZCgpICYmIGlubGlu
ZUl0ZW1MaXN0LnNpemUoKSA+IDI7CisgICAgaWYgKCFpc0Z1bGx5TmVzdGVkQ29udGVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgaW5saW5lQm94ID0gaW5saW5lSXRlbUxp
c3QuZmlyc3QoKS5sYXlvdXRCb3goKTsKKyAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGlu
bGluZUZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGlubGluZUJveCk7CisgICAgaWYg
KGlubGluZUJveEdlb21ldHJ5Lmhvcml6b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IEFkZCBzdGFydCBkZWNvcmF0aW9uIHN1cHBvcnQgaXMganVzdCBh
IG1hdHRlciBvZiBzaHJpbmtpbmcgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGZpcnN0IGxp
bmUgKG9yIG9uIHN1YnNlcXVlbnQgbGluZXMgd2hlbiBkZWNvcmF0aW9uIGJyZWFrIGlzIHByZXNl
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGlubGluZUJveC5zdHls
ZSgpLmJveERlY29yYXRpb25CcmVhaygpICE9IFJlbmRlclN0eWxlOjppbml0aWFsQm94RGVjb3Jh
dGlvbkJyZWFrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBu
ZXN0ZWQgdGV4dCBjb250ZW50LgorICAgIGlmICghaW5saW5lSXRlbXMuaGFzVGV4dEFuZExpbmVC
cmVha09ubHlDb250ZW50KCkgfHwgaW5saW5lSXRlbXMucmVxdWlyZXNWaXN1YWxSZW9yZGVyaW5n
KCkgfHwgIXBsYWNlZEZsb2F0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZp
ZWRJbmxpbmVMYXlvdXRCeVN0eWxlKGlubGluZUZvcm1hdHRpbmdDb250ZXh0LnJvb3QoKS5zdHls
ZSgpKSB8fCAhVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6aXNFbGlnaWJsZUZvclNpbXBsaWZp
ZWRJbmxpbmVMYXlvdXRCeVN0eWxlKGlubGluZUJveC5zdHlsZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvUmFuZ2VCYXNlZExp
bmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9SYW5nZUJhc2VkTGluZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjlkNDQ5MDkxMmE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1JhbmdlQmFzZWRMaW5lQnVpbGRl
ci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFic3RyYWN0TGluZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJUZXh0T25seVNpbXBsZUxpbmVC
dWlsZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitj
bGFzcyBJbmxpbmVDb250ZW50QnJlYWtlcjsKKworY2xhc3MgUmFuZ2VCYXNlZExpbmVCdWlsZGVy
IDogcHVibGljIEFic3RyYWN0TGluZUJ1aWxkZXIgeworcHVibGljOgorICAgIFJhbmdlQmFzZWRM
aW5lQnVpbGRlcihJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIEhvcml6b250YWxDb25zdHJhaW50
cyByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYpOworICAg
IExpbmVMYXlvdXRSZXN1bHQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mKSBmaW5hbDsKKworICAgIHN0YXRpYyBi
b29sIGlzRWxpZ2libGVGb3JSYW5nZUlubGluZUxheW91dChjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYsIGNvbnN0IElubGluZUNvbnRlbnRDYWNoZTo6SW5saW5lSXRlbXMmLCBjb25zdCBQ
bGFjZWRGbG9hdHMmKTsKKworcHJpdmF0ZToKKyAgICBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVy
IG1fdGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2lt
cGxlTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAKaW5kZXggNDUyN2Q5NjY1
YWMwLi4zMGM5MTBlMDcyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRPbmx5
U2ltcGxlTGluZUJ1aWxkZXIuY3BwCkBAIC05Miw5ICs5Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjb25zdW1lVHJhaWxpbmdMaW5lQnJlYWtJZkFwcGxpY2FibGUoY29uc3QgVGV4dE9ubHlMaW5l
QnJlYWtSCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6
OlRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6b250YWxD
b25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQotICAgIDog
QWJzdHJhY3RMaW5lQnVpbGRlcihpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgcm9vdEhvcml6b250
YWxDb25zdHJhaW50cywgaW5saW5lSXRlbUxpc3QpCi0gICAgLCBtX2lzV3JhcHBpbmdBbGxvd2Vk
KFRleHRVdGlsOjppc1dyYXBwaW5nQWxsb3dlZChyb290KCkuc3R5bGUoKSkpCitUZXh0T25seVNp
bXBsZUxpbmVCdWlsZGVyOjpUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyKElubGluZUZvcm1hdHRp
bmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgRWxlbWVudEJveCYgcm9v
dEJveCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNv
bnN0IElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVtTGlzdCkKKyAgICA6IEFic3RyYWN0TGluZUJ1
aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIHJvb3RCb3gsIHJvb3RIb3Jpem9udGFsQ29u
c3RyYWludHMsIGlubGluZUl0ZW1MaXN0KQorICAgICwgbV9pc1dyYXBwaW5nQWxsb3dlZChUZXh0
VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdFN0eWxlKCkpKQogewogfQogCkBAIC0xMDUsOCAr
MTA1LDcgQEAgTGluZUxheW91dFJlc3VsdCBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpsYXlv
dXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYKICAgICBhdXRvIHJlc3VsdCA9IG1fbGlu
ZS5jbG9zZSgpOwogCiAgICAgYXV0byBpc0xhc3RJbmxpbmVDb250ZW50ID0gaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50KHBsYWNlZENvbnRlbnRFbmQsIGxpbmVJbnB1dC5uZWVkc0xheW91dFJh
bmdlLmVuZEluZGV4KCkpOwotICAgIGF1dG8mIHJvb3RTdHlsZSA9IGlzRmlyc3RGb3JtYXR0ZWRM
aW5lKCkgPyByb290KCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJvb3QoKS5zdHlsZSgpOwotICAgIGF1
dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpob3Jpem9udGFs
QWxpZ25tZW50T2Zmc2V0KHJvb3RTdHlsZSwgcmVzdWx0LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1f
bGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIHJlc3VsdC5oYW5naW5nVHJhaWxpbmdDb250ZW50V2lk
dGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RJbmxpbmVDb250ZW50KTsKKyAgICBhdXRvIGNvbnRlbnRM
b2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdVdGlsczo6aG9yaXpvbnRhbEFsaWdubWVudE9m
ZnNldChyb290U3R5bGUoKSwgcmVzdWx0LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2lj
YWxSZWN0LndpZHRoKCksIHJlc3VsdC5oYW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3Vs
dC5ydW5zLCBpc0xhc3RJbmxpbmVDb250ZW50KTsKIAogICAgIHJldHVybiB7IHsgbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQsIHBsYWNlZENvbnRlbnRFbmQgfQogICAgICAgICAsIFdU
Rk1vdmUocmVzdWx0LnJ1bnMpCkBAIC0xNTIsNyArMTUxLDcgQEAgdm9pZCBUZXh0T25seVNpbXBs
ZUxpbmVCdWlsZGVyOjppbml0aWFsaXplKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFu
Z2UsIGMKIAogSW5saW5lSXRlbVBvc2l0aW9uIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OnBs
YWNlSW5saW5lVGV4dENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSkK
IHsKLSAgICBhdXRvJiByb290U3R5bGUgPSAhaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IHJvb3Qo
KS5zdHlsZSgpIDogcm9vdCgpLmZpcnN0TGluZVN0eWxlKCk7CisgICAgYXV0byYgcm9vdFN0eWxl
ID0gdGhpcy0+cm9vdFN0eWxlKCk7CiAgICAgYXV0byBoYXNXcmFwT3Bwb3J0dW5pdHlCZWZvcmVX
aGl0ZXNwYWNlID0gcm9vdFN0eWxlLndoaXRlU3BhY2VDb2xsYXBzZSgpICE9IFdoaXRlU3BhY2VD
b2xsYXBzZTo6QnJlYWtTcGFjZXMgJiYgcm9vdFN0eWxlLmxpbmVCcmVhaygpICE9IExpbmVCcmVh
azo6QWZ0ZXJXaGl0ZVNwYWNlOwogICAgIHNpemVfdCBwbGFjZWRJbmxpbmVJdGVtQ291bnQgPSAw
OwogCkBAIC0yMTksMTEgKzIxOCwxMSBAQCBJbmxpbmVJdGVtUG9zaXRpb24gVGV4dE9ubHlTaW1w
bGVMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVUZXh0Q29udGVudChjb25zdCBJbmxpbgogCiBJbmxp
bmVJdGVtUG9zaXRpb24gVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6cGxhY2VOb25XcmFwcGlu
Z0lubGluZVRleHRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UpCiB7
Ci0gICAgQVNTRVJUKCFUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdCgpLnN0eWxlKCkp
KTsKKyAgICBBU1NFUlQoIVRleHRVdGlsOjppc1dyYXBwaW5nQWxsb3dlZChyb290U3R5bGUoKSkp
OwogICAgIEFTU0VSVCghbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtKTsKIAogICAgIGF1dG8gY2Fu
ZGlkYXRlQ29udGVudCA9IENhbmRpZGF0ZVRleHRDb250ZW50IHsgbGF5b3V0UmFuZ2Uuc3RhcnRJ
bmRleCgpLCBsYXlvdXRSYW5nZS5zdGFydEluZGV4KCksIHsgfSB9OwotICAgIGF1dG8mIHJvb3RT
dHlsZSA9ICFpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpID8gcm9vdCgpLnN0eWxlKCkgOiByb290KCku
Zmlyc3RMaW5lU3R5bGUoKTsKKyAgICBhdXRvJiByb290U3R5bGUgPSB0aGlzLT5yb290U3R5bGUo
KTsKICAgICBhdXRvIGlzRW5kT2ZMaW5lID0gZmFsc2U7CiAgICAgYXV0byB0cmFpbGluZ0xpbmVC
cmVha0luZGV4ID0gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsgfTsKICAgICBhdXRvIG5leHRJdGVt
SW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydEluZGV4KCk7CkBAIC0yNjIsNyArMjYxLDcgQEAgSW5s
aW5lSXRlbVBvc2l0aW9uIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OnBsYWNlTm9uV3JhcHBp
bmdJbmxpbmVUZXh0Q29udGVudCgKIAogVGV4dE9ubHlMaW5lQnJlYWtSZXN1bHQgVGV4dE9ubHlT
aW1wbGVMaW5lQnVpbGRlcjo6Y29tbWl0Q2FuZGlkYXRlQ29udGVudChjb25zdCBDYW5kaWRhdGVU
ZXh0Q29udGVudCYgY2FuZGlkYXRlQ29udGVudCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlv
dXRSYW5nZSkKIHsKLSAgICBhdXRvJiByb290U3R5bGUgPSAhaXNGaXJzdEZvcm1hdHRlZExpbmUo
KSA/IHJvb3QoKS5zdHlsZSgpIDogcm9vdCgpLmZpcnN0TGluZVN0eWxlKCk7CisgICAgYXV0byYg
cm9vdFN0eWxlID0gdGhpcy0+cm9vdFN0eWxlKCk7CiAgICAgYXV0byBoYXNMZWFkaW5nUGFydGlh
Q29udGVudCA9IG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSAmJiBjYW5kaWRhdGVDb250ZW50LnN0
YXJ0SW5kZXggPT0gbGF5b3V0UmFuZ2Uuc3RhcnRJbmRleCgpOwogICAgIGF1dG8gY29udGVudFdp
ZHRoID0gWyZdIChhdXRvJiBpbmxpbmVUZXh0SXRlbSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50
T2Zmc2V0KSB7CiAgICAgICAgIGlmIChhdXRvIGxvZ2ljYWxXaWR0aCA9IGlubGluZVRleHRJdGVt
LndpZHRoKCkpCkBAIC0zODAsNyArMzc5LDcgQEAgdm9pZCBUZXh0T25seVNpbXBsZUxpbmVCdWls
ZGVyOjpoYW5kbGVMaW5lRW5kaW5nKElubGluZUl0ZW1Qb3NpdGlvbiBwbGFjZWRDb250ZW4KICAg
ICBhdXRvIGhvcml6b250YWxBdmFpbGFibGVTcGFjZSA9IG1fbGluZUxvZ2ljYWxSZWN0LndpZHRo
KCk7CiAgICAgYXV0byBpc0xhc3RJbmxpbmVDb250ZW50ID0gaXNMYXN0TGluZVdpdGhJbmxpbmVD
b250ZW50KHBsYWNlZENvbnRlbnRFbmQsIGxheW91dFJhbmdlRW5kSW5kZXgpOwogICAgIGF1dG8g
c2hvdWxkUHJlc2VydmVUcmFpbGluZ1doaXRlc3BhY2UgPSBbJl0gewotICAgICAgICByZXR1cm4g
cm9vdCgpLnN0eWxlKCkubGluZUJyZWFrKCkgPT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2Ug
JiYgaW50cmluc2ljV2lkdGhNb2RlKCkgIT0gSW50cmluc2ljV2lkdGhNb2RlOjpNaW5pbXVtICYm
ICghaXNMYXN0SW5saW5lQ29udGVudCB8fCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UgPCBtX2xp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJvb3RTdHlsZSgpLmxp
bmVCcmVhaygpID09IExpbmVCcmVhazo6QWZ0ZXJXaGl0ZVNwYWNlICYmIGludHJpbnNpY1dpZHRo
TW9kZSgpICE9IEludHJpbnNpY1dpZHRoTW9kZTo6TWluaW11bSAmJiAoIWlzTGFzdElubGluZUNv
bnRlbnQgfHwgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlIDwgbV9saW5lLmNvbnRlbnRMb2dpY2Fs
V2lkdGgoKSk7CiAgICAgfTsKICAgICBtX3RyaW1tZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9
IG1fbGluZS5oYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoc2hvdWxkUHJlc2VydmVUcmFp
bGluZ1doaXRlc3BhY2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2VydmUg
OiBMaW5lOjpUcmFpbGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSk7CiAgICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0KCkucXVpcmtzKCkudHJhaWxpbmdOb25CcmVha2luZ1NwYWNlTmVlZHNBZGp1c3Rt
ZW50KGlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSwgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlIDwg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSkpCkBAIC0zOTIsNyArMzkxLDcgQEAgdm9pZCBU
ZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpoYW5kbGVMaW5lRW5kaW5nKElubGluZUl0ZW1Qb3Np
dGlvbiBwbGFjZWRDb250ZW4KIHNpemVfdCBUZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyOjpyZXZl
cnRUb1RyYWlsaW5nSXRlbShjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCBjb25z
dCBJbmxpbmVUZXh0SXRlbSYgdHJhaWxpbmdJbmxpbmVJdGVtKQogewogICAgIGF1dG8gaXNGaXJz
dEZvcm1hdHRlZExpbmUgPSB0aGlzLT5pc0ZpcnN0Rm9ybWF0dGVkTGluZSgpOwotICAgIGF1dG8m
IHJvb3RTdHlsZSA9ICFpc0ZpcnN0Rm9ybWF0dGVkTGluZSA/IHJvb3QoKS5zdHlsZSgpIDogcm9v
dCgpLmZpcnN0TGluZVN0eWxlKCk7CisgICAgYXV0byYgcm9vdFN0eWxlID0gdGhpcy0+cm9vdFN0
eWxlKCk7CiAgICAgbV9saW5lLmluaXRpYWxpemUoeyB9LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSk7
CiAgICAgc2l6ZV90IG51bWJlck9mSW5saW5lSXRlbXNPbkxpbmUgPSAwOwogCkBAIC00NTMsMjgg
KzQ1MiwyNyBAQCBib29sIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JT
aW1wbGlmaWVkVGV4dE9ubHlJbmxpbmVMYXlvdXRCeUNvbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OmlzRWxpZ2libGVGb3JTaW1wbGlmaWVk
SW5saW5lTGF5b3V0QnlTdHlsZShjb25zdCBFbGVtZW50Qm94JiByb290Qm94KQorYm9vbCBUZXh0
T25seVNpbXBsZUxpbmVCdWlsZGVyOjppc0VsaWdpYmxlRm9yU2ltcGxpZmllZElubGluZUxheW91
dEJ5U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8mIHJvb3RTdHls
ZSA9IHJvb3RCb3guc3R5bGUoKTsKLSAgICBpZiAocm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkud29y
ZFNwYWNpbmcoKSkKKyAgICBpZiAoc3R5bGUuZm9udENhc2NhZGUoKS53b3JkU3BhY2luZygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFyb290U3R5bGUuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKQorICAgIGlmICghc3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJvb3RTdHlsZS53b3JkQnJlYWsoKSA9PSBXb3Jk
QnJlYWs6OkF1dG9QaHJhc2UpCisgICAgaWYgKHN0eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVh
azo6QXV0b1BocmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyb290U3R5bGUu
dGV4dEluZGVudCgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQorICAgIGlm
IChzdHlsZS50ZXh0SW5kZW50KCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocm9vdFN0eWxlLnRleHRBbGlnbkxhc3Qo
KSA9PSBUZXh0QWxpZ25MYXN0OjpKdXN0aWZ5IHx8IHJvb3RTdHlsZS50ZXh0QWxpZ24oKSA9PSBU
ZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5IHx8IHJvb3RCb3guaXNSdWJ5QW5ub3RhdGlvbkJveCgpKQor
ICAgIGlmIChzdHlsZS50ZXh0QWxpZ25MYXN0KCkgPT0gVGV4dEFsaWduTGFzdDo6SnVzdGlmeSB8
fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5IHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6UnVieUFubm90YXRpb24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAocm9vdFN0eWxlLmJveERlY29yYXRpb25CcmVhaygpID09IEJveERlY29y
YXRpb25CcmVhazo6Q2xvbmUpCisgICAgaWYgKHN0eWxlLmJveERlY29yYXRpb25CcmVhaygpID09
IEJveERlY29yYXRpb25CcmVhazo6Q2xvbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIXJvb3RTdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKS5pc0VtcHR5KCkpCisgICAgaWYgKCFz
dHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAocm9vdFN0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpICE9IFJlbmRlclN0
eWxlOjppbml0aWFsSHlwaGVuYXRpb25MaW1pdExpbmVzKCkpCisgICAgaWYgKHN0eWxlLmh5cGhl
bmF0aW9uTGltaXRMaW5lcygpICE9IFJlbmRlclN0eWxlOjppbml0aWFsSHlwaGVuYXRpb25MaW1p
dExpbmVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocm9vdFN0eWxlLnRleHRX
cmFwTW9kZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiByb290U3R5bGUudGV4dFdyYXBTdHls
ZSgpID09IFRleHRXcmFwU3R5bGU6OkJhbGFuY2UpCisgICAgaWYgKHN0eWxlLnRleHRXcmFwTW9k
ZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiBzdHlsZS50ZXh0V3JhcFN0eWxlKCkgPT0gVGV4
dFdyYXBTdHlsZTo6QmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyb290
U3R5bGUubGluZUFsaWduKCkgIT0gTGluZUFsaWduOjpOb25lIHx8IHJvb3RTdHlsZS5saW5lU25h
cCgpICE9IExpbmVTbmFwOjpOb25lKQorICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5l
QWxpZ246Ok5vbmUgfHwgc3R5bGUubGluZVNuYXAoKSAhPSBMaW5lU25hcDo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxp
bmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmgKaW5kZXggMmNjOWU5MDdjNjYwLi43ZDU4
YWVlNTRkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVC
dWlsZGVyLmgKQEAgLTM3LDExICszNywxMSBAQCBzdHJ1Y3QgVGV4dE9ubHlMaW5lQnJlYWtSZXN1
bHQ7CiAKIGNsYXNzIFRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIgOiBwdWJsaWMgQWJzdHJhY3RM
aW5lQnVpbGRlciB7CiBwdWJsaWM6Ci0gICAgVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcihJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYsIEhvcml6b250YWxDb25zdHJhaW50cyByb290SG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVJdGVtTGlzdCYpOworICAgIFRleHRPbmx5U2ltcGxl
TGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBFbGVtZW50Qm94JiBy
b290Qm94LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6b250YWxDb25zdHJhaW50cywg
Y29uc3QgSW5saW5lSXRlbUxpc3QmKTsKICAgICBMaW5lTGF5b3V0UmVzdWx0IGxheW91dElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xp
bmU+JikgZmluYWw7CiAKICAgICBzdGF0aWMgYm9vbCBpc0VsaWdpYmxlRm9yU2ltcGxpZmllZFRl
eHRPbmx5SW5saW5lTGF5b3V0QnlDb250ZW50KGNvbnN0IElubGluZUNvbnRlbnRDYWNoZTo6SW5s
aW5lSXRlbXMmLCBjb25zdCBQbGFjZWRGbG9hdHMmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0VsaWdp
YmxlRm9yU2ltcGxpZmllZElubGluZUxheW91dEJ5U3R5bGUoY29uc3QgRWxlbWVudEJveCYgcm9v
dCk7CisgICAgc3RhdGljIGJvb2wgaXNFbGlnaWJsZUZvclNpbXBsaWZpZWRJbmxpbmVMYXlvdXRC
eVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CiAKIHByaXZhdGU6CiAgICAgSW5saW5lSXRlbVBv
c2l0aW9uIHBsYWNlSW5saW5lVGV4dENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>