<?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>211025</bug_id>
          
          <creation_ts>2020-04-25 11:32:32 -0700</creation_ts>
          <short_desc>Remove unnecessary inlining and templates for URL decomposition DOM functions</short_desc>
          <delta_ts>2020-04-26 07:54:16 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645626</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 11:32:32 -0700</bug_when>
    <thetext>Remove unnecessary inlining and templates for URL decomposition DOM functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645627</commentid>
    <comment_count>1</comment_count>
      <attachid>397571</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 11:45:07 -0700</bug_when>
    <thetext>Created attachment 397571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645775</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-26 07:53:38 -0700</bug_when>
    <thetext>Committed r260724: &lt;https://trac.webkit.org/changeset/260724&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397571.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645776</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-26 07:54:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/62394425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397571</attachid>
            <date>2020-04-25 11:45:07 -0700</date>
            <delta_ts>2020-04-26 07:53:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211025-20200425114506.patch</filename>
            <type>text/plain</type>
            <size>36501</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2NzhkYzAwNTMxM2Nj
YzBjYjczNjRkYjUzNTAyZGFjYjQ2NTkwMS4uY2MzNDA2ODY1Y2UwOTk0ZDgzMmM0NWFiYWVjMmFi
NTUxMWM4YjQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA0LTI1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkg
aW5saW5pbmcgYW5kIHRlbXBsYXRlcyBmb3IgVVJMIGRlY29tcG9zaXRpb24gRE9NIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDI1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFk
ZXJzLmNtYWtlOiBSZW5hbWVkIFVSTFV0aWxzLmggdG8gVVJMRGVjb21wb3NpdGlvbi5oLgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDogVXBkYXRlZCBpbmNsdWRl
IGFuZCB1c2luZyBuYW1lc3BhY2UuCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZGVkIFVSTERl
Y29tcG9zaXRpb24uY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogQWRkZWQgVVJMRGVjb21wb3NpdGlvbi5jcHAgYW5kCisgICAgICAgIHJlbmFtZWQgVVJM
VXRpbHMuaCB0byBVUkxEZWNvbXBvc2l0aW9uLmguCisKKyAgICAgICAgKiBodG1sL0RPTVVSTC5o
OiBSZW1vdmVkIHRoZSBXRUJDT1JFX0VYUE9SVCBvbiB0aGlzIGNsYXNzLiBBZGRlZCBmaW5hbC4K
KyAgICAgICAgRGVyaXZlIGZyb20gVVJMRGVjb21wb3NpdGlvbiBpbnN0ZWFkIG9mIFVSTFV0aWxz
LiBDaGFuZ2VkIHJldHVybiB0eXBlIG9mCisgICAgICAgIGhyZWYgdG8gY29uc3QmLiBNb3ZlZCB0
b0pTT04gaGVyZSBmcm9tIFVSTFV0aWxzLiBBZGRlZCBvdmVycmlkZXMgb2YgdGhlCisgICAgICAg
IGZ1bGxVUkwgYW5kIHNldEZ1bGxVUkwgZnVuY3Rpb25zIGZvciBVUkxEZWNvbXBvc2l0aW9uLgor
CisgICAgICAgICogaHRtbC9ET01VUkwuaWRsOiBSZW1vdmVkIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpIVE1MQW5jaG9yRWxlbWVudCk6IE1vdmVkIGlu
aXRpYWxpemF0aW9uIG9mCisgICAgICAgIGJvb2xlYW4gZGF0YSBtZW1iZXJzIHRvIHRoZSBjbGFz
cyBkZWZpbml0aW9uLgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oOiBEZXJp
dmUgZnJvbSBVUkxEZWNvbXBvc2l0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgVVJMVXRpbHMuIEFk
ZGVkIG92ZXJyaWRlcyBvZiB0aGUgZnVsbFVSTCBhbmQgc2V0RnVsbFVSTCBmdW5jdGlvbnMgZm9y
CisgICAgICAgIFVSTERlY29tcG9zaXRpb24uIEluaXRpYWxpemUgZGF0YSBtZW1iZXJzIGhlcmUg
aW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgRE9NVVJMLmguCisKKyAgICAg
ICAgKiBodG1sL1VSTERlY29tcG9zaXRpb24uY3BwOiBBZGRlZC4gQ29udGFpbnMgbW9zdCBvZiB0
aGUgY29kZSBmcm9tCisgICAgICAgIHRoZSBVUkxVdGlscyBjbGFzcyB0ZW1wbGF0ZSwgd2hpY2gg
bm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGluIGEgaGVhZGVyLgorCisgICAgICAgICogaHRtbC9VUkxE
ZWNvbXBvc2l0aW9uLmg6IFJlbmFtZWQgVVJMVXRpbHMuaCB0byB0aGlzLiBJdCdzIG5vdyBhbgor
ICAgICAgICBhYnN0cmFjdCBiYXNlIGNsYXNzIHJhdGhlciB0aGFuIGEgY2xhc3MgdGVtcGxhdGUg
dXNpbmcgdGhlIGN1cmlvdXNseQorICAgICAgICByZWN1cnJpbmcgdGVtcGxhdGUgcGF0dGVybi4K
KworICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmg6IEZvcndhcmQtZGVjbGFyZSBET01V
UkwgcmF0aGVyIHRoYW4gaW5jbHVkaW5nCisgICAgICAgIHRoZSBET01VUkwuaCBoZWFkZXIuCisK
KyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6IFJlbW92ZWQuIFJlbmFtZWQgdG8gVVJMRGVjb21w
b3N0aW9uLmguCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6IFJlbW92ZWQgdW5uZWVk
ZWQgaW5jbHVkZSBvZiBET01VUkwuaC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
IEFkZGVkIGluY2x1ZGUgb2YgRE9NVVJMLmguCisKIDIwMjAtMDQtMjUgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgVVJMIHRvIHVzZSBTdHJpbmdWaWV3IHdo
ZW4gcmV0dXJuaW5nIHN1YnN0cmluZ3Mgb2YgdGhlIFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
ODA2YTI4MTIyZWQzN2FhMGI4ZTcyYjhjY2IxMjM1MDZiYzQ1OTE2ZC4uNTRhYjI3NmFmMjQ2NmZh
MzNmNWUzMTFiZjRhOGM3MDFkYzFhNDQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02NTAsOCAr
NjUwLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGh0bWwv
U3RlcFJhbmdlLmgKICAgICBodG1sL1RpbWVSYW5nZXMuaAogICAgIGh0bWwvVHlwZUFoZWFkLmgK
KyAgICBodG1sL1VSTERlY29tcG9zaXRpb24uaAogICAgIGh0bWwvVVJMUmVnaXN0cnkuaAotICAg
IGh0bWwvVVJMVXRpbHMuaAogICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5oCiAgICAgaHRtbC9Wb2lk
Q2FsbGJhY2suaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggYjhmZjQxYzIzOWViM2Y4Njk2Y2IxZGE4MTc5MTJhN2E1ZDYzZmQ1
MC4uODQyODA4OTlmNTNjYTU5YTg4ZjNhMzJmMzU2YzVmYjExYjEwYzE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzIsOSAr
MzIsOSBAQAogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOwogCiBET01DYWNoZVN0b3JhZ2U6OkRPTUNhY2hlU3RvcmFn
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCA2ZjE1NGYxMzljMDRkNThiNDg2OTk5Nzk3Y2FkZTNmMDczNjg5ODc5Li45
ZDI1MzFiMTcwNGQyMmU5OWU3ZjhjMDc0MmNjYjViN2ZlZTFlODFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMTI3Niw2ICsxMjc2LDcgQEAgaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAogaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcAogaHRtbC9UaW1lUmFuZ2VzLmNwcAogaHRtbC9UeXBlQWhlYWQuY3BwCitodG1s
L1VSTERlY29tcG9zaXRpb24uY3BwCiBodG1sL1VSTElucHV0VHlwZS5jcHAKIGh0bWwvVVJMU2Vh
cmNoUGFyYW1zLmNwcAogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MTEyNTZjODlh
M2U1NmE2N2Y1NzMzOGRlM2M0NDg1M2VhMDczYTY4Li43YWQ4Y2NlYzQxMjdjYWM3M2ZiZDQzN2U4
NTM5MzAyNjg4ZGM0ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzEwLDcgKzI3MTAsNyBAQAogCQk5M0QxOTYzMzFENkNB
QjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3
OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTRXhlY1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNF
eGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZD
OUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzRDQzN0EyMUQ1
N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTFV0aWxzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENDM3
QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTERlY29tcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkI5RENBMTg5REUxMDAwMEJCODQyQyAv
KiBVUkxEZWNvbXBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3Vz
dG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDcy
NkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0b20uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q5RDUzQzBEQTI3RTE4MDA3
NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMgLyogUmFuZ2VCb3Vu
ZGFyeVBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNFMjQxRkYwQjJCNEU0MDAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjQxRkUw
QjJCNEU0MDAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjQxLDcgKzkyNDEsNyBAQAog
CQk2NTY1ODFFOTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFNWR05hbWVzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL1NWR05hbWVzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTY1
NjU4MUVBMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBYTGlua05hbWVzLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvWExpbmtOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTY1NjU4MUVCMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYTGlua05hbWVzLmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL1hMaW5rTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKLQkJNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTFV0aWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVSTFV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NkI5
RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxEZWNvbXBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVSTERlY29tcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3
MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkZXJOU1VSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTZEMzcxQjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRy
YXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZGVyTlNV
UkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzFFMEFEQkE1
REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwOTI2LDYgKzEwOTI2LDcgQEAKIAkJOTNFMjQyNUUwQjJCNTA5NTAwQzczMkExIC8qIEhUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0UyQTMwNDEyM0U5REMwMDA5RkUxMkEgLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGFyc2VySWRpb21zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMkEzMDUxMjNFOURDMDAwOUZFMTJBIC8qIEhU
TUxQYXJzZXJJZGlvbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFBh
cnNlcklkaW9tcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U1QjI1NDI0NTM2
QjFFMDA1QzUyRDAgLyogVVJMRGVjb21wb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVUkxEZWNvbXBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNFQjM1NUUwOUUzN0ZENjAwRjQzNzk5IC8qIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRUVDMUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdHRyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFRUMxRTYw
OUMyODc3NzAwQzUxNUQxIC8qIENoYXJhY3RlckRhdGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IENoYXJhY3RlckRhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI0
OTIsMTMgKzIyNDkzLDE0IEBACiAJCQkJRTQ0NjEzOUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVS
YW5nZXMuaWRsICovLAogCQkJCUMzNzVEN0ZCMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQu
Y3BwICovLAogCQkJCUMzNzVEN0ZDMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCAqLywK
KwkJCQk5M0U1QjI1NDI0NTM2QjFFMDA1QzUyRDAgLyogVVJMRGVjb21wb3NpdGlvbi5jcHAgKi8s
CisJCQkJNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29tcG9zaXRpb24uaCAqLywK
IAkJCQlGNTVCM0RBOTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0RBQTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmggKi8sCiAJCQkJQ0RF
RTM5MzgxNzk3NDI3NDAwMUQ3NTgwIC8qIFVSTFJlZ2lzdHJ5LmggKi8sCiAJCQkJNUM1MzgxQjAx
RDg3RDQ1NzAwRTJFQkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5jcHAgKi8sCiAJCQkJNUM1MzgxQjEx
RDg3RDQ1NzAwRTJFQkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovLAogCQkJCTVDNTM4MUFGMUQ4
NzkzRTAwMEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuaWRsICovLAotCQkJCTY1NkI5RENBMTg5
REUxMDAwMEJCODQyQyAvKiBVUkxVdGlscy5oICovLAogCQkJCUY1QTE1NDI1MTI3OTUzNEQwMEQw
QjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgKi8sCiAJCQkJRjVBMTU0MjYxMjc5NTM0RDAw
RDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmggKi8sCiAJCQkJMTVDNzcwOEExMDBEM0M2QTAw
NUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLywKQEAgLTMzMzIzLDEwICszMzMyNSwxMCBAQAog
CQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQxNzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTERlY29tcG9z
aXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBV
UkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzRERFMTI1MUYxMkQwMDNF
RjI2OSAvKiBVUkxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQzI4OURGMUFBMEZF
NUQwMDlBOUNFMyAvKiBVUkxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTNENDM3QTIx
RDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI3NjNC
RjE2Njg5QkZCMDAyRkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2ODE2MEQ2MTg3NjZBMTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUEzQUY5RDg2MjAzMjY4NjEwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAwM2Y0
NDUwZmRkYTBkNDYzNTIwZS4uMjYwMzk2YTA4MTJmZTM4YzE5YzU0MzgxNGY1MmUxMTIxYzBlMzBj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw4ICsyNyw4IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiVVJMRGVjb21wb3NpdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlICJVUkxVdGlscy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM3LDE5ICszNywyMSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgVVJMUmVnaXN0cmFibGU7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1
YmxpYyBVUkxVdGlsczxET01VUkw+IHsKK2NsYXNzIERPTVVSTCBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPERPTVVSTD4sIHB1YmxpYyBVUkxEZWNvbXBvc2l0aW9uIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBiYXNlKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJMJiBiYXNlKTsKICAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgfkRPTVVSTCgpOwogCi0gICAgVVJMIGhyZWYoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEhyZWYoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGNv
bnN0IFVSTCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0SHJlZihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0
cmluZyYpOwogCiAgICAgVVJMU2VhcmNoUGFyYW1zJiBzZWFyY2hQYXJhbXMoKTsKIAorICAgIGNv
bnN0IFN0cmluZyYgdG9KU09OKCkgY29uc3QgeyByZXR1cm4gbV91cmwuc3RyaW5nKCk7IH0KKwog
ICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBCbG9iJik7CiAgICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKIApAQCAtNTgsNiArNjAsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIERPTVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgVVJMJiYgYmFzZVVSTCk7CiAK
KyAgICBVUkwgZnVsbFVSTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgdm9p
ZCBzZXRGdWxsVVJMKGNvbnN0IFVSTCYgZnVsbFVSTCkgZmluYWwgeyBzZXRIcmVmKGZ1bGxVUkwu
c3RyaW5nKCkpOyB9CisKICAgICBVUkwgbV9iYXNlVVJMOwogICAgIFVSTCBtX3VybDsKICAgICBS
ZWZQdHI8VVJMU2VhcmNoUGFyYW1zPiBtX3NlYXJjaFBhcmFtczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlk
bAppbmRleCA5MTJjMTQ1MWFkNzBiZjlmYjY0MDBhMjdjMGE2MmIwN2ExYzgxMmFlLi5hNjkwYzkz
ZWQ0NTk0YjVmOTYwMjVlYTMyNWY5M2IzMWFkYzNhODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVVSTC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRs
CkBAIC0zMiw3ICszMiw2IEBACiAgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2Vy
KSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9VVJM
LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggNTJhY2Yw
NzQ4ZTY0YmYxNzU2ZDBkMzE0NzNmMTRkZWIwMGJlOGM1ZC4uMDA5ZjU1NDc4ZDNhNmU4NjE5ODhl
NmJiZjI1Y2U0MGIyMTM4Y2NiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKQEAgLTY1LDggKzY1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
SFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxBbmNob3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQotICAgICwgbV9oYXNSb290RWRpdGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25N
b3VzZURvd24oZmFsc2UpCi0gICAgLCBtX3dhc1NoaWZ0S2V5RG93bk9uTW91c2VEb3duKGZhbHNl
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggNTA5
NzZiYmVmYjNhNGU1MzdlOGM4MDZjM2U4MzQ1MzZhYTQxODA1Yy4uYjUyMjcyY2YyZjNjMTQ1YTg4
NmRkNWIzZWYzM2FmMDI4NjAyYjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgotI2luY2x1
ZGUgIlVSTFV0aWxzLmgiCisjaW5jbHVkZSAiVVJMRGVjb21wb3NpdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArNDEsNyBA
QCBlbnVtIGNsYXNzIFJlbGF0aW9uIDogdWludDhfdCB7CiAgICAgT3BlbmVyID0gMSA8PCAyLAog
fTsKIAotY2xhc3MgSFRNTEFuY2hvckVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1Ymxp
YyBVUkxVdGlsczxIVE1MQW5jaG9yRWxlbWVudD4geworY2xhc3MgSFRNTEFuY2hvckVsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBVUkxEZWNvbXBvc2l0aW9uIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBbmNob3JFbGVtZW50KTsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEhUTUxBbmNob3JFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTExNiw4ICsx
MTYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RFZGl0YWJsZUVsZW1lbnRGb3JTZWxl
Y3Rpb25Pbk1vdXNlRG93bihFbGVtZW50Kik7CiAgICAgdm9pZCBjbGVhclJvb3RFZGl0YWJsZUVs
ZW1lbnRGb3JTZWxlY3Rpb25Pbk1vdXNlRG93bigpOwogCi0gICAgYm9vbCBtX2hhc1Jvb3RFZGl0
YWJsZUVsZW1lbnRGb3JTZWxlY3Rpb25Pbk1vdXNlRG93bjsKLSAgICBib29sIG1fd2FzU2hpZnRL
ZXlEb3duT25Nb3VzZURvd247CisgICAgVVJMIGZ1bGxVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBocmVmKCk7IH0KKyAgICB2b2lkIHNldEZ1bGxVUkwoY29uc3QgVVJMJiBmdWxsVVJMKSBmaW5h
bCB7IHNldEhyZWYoZnVsbFVSTC5zdHJpbmcoKSk7IH0KKworICAgIGJvb2wgbV9oYXNSb290RWRp
dGFibGVFbGVtZW50Rm9yU2VsZWN0aW9uT25Nb3VzZURvd24geyBmYWxzZSB9OworICAgIGJvb2wg
bV93YXNTaGlmdEtleURvd25Pbk1vdXNlRG93biB7IGZhbHNlIH07CiAgICAgT3B0aW9uU2V0PFJl
bGF0aW9uPiBtX2xpbmtSZWxhdGlvbnM7CiAKICAgICAvLyBUaGlzIGlzIGNvbXB1dGVkIG9ubHkg
b25jZSBhbmQgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgc3Vic2VxdWVudCBVUkwgY2hhbmdlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDk2YjhiMGVmYzcw
MTI2NDU2YWI2OWVjN2JlZTFjZjI3OTA5ZGYxNzQuLjYwZTViYTJkMWQ5YjQ5YTEzNzcxNWRlZGFj
Y2JlZGIxYjdmYTRhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMTQ5LDcgKzE0OSw2IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0jaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTE4
NTI0ZjU2NmQyZGFkOTEyODNjZGJkZmUzMjZiY2E0NDU3OGZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcApAQCAtMCwwICsxLDI0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVJMRGVjb21wb3Np
dGlvbi5oIgorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTdHJpbmcgVVJMRGVjb21wb3NpdGlvbjo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShmdWxsVVJMKCkpLT50b1N0cmluZygpOworfQor
CitTdHJpbmcgVVJMRGVjb21wb3NpdGlvbjo6cHJvdG9jb2woKSBjb25zdAoreworICAgIGF1dG8g
ZnVsbFVSTCA9IHRoaXMtPmZ1bGxVUkwoKTsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChmdWxsVVJMLnN0cmluZygpKSkKKyAgICAgICAgcmV0dXJuICJqYXZhc2NyaXB0OiJfczsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyhmdWxsVVJMLnByb3RvY29sKCksICc6Jyk7Cit9CisKK3Zv
aWQgVVJMRGVjb21wb3NpdGlvbjo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyB2YWx1ZSkKK3sKKyAg
ICBVUkwgY29weSA9IGZ1bGxVUkwoKTsKKyAgICBjb3B5LnNldFByb3RvY29sKHZhbHVlKTsKKyAg
ICBzZXRGdWxsVVJMKGNvcHkpOworfQorCitTdHJpbmcgVVJMRGVjb21wb3NpdGlvbjo6dXNlcm5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBmdWxsVVJMKCkuZW5jb2RlZFVzZXIoKS50b1N0cmlu
ZygpOworfQorCit2b2lkIFVSTERlY29tcG9zaXRpb246OnNldFVzZXJuYW1lKFN0cmluZ1ZpZXcg
dXNlcikKK3sKKyAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CisgICAgaWYgKGZ1
bGxVUkwuY2Fubm90QmVBQmFzZVVSTCgpKQorICAgICAgICByZXR1cm47CisgICAgZnVsbFVSTC5z
ZXRVc2VyKHVzZXIpOworICAgIHNldEZ1bGxVUkwoZnVsbFVSTCk7Cit9CisKK1N0cmluZyBVUkxE
ZWNvbXBvc2l0aW9uOjpwYXNzd29yZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZ1bGxVUkwoKS5l
bmNvZGVkUGFzc3dvcmQoKS50b1N0cmluZygpOworfQorCit2b2lkIFVSTERlY29tcG9zaXRpb246
OnNldFBhc3N3b3JkKFN0cmluZ1ZpZXcgcGFzc3dvcmQpCit7CisgICAgYXV0byBmdWxsVVJMID0g
dGhpcy0+ZnVsbFVSTCgpOworICAgIGlmIChmdWxsVVJMLmNhbm5vdEJlQUJhc2VVUkwoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZ1bGxVUkwuc2V0UGFzc3dvcmQocGFzc3dvcmQpOworICAgIHNl
dEZ1bGxVUkwoZnVsbFVSTCk7Cit9CisKK1N0cmluZyBVUkxEZWNvbXBvc2l0aW9uOjpob3N0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZnVsbFVSTCgpLmhvc3RBbmRQb3J0KCk7Cit9CisKK3N0YXRp
YyB1bnNpZ25lZCBjb3VudEFTQ0lJRGlnaXRzKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGNvdW50
ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc3RyaW5nW2NvdW50XSkpCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorICAg
IHJldHVybiBsZW5ndGg7Cit9CisKK3ZvaWQgVVJMRGVjb21wb3NpdGlvbjo6c2V0SG9zdChTdHJp
bmdWaWV3IHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNpemVfdCBzZXBhcmF0b3IgPSB2YWx1ZS5maW5kKCc6Jyk7CisgICAgaWYgKCFz
ZXBhcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnVsbFVSTCA9IHRoaXMtPmZ1
bGxVUkwoKTsKKyAgICBpZiAoZnVsbFVSTC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgIWZ1bGxVUkwu
Y2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc2VwYXJhdG9y
ID09IG5vdEZvdW5kKQorICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHMo
dmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEpKTsKKyAgICAgICAgaWYgKCFwb3J0TGVuZ3Ro
KSB7CisgICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3Ry
dWN0dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKKyAgICAgICAgICAg
IC8vIHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAorICAgICAg
ICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRv
IGVtcHR5IHN0cmluZy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2Ugc29t
ZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJlZW4gY2hhbmdlZCBhbmQgdGhpcyBydWxlIGFuZCBjb2Rl
IG1heSBiZSBvYnNvbGV0ZS4KKyAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQobWFr
ZVN0cmluZyh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSksICcwJykpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBwb3J0TnVtYmVyID0gcGFyc2VVSW50MTYodmFs
dWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgIGlm
IChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVy
LCBmdWxsVVJMLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAs
IHNlcGFyYXRvciArIDEgKyBwb3J0TGVuZ3RoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc2V0
RnVsbFVSTChmdWxsVVJMKTsKK30KKworU3RyaW5nIFVSTERlY29tcG9zaXRpb246Omhvc3RuYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnVsbFVSTCgpLmhvc3QoKS50b1N0cmluZygpOworfQor
CitzdGF0aWMgU3RyaW5nVmlldyByZW1vdmVBbGxMZWFkaW5nU29saWR1c0NoYXJhY3RlcnMoU3Ry
aW5nVmlldyBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgaTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChzdHJpbmdbaV0gIT0gJy8nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKGkpOworfQorCit2b2lkIFVSTERlY29tcG9zaXRp
b246OnNldEhvc3RuYW1lKFN0cmluZ1ZpZXcgdmFsdWUpCit7CisgICAgYXV0byBob3N0ID0gcmVt
b3ZlQWxsTGVhZGluZ1NvbGlkdXNDaGFyYWN0ZXJzKHZhbHVlKTsKKyAgICBpZiAoaG9zdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJM
KCk7CisgICAgaWYgKGZ1bGxVUkwuY2Fubm90QmVBQmFzZVVSTCgpIHx8ICFmdWxsVVJMLmNhblNl
dEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZ1bGxVUkwuc2V0SG9zdChob3N0
KTsKKyAgICBzZXRGdWxsVVJMKGZ1bGxVUkwpOworfQorCitTdHJpbmcgVVJMRGVjb21wb3NpdGlv
bjo6cG9ydCgpIGNvbnN0Cit7CisgICAgYXV0byBwb3J0ID0gZnVsbFVSTCgpLnBvcnQoKTsKKyAg
ICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBT
dHJpbmc6Om51bWJlcigqcG9ydCk7Cit9CisKKy8vIE91dGVyIG9wdGlvbmFsIGlzIHdoZXRoZXIg
d2UgY291bGQgcGFyc2UgYXQgYWxsLiBJbm5lciBvcHRpb25hbCBpcyAibm8gcG9ydCBzcGVjaWZp
ZWQiLgorc3RhdGljIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQxNl90Pj4gcGFyc2VQb3J0KFN0cmlu
Z1ZpZXcgc3RyaW5nLCBTdHJpbmdWaWV3IHByb3RvY29sKQoreworICAgIGF1dG8gZGlnaXRzT25s
eSA9IHN0cmluZy5sZWZ0KGNvdW50QVNDSUlEaWdpdHMoc3RyaW5nKSk7CisgICAgaWYgKGRpZ2l0
c09ubHkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RG
OjpudWxsb3B0IH07CisgICAgYXV0byBwb3J0ID0gcGFyc2VVSW50MTYoZGlnaXRzT25seSk7Cisg
ICAgaWYgKCFwb3J0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChXVEY6
OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgICAgICByZXR1
cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgeyAq
cG9ydCB9IH07Cit9CisKK3ZvaWQgVVJMRGVjb21wb3NpdGlvbjo6c2V0UG9ydChTdHJpbmdWaWV3
IHZhbHVlKQoreworICAgIGF1dG8gZnVsbFVSTCA9IHRoaXMtPmZ1bGxVUkwoKTsKKyAgICBpZiAo
ZnVsbFVSTC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgZnVsbFVSTC5wcm90b2NvbElzKCJmaWxlIikg
fHwgIWZ1bGxVUkwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byBwb3J0ID0gcGFyc2VQb3J0KHZhbHVlLCBmdWxsVVJMLnByb3RvY29sKCkpOworICAgIGlmICgh
cG9ydCkKKyAgICAgICAgcmV0dXJuOworICAgIGZ1bGxVUkwuc2V0UG9ydCgqcG9ydCk7CisgICAg
c2V0RnVsbFVSTChmdWxsVVJMKTsKK30KKworU3RyaW5nIFVSTERlY29tcG9zaXRpb246OnBhdGhu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnVsbFVSTCgpLnBhdGgoKS50b1N0cmluZygpOwor
fQorCit2b2lkIFVSTERlY29tcG9zaXRpb246OnNldFBhdGhuYW1lKFN0cmluZ1ZpZXcgdmFsdWUp
Cit7CisgICAgYXV0byBmdWxsVVJMID0gdGhpcy0+ZnVsbFVSTCgpOworICAgIGlmIChmdWxsVVJM
LmNhbm5vdEJlQUJhc2VVUkwoKSB8fCAhZnVsbFVSTC5jYW5TZXRQYXRobmFtZSgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkKKyAgICAgICAgZnVsbFVS
TC5zZXRQYXRoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGxVUkwuc2V0UGF0aChtYWtl
U3RyaW5nKCcvJywgdmFsdWUpKTsKKyAgICBzZXRGdWxsVVJMKGZ1bGxVUkwpOworfQorCitTdHJp
bmcgVVJMRGVjb21wb3NpdGlvbjo6c2VhcmNoKCkgY29uc3QKK3sKKyAgICBhdXRvIGZ1bGxVUkwg
PSB0aGlzLT5mdWxsVVJMKCk7CisgICAgcmV0dXJuIGZ1bGxVUkwucXVlcnkoKS5pc0VtcHR5KCkg
PyBlbXB0eVN0cmluZygpIDogZnVsbFVSTC5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCku
dG9TdHJpbmcoKTsKK30KKwordm9pZCBVUkxEZWNvbXBvc2l0aW9uOjpzZXRTZWFyY2goY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7Cisg
ICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gdmFsdWUg
aXMgdGhlIGVtcHR5IHN0cmluZywgc2V0IHVybCdzIHF1ZXJ5IHRvIG51bGwuCisgICAgICAgIGZ1
bGxVUkwuc2V0UXVlcnkoeyB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBTdHJpbmcgbmV3U2Vh
cmNoID0gdmFsdWUuc3RhcnRzV2l0aCgnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0ICcjJyBpbiB0aGUgcXVlcnkgZG9lcyBub3QgbGVh
ayB0byB0aGUgaGFzaC4KKyAgICAgICAgZnVsbFVSTC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFj
ZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKKyAgICB9CisgICAgc2V0RnVsbFVSTChmdWxsVVJM
KTsKK30KKworU3RyaW5nIFVSTERlY29tcG9zaXRpb246Omhhc2goKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiBXaHkgY29udmVydCB0aGlzIHN0cmluZyB0byBhbiBhdG9tIGhlcmUgaW5zdGVhZCBv
ZiBqdXN0IGEgc3RyaW5nPyBJbnRlbnRpb25hbGx5IHRvIHNhdmUgbWVtb3J5PyBBbiBlcnJvcj8K
KyAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CisgICAgcmV0dXJuIGZ1bGxVUkwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkuaXNFbXB0eSgpID8gZW1wdHlBdG9tKCkgOiBmdWxsVVJMLmZy
YWdtZW50SWRlbnRpZmllcldpdGhMZWFkaW5nTnVtYmVyU2lnbigpLnRvQXRvbVN0cmluZygpOwor
fQorCit2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhhc2goU3RyaW5nVmlldyB2YWx1ZSkKK3sK
KyAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CisgICAgYXV0byBuZXdGcmFnbWVu
dCA9IHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSA/IFN0cmluZ1ZpZXcodmFsdWUpLnN1YnN0cmluZygx
KSA6IFN0cmluZ1ZpZXcodmFsdWUpOworICAgIGlmIChuZXdGcmFnbWVudC5pc0VtcHR5KCkpCisg
ICAgICAgIGZ1bGxVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgZWxzZQorICAg
ICAgICBmdWxsVVJMLnNldEZyYWdtZW50SWRlbnRpZmllcihuZXdGcmFnbWVudCk7CisgICAgc2V0
RnVsbFVSTChmdWxsVVJMKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxEZWNvbXBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYTNhN2I5ZjA0YjIwZTYwMTk3M2JjMTJjYzliZjczNGJjYTg4NTMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9u
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVVJMRGVjb21w
b3NpdGlvbiB7CitwdWJsaWM6CisgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OworCisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcm90b2Nv
bChTdHJpbmdWaWV3KTsKKworICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0OworICAgIHZvaWQg
c2V0VXNlcm5hbWUoU3RyaW5nVmlldyk7CisKKyAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsK
KyAgICB2b2lkIHNldFBhc3N3b3JkKFN0cmluZ1ZpZXcpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoU3RyaW5nVmlldyk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhv
c3RuYW1lKFN0cmluZ1ZpZXcpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBvcnQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFBvcnQoU3RyaW5nVmlldyk7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhdGhuYW1lKFN0cmluZ1Zp
ZXcpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIHZv
aWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGhhc2goKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc2goU3RyaW5nVmlldyk7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5VUkxEZWNvbXBvc2l0aW9uKCkgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHZpcnR1YWwgVVJMIGZ1bGxVUkwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEZ1bGxVUkwoY29uc3QgVVJMJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKaW5kZXggODgyYTU0NTViODdlMzZl
NzVmNDYzNzc0M2JjYTYwZTlkMzc5NmZmYy4uMjM0YTAxZGQyMWYyM2UzYzc1MTFlNDkwM2FkMjY0
YzczMzA4NTgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJh
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oCkBAIC0yNCwx
MyArMjQsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJET01VUkwuaCIKICNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01V
Ukw7CisKIGNsYXNzIFVSTFNlYXJjaFBhcmFtcyA6IHB1YmxpYyBSZWZDb3VudGVkPFVSTFNlYXJj
aFBhcmFtcz4gewogcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNo
UGFyYW1zPj4gY3JlYXRlKFZhcmlhbnQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiwgVmVjdG9yPFdU
Rjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0cmluZz4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMzQwZTg5YTY2MTcyN2Mz
NWMxZjZhMDhlMzMxOGFiMDM5NThiNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBS
ZW5hbWUgdGhpcyB0byBVUkxEZWNvbXBvc2l0aW9uRnVuY3Rpb25zLgotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgVVJMVXRpbHMgewotcHVibGljOgotICAgIFVSTCBocmVmKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHRoaXMpLT5ocmVmKCk7IH0KLSAgICB2b2lkIHNl
dEhyZWYoY29uc3QgU3RyaW5nJiB1cmwpIHsgc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5zZXRIcmVm
KHVybCk7IH0KLQotICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0b0pT
T04oKSBjb25zdDsKLQotICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKLQotICAgIFN0cmluZyBw
cm90b2NvbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJvdG9jb2woU3RyaW5nVmlldyk7Ci0KLSAg
ICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldFVzZXJuYW1lKFN0cmluZ1Zp
ZXcpOwotCi0gICAgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQYXNzd29y
ZChTdHJpbmdWaWV3KTsKLQotICAgIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRI
b3N0KFN0cmluZ1ZpZXcpOwotCi0gICAgU3RyaW5nIGhvc3RuYW1lKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRIb3N0bmFtZShTdHJpbmdWaWV3KTsKLQotICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRQb3J0KFN0cmluZ1ZpZXcpOwotCi0gICAgU3RyaW5nIHBhdGhuYW1lKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRQYXRobmFtZShTdHJpbmdWaWV3KTsKLQotICAgIFN0cmluZyBzZWFy
Y2goKSBjb25zdDsKLSAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0
cmluZyBoYXNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNoKFN0cmluZ1ZpZXcpOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+Ojp0b1N0cmluZygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhyZWYoKS5zdHJpbmcoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gU3RyaW5nIFVSTFV0aWxzPFQ+Ojp0b0pTT04oKSBjb25zdAotewotICAgIHJldHVybiBocmVm
KCkuc3RyaW5nKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6b3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSho
cmVmKCkpLT50b1N0cmluZygpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJM
VXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKLXsKLSAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdChocmVmKCkpKQotICAgICAgICByZXR1cm4gImphdmFzY3JpcHQ6Il9zOwotICAgIHJl
dHVybiBtYWtlU3RyaW5nKGhyZWYoKS5wcm90b2NvbCgpLCAnOicpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbChTdHJpbmdWaWV3IHZhbHVl
KQotewotICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsK
LSAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0
cmluZyBVUkxVdGlsczxUPjo6dXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBocmVmKCku
ZW5jb2RlZFVzZXIoKS50b1N0cmluZygpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lk
IFVSTFV0aWxzPFQ+OjpzZXRVc2VybmFtZShTdHJpbmdWaWV3IHVzZXIpCi17Ci0gICAgVVJMIHVy
bCA9IGhyZWYoKTsKLSAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHVybC5zZXRVc2VyKHVzZXIpOwotICAgIHNldEhyZWYodXJsKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OjpwYXNzd29yZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGhyZWYoKS5lbmNvZGVkUGFzc3dvcmQoKS50b1N0cmluZygpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZChTdHJpbmdW
aWV3IHBhc3N3b3JkKQotewotICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKHVybC5jYW5u
b3RCZUFCYXNlVVJMKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB1cmwuc2V0UGFzc3dvcmQocGFz
c3dvcmQpOwotICAgIHNldEhyZWYodXJsKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3Ry
aW5nIFVSTFV0aWxzPFQ+Ojpob3N0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaHJlZigpLmhvc3RB
bmRQb3J0KCk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBjb3VudEFTQ0lJRGlnaXRzKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGNvdW50ID0gMDsgY291bnQgPCBsZW5ndGg7ICsrY291bnQpIHsKLSAg
ICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2NvdW50XSkpCi0gICAgICAgICAgICByZXR1
cm4gY291bnQ7Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoU3RyaW5nVmlldyB2YWx1ZSkKLXsKLSAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IGhy
ZWYoKTsKLSAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2l6ZV90IHNlcGFyYXRvciA9IHZhbHVlLmZpbmQoJzonKTsKLSAgICBpZiAoIXNlcGFyYXRvcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNlcGFyYXRvciA9PSBub3RGb3VuZCkKLSAgICAg
ICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgdW5zaWdu
ZWQgcG9ydExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRv
ciArIDEpKTsKLSAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBodHRw
Oi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0dXJlLmh0bWwjdXJsLWRlY29tcG9z
aXRpb24taWRsLWF0dHJpYnV0ZXMKLSAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBnb2VzIGFn
YWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAotICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0dGlu
ZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2Ugc29tZXRoaW5nIHRoYXQgaGFzIHNpbmNlIGJl
ZW4gY2hhbmdlZCBhbmQgdGhpcyBydWxlIGFuZCBjb2RlIG1heSBiZSBvYnNvbGV0ZS4KLSAgICAg
ICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydChtYWtlU3RyaW5nKHZhbHVlLnN1YnN0cmluZygwLCBz
ZXBhcmF0b3IgKyAxKSwgJzAnKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IHBvcnROdW1iZXIgPSBwYXJzZVVJbnQxNih2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSwg
cG9ydExlbmd0aCkpOwotICAgICAgICAgICAgaWYgKHBvcnROdW1iZXIgJiYgV1RGOjppc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnROdW1iZXIsIHVybC5wcm90b2NvbCgpKSkKLSAgICAgICAg
ICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2
YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFN0cmluZyBVUkxVdGlsczxUPjo6aG9zdG5hbWUoKSBjb25zdAotewotICAgIHJldHVy
biBocmVmKCkuaG9zdCgpLnRvU3RyaW5nKCk7Ci19Ci0KLWlubGluZSBTdHJpbmdWaWV3IHJlbW92
ZUFsbExlYWRpbmdTb2xpZHVzQ2hhcmFjdGVycyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICB1
bnNpZ25lZCBpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBm
b3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSAn
LycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZy5zdWJzdHJp
bmcoaSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhv
c3RuYW1lKFN0cmluZ1ZpZXcgdmFsdWUpCi17Ci0gICAgYXV0byBob3N0ID0gcmVtb3ZlQWxsTGVh
ZGluZ1NvbGlkdXNDaGFyYWN0ZXJzKHZhbHVlKTsKLSAgICBpZiAoaG9zdC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKHVybC5jYW5u
b3RCZUFCYXNlVVJMKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIXVybC5jYW5TZXRIb3N0
T3JQb3J0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVybC5zZXRIb3N0KGhvc3QpOwotICAg
IHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5n
IFVSTFV0aWxzPFQ+Ojpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoaHJlZigpLnBvcnQoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkudmFsdWUoKSk7Ci0KLSAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBV
UkxVdGlsczxUPjo6c2V0UG9ydChTdHJpbmdWaWV3IHZhbHVlKQotewotICAgIFVSTCB1cmwgPSBo
cmVmKCk7Ci0gICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkgfHwgdXJsLnByb3RvY29sSXMo
ImZpbGUiKSB8fCAhdXJsLmNhblNldEhvc3RPclBvcnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBkaWdpdHNPbmx5ID0gdmFsdWUubGVmdChjb3VudEFTQ0lJRGlnaXRzKHZhbHVlKSk7
Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7Ci0gICAgaWYgKCFkaWdpdHNPbmx5LmlzRW1w
dHkoKSkgewotICAgICAgICBwb3J0ID0gcGFyc2VVSW50MTYoZGlnaXRzT25seSk7Ci0gICAgICAg
IGlmICghcG9ydCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCB1cmwucHJvdG9jb2woKSkpCi0gICAgICAgICAgICBw
b3J0ID0gV1RGOjpudWxsb3B0OwotICAgIH0KLSAgICB1cmwuc2V0UG9ydChwb3J0KTsKLQotICAg
IHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5n
IFVSTFV0aWxzPFQ+OjpwYXRobmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhyZWYoKS5wYXRo
KCkudG9TdHJpbmcoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxVdGlsczxU
Pjo6c2V0UGF0aG5hbWUoU3RyaW5nVmlldyB2YWx1ZSkKLXsKLSAgICBVUkwgdXJsID0gaHJlZigp
OwotICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCgpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHZh
bHVlLnN0YXJ0c1dpdGgoJy8nKSkKLSAgICAgICAgdXJsLnNldFBhdGgodmFsdWUpOwotICAgIGVs
c2UKLSAgICAgICAgdXJsLnNldFBhdGgobWFrZVN0cmluZygnLycsIHZhbHVlKSk7Ci0KLSAgICBz
ZXRIcmVmKHVybC5zdHJpbmcoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBV
UkxVdGlsczxUPjo6c2VhcmNoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaHJlZigpLnF1ZXJ5KCku
aXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IGhyZWYoKS5xdWVyeVdpdGhMZWFkaW5nUXVlc3Rp
b25NYXJrKCkudG9TdHJpbmcoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBVUkxV
dGlsczxUPjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgVVJMIHVybCA9
IGhyZWYoKTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBn
aXZlbiB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBzZXQgdXJsJ3MgcXVlcnkgdG8gbnVsbC4K
LSAgICAgICAgdXJsLnNldFF1ZXJ5KHsgfSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5n
IG5ld1NlYXJjaCA9IHZhbHVlLnN0YXJ0c1dpdGgoJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6
IHZhbHVlOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMg
bm90IGxlYWsgdG8gdGhlIGhhc2guCi0gICAgICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVw
bGFjZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKLSAgICB9Ci0KLSAgICBzZXRIcmVmKHVybC5z
dHJpbmcoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxUPjo6
aGFzaCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoeSBjb252ZXJ0IHRoaXMgc3RyaW5nIHRv
IGFuIGF0b20gaGVyZSBpbnN0ZWFkIG9mIGp1c3QgYSBzdHJpbmc/IEludGVudGlvbmFsbHkgdG8g
c2F2ZSBtZW1vcnk/IEFuIGVycm9yPwotICAgIHJldHVybiBocmVmKCkuZnJhZ21lbnRJZGVudGlm
aWVyKCkuaXNFbXB0eSgpID8gZW1wdHlBdG9tKCkgOiBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVy
V2l0aExlYWRpbmdOdW1iZXJTaWduKCkudG9BdG9tU3RyaW5nKCk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgVVJMVXRpbHM8VD46OnNldEhhc2goU3RyaW5nVmlldyB2YWx1ZSkKLXsK
LSAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGF1dG8gbmV3RnJhZ21lbnQgPSB2YWx1ZS5zdGFy
dHNXaXRoKCcjJykgPyBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmcoMSkgOiBTdHJpbmdWaWV3
KHZhbHVlKTsKLSAgICBpZiAobmV3RnJhZ21lbnQuaXNFbXB0eSgpKQotICAgICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgZWxzZQotICAgICAgICB1cmwuc2V0RnJhZ21l
bnRJZGVudGlmaWVyKG5ld0ZyYWdtZW50KTsKLSAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCBmYWMwNjcxMjk0YTk0YjMwMmMzNDBmOTBkOWNlMGY0MmQ0NGMwYzk1Li4zZTFjMDIyYmQ4ZDI3
ZDc3M2ZlNmYxNGY4MTljNjVkNzM1ODA1M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCi0jaW5jbHVkZSAiRE9NVVJM
LmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRldmlj
ZU1vdGlvbkRhdGEuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25FdmVudC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDFmMmQxNjQ2MGViNjU5MGI1Y2JhZWNiMDdjMTUx
N2NlZmMxNWExYzcuLjVkMTkxNzMxMmM4NDllZjVhNWZlZmUxOTFkMzA1ZTA0NDI4NzRiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNs
dWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRE9NUmVjdExpc3QuaCIKICNpbmNsdWRlICJET01T
dHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>