<?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>212431</bug_id>
          
          <creation_ts>2020-05-27 13:52:55 -0700</creation_ts>
          <short_desc>Extended Color: Move ColorMatrix to its own file</short_desc>
          <delta_ts>2020-05-27 14:41:15 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</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>1656562</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-27 13:52:55 -0700</bug_when>
    <thetext>Extended Color: Move ColorMatrix to its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656563</commentid>
    <comment_count>1</comment_count>
      <attachid>400376</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-27 13:54:11 -0700</bug_when>
    <thetext>Created attachment 400376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656594</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-27 14:40:14 -0700</bug_when>
    <thetext>Committed r262218: &lt;https://trac.webkit.org/changeset/262218&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400376.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656595</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-27 14:41:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63690995&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400376</attachid>
            <date>2020-05-27 13:54:11 -0700</date>
            <delta_ts>2020-05-27 14:40:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212431-20200527135410.patch</filename>
            <type>text/plain</type>
            <size>57018</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjIxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogTW92ZSBD
b2xvck1hdHJpeCB0byBpdHMgb3duIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlIENvbG9yTWF0cml4IHRvIGl0cyBvd24gZmlsZXMgZnJv
bSBDb2xvclV0aWxpdGllcy5oL2NwcAorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5j
cHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisKIDIwMjAtMDUtMjcgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsaXBib2FyZCBB
UEldIFN1cHBvcnQgcmVhZGluZyAiaW1hZ2UvcG5nIiBvbiBDbGlwYm9hcmRJdGVtCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2MjE2NikKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwODAsNiArMTA4MCw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9ySGFzaC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI2MjE2NikKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODcxLDYgKzE4NzEsNyBAQCBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xF
V2ViS2l0QnJpZGdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjE2NikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjMzOCw2ICsyMzM4LDcgQEAKIAkJN0M5QUNBQzAxRjNDRjFBRjAwRjNBQTA5IC8qIEpTQ3J5cHRv
UnNhSGFzaGVkS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzlBQ0FCNTFGM0NEQzAyMDBGM0FBMDkgLyogSlNDcnlwdG9Sc2FIYXNo
ZWRLZXlBbGdvcml0aG0uaCAqLzsgfTsKIAkJN0M5QUNBQzIxRjNDRjFBRjAwRjNBQTA5IC8qIEpT
Q3J5cHRvUnNhS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzlBQ0FCMzFGM0NEQzAxMDBGM0FBMDkgLyogSlNDcnlwdG9Sc2FLZXlB
bGdvcml0aG0uaCAqLzsgfTsKIAkJN0M5REJGRUUxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzlEQkZFQzFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1l
bnQuaCAqLzsgfTsKKwkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8qIENvbG9yTWF0cml4Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0FDNkFFODI0
N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0I1Q0E0MDFFNTI1QzczMDBGQUVGMTMgLyogTWVk
aWFRdWVyeUV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDQjVDQTNFMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
QkJCQ0M3MUY1NjA1ODEwMDVFRkFBQyAvKiBET01NYXRyaXgyREluaXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJCQ0M2MUY1NjA1NjgwMDVFRkFB
QyAvKiBET01NYXRyaXgyREluaXQuaCAqLzsgfTsKIAkJN0NCQkJDQ0ExRjU2MTdDNTAwNUVGQUFD
IC8qIEpTRE9NTWF0cml4MkRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0JCQkNDOTFGNTYxN0MwMDA1RUZBQUMgLyogSlNET01NYXRyaXgyRElu
aXQuaCAqLzsgfTsKQEAgLTEwMTYxLDYgKzEwMTYyLDggQEAKIAkJN0M5REJGRUExQTlDNDg5RjAw
MEQ2QjI1IC8qIEhUTUxBdHRhY2htZW50RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUIxQTlDNDlC
MTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUMxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
SFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
QUM2QUU2MjQ3RjA4MUYwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2xvck1hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQUM2
QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xv
ck1hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0I1Q0EzRDFFNTI1QzZD
MDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0I1Q0EzRTFFNTI1QzZDMDBGQUVGMTMgLyogTWVkaWFRdWVyeUV4
cHJlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV4
cHJlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQTVCQTYxRjBCNEJE
RTAwMzRENzQ1IC8qIEpTRE9NQ29udmVydFdlYkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NQ29udmVydFdlYkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDE1
LDYgKzI1NDE4LDggQEAKIAkJCQlCMjc1MzUzODBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3IuY3Bw
ICovLAogCQkJCUIyNzUzNTM5MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oICovLAogCQkJCTMx
MDNCN0RFMURCMDE1NTYwMDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKKwkJCQk3Q0FDNkFFNjI0
N0YwODFGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguY3BwICovLAorCQkJCTdDQUM2QUU4MjQ3RjA4
MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovLAogCQkJCTkzODJERjU3MTBBOEQ1QzkwMDky
NTY1MiAvKiBDb2xvclNwYWNlLmggKi8sCiAJCQkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8q
IENvbG9yVXRpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkU2Qzc2QzFGQkZCN0E2MDAyNUMwNTMgLyog
Q29sb3JVdGlsaXRpZXMuaCAqLywKQEAgLTI5OTQwLDYgKzI5OTQ1LDcgQEAKIAkJCQlGNTVCM0RC
NDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBRjY2QjIzQkZDMzlFMDA0MDMwREEgLyogQ29sb3JVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5J
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMyOTgwLDYgKzMyOTg2LDcgQEAKIAkJCQk5MzMwOUVB
MzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCURG
MTlFMkFDMjQ3NzJCQzEwMDdCREFDQiAvKiBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM2MkU4QzEyMENFRjlDQjAwMjQ1ODg2IC8qIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzMUM4OEUy
NDdBRDU5NTAwNUJGMzE5IC8qIFNpbXBsZUNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5
NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTFFMDY3RUUxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTg1RDZFMDQxQTFBNzkyRTAwRkE0RjEyIC8qIFNpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1NDIsNyArMzM1
NDksNiBAQAogCQkJCUNEMzM2RjY0MTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QjVBNDMxODBE
MTQ5QTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4g
SGVhZGVycyAqLywKLQkJCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEU4MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUY0MThDRjExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2
RjlBODM5MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRy
aXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yTWF0cml4LmNwcAkocmV2aXNpb24gMjYyMTY2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6MjYyMTY2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q29sb3JVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQ29sb3JDb21wb25lbnRzOjpDb2xvckNvbXBvbmVudHMoY29uc3Qg
RmxvYXRDb21wb25lbnRzJiBmbG9hdENvbXBvbmVudHMpCit7CisgICAgY29tcG9uZW50c1swXSA9
IGNsYW1wZWRDb2xvckNvbXBvbmVudChmbG9hdENvbXBvbmVudHMuY29tcG9uZW50c1swXSk7Cisg
ICAgY29tcG9uZW50c1sxXSA9IGNsYW1wZWRDb2xvckNvbXBvbmVudChmbG9hdENvbXBvbmVudHMu
Y29tcG9uZW50c1sxXSk7CisgICAgY29tcG9uZW50c1syXSA9IGNsYW1wZWRDb2xvckNvbXBvbmVu
dChmbG9hdENvbXBvbmVudHMuY29tcG9uZW50c1syXSk7CisgICAgY29tcG9uZW50c1szXSA9IGNs
YW1wZWRDb2xvckNvbXBvbmVudChmbG9hdENvbXBvbmVudHMuY29tcG9uZW50c1szXSk7Cit9CisK
K2Jvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBGbG9hdENvbXBvbmVudHMmIGEsIGNvbnN0
IEZsb2F0Q29tcG9uZW50cyYgYikKK3sKKyAgICByZXR1cm4gV1RGOjphcmVFc3NlbnRpYWxseUVx
dWFsKGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKQorICAgICAgICAmJiBXVEY6OmFy
ZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzFdLCBiLmNvbXBvbmVudHNbMV0pCisgICAg
ICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhLmNvbXBvbmVudHNbMl0sIGIuY29tcG9u
ZW50c1syXSkKKyAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEuY29tcG9uZW50
c1szXSwgYi5jb21wb25lbnRzWzNdKTsKK30KKworLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBz
UkdCIDwtPiBsaW5lYXJSR0IgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL1NSR0IpLgorZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9h
dCBjKQoreworICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAgcmV0dXJuIDEyLjkyZiAq
IGM7CisKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4wNTVmICogc3RkOjpwb3coYywgMS4w
ZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKK30KKworZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNv
bXBvbmVudChmbG9hdCBjKQoreworICAgIGlmIChjIDw9IDAuMDQwNDVmKQorICAgICAgICByZXR1
cm4gYyAvIDEyLjkyZjsKKworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyAr
IDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKK30KKworRmxvYXRDb21wb25lbnRzIHJn
YlRvTGluZWFyQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIFJHQkNvbG9yKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29sb3Iu
Y29tcG9uZW50c1swXSksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdCQ29s
b3IuY29tcG9uZW50c1sxXSksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoUkdC
Q29sb3IuY29tcG9uZW50c1syXSksCisgICAgICAgIFJHQkNvbG9yLmNvbXBvbmVudHNbM10KKyAg
ICB9OworfQorCitGbG9hdENvbXBvbmVudHMgbGluZWFyVG9SR0JDb21wb25lbnRzKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgbGluZWFyUkdCKQoreworICAgIHJldHVybiB7CisgICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdCLmNvbXBvbmVudHNbMF0pLAorICAgICAgICBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVhclJHQi5jb21wb25lbnRzWzFdKSwKKyAgICAg
ICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29tcG9uZW50c1syXSksCisg
ICAgICAgIGxpbmVhclJHQi5jb21wb25lbnRzWzNdCisgICAgfTsKK30KKworc3RhdGljIEZsb2F0
Q29tcG9uZW50cyB4eXpUb0xpbmVhclNSR0IoY29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpDb21w
b25lbnRzKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IKKyAg
ICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFla
X01hdHJpeC5odG1sCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAgICAgICAzLjI0
MDQ1NDJmLCAtMS41MzcxMzg1ZiwgLTAuNDk4NTMxNGYsIDAuMGYsIDAuMGYsCisgICAgICAgIC0w
Ljk2OTI2NjBmLCAgMS44NzYwMTA4ZiwgIDAuMDQxNTU2MGYsIDAuMGYsIDAuMGYsCisgICAgICAg
ICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5ZiwgIDEuMDU3MjI1MmYsIDAuMGYsIDAuMGYsCisgICAg
ICAgICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgIDEuMGYsIDAuMGYsCisg
ICAgfTsKKyAgICBDb2xvck1hdHJpeCB4eXpUb0xpbmVhclNSR0JNYXRyaXgodmFsdWVzKTsKKyAg
ICByZXR1cm4geHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRz
KFhZWkNvbXBvbmVudHMpOworfQorCitzdGF0aWMgRmxvYXRDb21wb25lbnRzIGxpbmVhclNSR0JU
b1hZWihjb25zdCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCit7CisgICAgLy8gaHR0
cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgorICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2Vs
aW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKKyAgICBjb25z
dCBmbG9hdCB2YWx1ZXNbXSA9IHsKKyAgICAgICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAw
LjE4MDQzNzVmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjIxMjY3MjlmLCAgMC43MTUxNTIyZiwg
IDAuMDcyMTc1MGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMDE5MzMzOWYsICAwLjExOTE5MjBm
LCAgMC45NTAzMDQxZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAg
ICAgICAwLjBmLCAgICAgICAxLjBmLCAwLjBmLAorICAgIH07CisgICAgQ29sb3JNYXRyaXggbGlu
ZWFyU1JHQlRvWFlaTWF0cml4KHZhbHVlcyk7CisgICAgcmV0dXJuIGxpbmVhclNSR0JUb1hZWk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30KKworc3Rh
dGljIEZsb2F0Q29tcG9uZW50cyBYWVpUb0xpbmVhclAzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYg
WFlaQ29tcG9uZW50cykKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNv
bG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKKyAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsK
KyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40
MDI3MTA3ODQ0NTA3MTY4ZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgLTAuODI5NDg4OTY5NTYxNTc0
N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAg
MC45NTY4ODQ1MjQwMDc2ODcyZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgIDAuMGYsICAgICAgICAg
ICAgICAgICAwLjBmLCAgICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMS4wZiwg
MC4wZiwKKyAgICB9OworICAgIENvbG9yTWF0cml4IHh5elRvTGluZWFyU1JHQk1hdHJpeCh2YWx1
ZXMpOworICAgIHJldHVybiB4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNv
bXBvbmVudHMoWFlaQ29tcG9uZW50cyk7Cit9CisKK3N0YXRpYyBGbG9hdENvbXBvbmVudHMgbGlu
ZWFyUDNUb1hZWihjb25zdCBGbG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCit7CisgICAg
Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1j
b2RlCisgICAgY29uc3QgZmxvYXQgdmFsdWVzW10gPSB7CisgICAgICAgIDAuNDg2NTcwOTQ4NjQ4
MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4w
NzkyODY5MTQwOTM3NDVmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAgICAgICAgICAgICAg
ICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYsIDAuMGYsIDAuMGYsCisg
ICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMGYsICAg
ICAgICAgICAgICAgMS4wZiwgMC4wZiwKKyAgICB9OworICAgIENvbG9yTWF0cml4IGxpbmVhclAz
VG9YWVpNYXRyaXgodmFsdWVzKTsKKyAgICByZXR1cm4gbGluZWFyUDNUb1hZWk1hdHJpeC50cmFu
c2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKK30KKworRmxvYXRDb21wb25l
bnRzIHAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgcDMpCit7CisgICAgYXV0byBsaW5l
YXJQMyA9IHJnYlRvTGluZWFyQ29tcG9uZW50cyhwMyk7CisgICAgYXV0byB4eXogPSBsaW5lYXJQ
M1RvWFlaKGxpbmVhclAzKTsKKyAgICBhdXRvIGxpbmVhclNSR0IgPSB4eXpUb0xpbmVhclNSR0Io
eHl6KTsKKyAgICByZXR1cm4gbGluZWFyVG9SR0JDb21wb25lbnRzKGxpbmVhclNSR0IpOworfQor
CitGbG9hdENvbXBvbmVudHMgc1JHQlRvUDMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCKQor
eworICAgIGF1dG8gbGluZWFyU1JHQiA9IHJnYlRvTGluZWFyQ29tcG9uZW50cyhzUkdCKTsKKyAg
ICBhdXRvIHh5eiA9IGxpbmVhclNSR0JUb1hZWihsaW5lYXJTUkdCKTsKKyAgICBhdXRvIGxpbmVh
clAzID0gWFlaVG9MaW5lYXJQMyh4eXopOworICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVu
dHMobGluZWFyUDMpOworfQorCitmbG9hdCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21wb25lbnRz
JiBzUkdCQ29tcG9udGVudHMpCit7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9u
dGVudHM7CisKKyAgICBmbG9hdCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7CisgICAgZmxv
YXQgbWluID0gc3RkOjptaW4oeyByLCBnLCBiIH0pOworCisgICAgcmV0dXJuIDAuNWYgKiAobWF4
ICsgbWluKTsKK30KKworLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29t
cG9uZW50IGJ1dCBmb3Igc29tZSByZWFzb24KKy8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4
L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCisvLyBkb2Vzbid0IHVz
ZSB0aGUgc3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCitz
dGF0aWMgZmxvYXQgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UoZmxvYXQg
YykKK3sKKyAgICBpZiAoYyA8PSAwLjAzOTI4ZikKKyAgICAgICAgcmV0dXJuIGMgLyAxMi45MmY7
CisKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4w
NTVmLCAyLjRmKSwgMCwgMSk7Cit9CisKK2Zsb2F0IGx1bWluYW5jZShjb25zdCBGbG9hdENvbXBv
bmVudHMmIHNSR0JDb21wb25lbnRzKQoreworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVm
CisgICAgcmV0dXJuIDAuMjEyNmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWlu
YW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzBdKQorICAgICAgICArIDAuNzE1MmYgKiBz
UkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21w
b25lbnRzWzFdKQorICAgICAgICArIDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVu
dEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50cy5jb21wb25lbnRzWzJdKTsKK30KKworZmxvYXQg
Y29udHJhc3RSYXRpbyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGNvbXBvbmVudHNBLCBjb25zdCBG
bG9hdENvbXBvbmVudHMmIGNvbXBvbmVudHNCKQoreworICAgIC8vIFVzZXMgdGhlIFdDQUcgMi4w
IGRlZmluaXRpb24gb2YgY29udHJhc3QgcmF0aW8uCisgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL1dDQUcyMC8jY29udHJhc3QtcmF0aW9kZWYKKyAgICBmbG9hdCBsaWdodGVyTHVtaW5hbmNl
ID0gbHVtaW5hbmNlKGNvbXBvbmVudHNBKTsKKyAgICBmbG9hdCBkYXJrZXJMdW1pbmFuY2UgPSBs
dW1pbmFuY2UoY29tcG9uZW50c0IpOworCisgICAgaWYgKGxpZ2h0ZXJMdW1pbmFuY2UgPCBkYXJr
ZXJMdW1pbmFuY2UpCisgICAgICAgIHN0ZDo6c3dhcChsaWdodGVyTHVtaW5hbmNlLCBkYXJrZXJM
dW1pbmFuY2UpOworCisgICAgcmV0dXJuIChsaWdodGVyTHVtaW5hbmNlICsgMC4wNSkgLyAoZGFy
a2VyTHVtaW5hbmNlICsgMC4wNSk7Cit9CisKK0Zsb2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29u
c3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29tcG9udGVudHMpCit7CisgICAgLy8gaHR0cDovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9IU0xfY29sb3Jfc3BhY2UuCisgICAgYXV0byBbciwgZywgYiwg
YWxwaGFdID0gc1JHQkNvbXBvbnRlbnRzOworCisgICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyBy
LCBnLCBiIH0pOworICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKKyAgICBm
bG9hdCBjaHJvbWEgPSBtYXggLSBtaW47CisKKyAgICBmbG9hdCBodWU7CisgICAgaWYgKCFjaHJv
bWEpCisgICAgICAgIGh1ZSA9IDA7CisgICAgZWxzZSBpZiAobWF4ID09IHIpCisgICAgICAgIGh1
ZSA9ICg2MC4wZiAqICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAuMGY7CisgICAgZWxzZSBpZiAo
bWF4ID09IGcpCisgICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoYiAtIHIpIC8gY2hyb21hKSkgKyAx
MjAuMGY7CisgICAgZWxzZQorICAgICAgICBodWUgPSAoNjAuMGYgKiAoKHIgLSBnKSAvIGNocm9t
YSkpICsgMjQwLjBmOworCisgICAgaWYgKGh1ZSA+PSAzNjAuMGYpCisgICAgICAgIGh1ZSAtPSAz
NjAuMGY7CisKKyAgICBodWUgLz0gMzYwLjBmOworCisgICAgZmxvYXQgbGlnaHRuZXNzID0gMC41
ZiAqIChtYXggKyBtaW4pOworICAgIGZsb2F0IHNhdHVyYXRpb247CisgICAgaWYgKCFjaHJvbWEp
CisgICAgICAgIHNhdHVyYXRpb24gPSAwOworICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAwLjVm
KQorICAgICAgICBzYXR1cmF0aW9uID0gKGNocm9tYSAvIChtYXggKyBtaW4pKTsKKyAgICBlbHNl
CisgICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKDIuMGYgLSAobWF4ICsgbWluKSkpOwor
CisgICAgcmV0dXJuIHsKKyAgICAgICAgaHVlLAorICAgICAgICBzYXR1cmF0aW9uLAorICAgICAg
ICBsaWdodG5lc3MsCisgICAgICAgIGFscGhhCisgICAgfTsKK30KKworLy8gSHVlIGlzIGluIHRo
ZSByYW5nZSAwLTYsIG90aGVyIGFyZ3MgaW4gMC0xLgorc3RhdGljIGZsb2F0IGNhbGNIdWUoZmxv
YXQgdGVtcDEsIGZsb2F0IHRlbXAyLCBmbG9hdCBodWVWYWwpCit7CisgICAgaWYgKGh1ZVZhbCA8
IDAuMGYpCisgICAgICAgIGh1ZVZhbCArPSA2LjBmOworICAgIGVsc2UgaWYgKGh1ZVZhbCA+PSA2
LjBmKQorICAgICAgICBodWVWYWwgLT0gNi4wZjsKKyAgICBpZiAoaHVlVmFsIDwgMS4wZikKKyAg
ICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogaHVlVmFsOworICAgIGlmICho
dWVWYWwgPCAzLjBmKQorICAgICAgICByZXR1cm4gdGVtcDI7CisgICAgaWYgKGh1ZVZhbCA8IDQu
MGYpCisgICAgICAgIHJldHVybiB0ZW1wMSArICh0ZW1wMiAtIHRlbXAxKSAqICg0LjBmIC0gaHVl
VmFsKTsKKyAgICByZXR1cm4gdGVtcDE7Cit9CisKKy8vIEV4cGxhbmF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCisvLyBzcGVjaWZp
Y2F0aW9uIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNsLXRvLXJn
YiB3aXRoCisvLyBmdXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZQorRmxvYXRDb21wb25lbnRzIGhzbFRvU1JH
Qihjb25zdCBGbG9hdENvbXBvbmVudHMmIGhzbENvbG9yKQoreworICAgIGZsb2F0IGh1ZSA9IGhz
bENvbG9yLmNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgc2F0dXJhdGlvbiA9IGhzbENvbG9yLmNv
bXBvbmVudHNbMV07CisgICAgZmxvYXQgbGlnaHRuZXNzID0gaHNsQ29sb3IuY29tcG9uZW50c1sy
XTsKKworICAgIC8vIENvbnZlcnQgYmFjayB0byBSR0IuCisgICAgaWYgKCFzYXR1cmF0aW9uKSB7
CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBsaWdodG5lc3MsCisgICAgICAgICAgICBs
aWdodG5lc3MsCisgICAgICAgICAgICBsaWdodG5lc3MsCisgICAgICAgICAgICBoc2xDb2xvci5j
b21wb25lbnRzWzNdCisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIGZsb2F0IHRlbXAyID0g
bGlnaHRuZXNzIDw9IDAuNWYgPyBsaWdodG5lc3MgKiAoMS4wZiArIHNhdHVyYXRpb24pIDogbGln
aHRuZXNzICsgc2F0dXJhdGlvbiAtIGxpZ2h0bmVzcyAqIHNhdHVyYXRpb247CisgICAgZmxvYXQg
dGVtcDEgPSAyLjBmICogbGlnaHRuZXNzIC0gdGVtcDI7CisgICAgCisgICAgaHVlICo9IDYuMGY7
IC8vIGNhbGNIdWUoKSB3YW50cyBodWUgaW4gdGhlIDAtNiByYW5nZS4KKyAgICByZXR1cm4gewor
ICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCisgICAgICAgIGNhbGNI
dWUodGVtcDEsIHRlbXAyLCBodWUpLAorICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVl
IC0gMi4wZiksCisgICAgICAgIGhzbENvbG9yLmNvbXBvbmVudHNbM10KKyAgICB9OworfQorCitG
bG9hdENvbXBvbmVudHMgcHJlbXVsdGlwbGllZChjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JD
b21wb25lbnRzKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc1JHQkNvbXBvbmVudHM7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgciAqIGEsCisgICAgICAgIGcgKiBhLAorICAgICAgICBiICog
YSwKKyAgICAgICAgYQorICAgIH07Cit9CisKK0NvbG9yTWF0cml4OjpDb2xvck1hdHJpeCgpCit7
CisgICAgbWFrZUlkZW50aXR5KCk7Cit9CisKK0NvbG9yTWF0cml4OjpDb2xvck1hdHJpeChjb25z
dCBmbG9hdCB2YWx1ZXNbMjBdKQoreworICAgIG1fbWF0cml4WzBdWzBdID0gdmFsdWVzWzBdOwor
ICAgIG1fbWF0cml4WzBdWzFdID0gdmFsdWVzWzFdOworICAgIG1fbWF0cml4WzBdWzJdID0gdmFs
dWVzWzJdOworICAgIG1fbWF0cml4WzBdWzNdID0gdmFsdWVzWzNdOworICAgIG1fbWF0cml4WzBd
WzRdID0gdmFsdWVzWzRdOworCisgICAgbV9tYXRyaXhbMV1bMF0gPSB2YWx1ZXNbNV07CisgICAg
bV9tYXRyaXhbMV1bMV0gPSB2YWx1ZXNbNl07CisgICAgbV9tYXRyaXhbMV1bMl0gPSB2YWx1ZXNb
N107CisgICAgbV9tYXRyaXhbMV1bM10gPSB2YWx1ZXNbOF07CisgICAgbV9tYXRyaXhbMV1bNF0g
PSB2YWx1ZXNbOV07CisKKyAgICBtX21hdHJpeFsyXVswXSA9IHZhbHVlc1sxMF07CisgICAgbV9t
YXRyaXhbMl1bMV0gPSB2YWx1ZXNbMTFdOworICAgIG1fbWF0cml4WzJdWzJdID0gdmFsdWVzWzEy
XTsKKyAgICBtX21hdHJpeFsyXVszXSA9IHZhbHVlc1sxM107CisgICAgbV9tYXRyaXhbMl1bNF0g
PSB2YWx1ZXNbMTRdOworCisgICAgbV9tYXRyaXhbM11bMF0gPSB2YWx1ZXNbMTVdOworICAgIG1f
bWF0cml4WzNdWzFdID0gdmFsdWVzWzE2XTsKKyAgICBtX21hdHJpeFszXVsyXSA9IHZhbHVlc1sx
N107CisgICAgbV9tYXRyaXhbM11bM10gPSB2YWx1ZXNbMThdOworICAgIG1fbWF0cml4WzNdWzRd
ID0gdmFsdWVzWzE5XTsKK30KKwordm9pZCBDb2xvck1hdHJpeDo6bWFrZUlkZW50aXR5KCkKK3sK
KyAgICBtZW1zZXQobV9tYXRyaXgsIDAsIHNpemVvZihtX21hdHJpeCkpOworICAgIG1fbWF0cml4
WzBdWzBdID0gMTsKKyAgICBtX21hdHJpeFsxXVsxXSA9IDE7CisgICAgbV9tYXRyaXhbMl1bMl0g
PSAxOworICAgIG1fbWF0cml4WzNdWzNdID0gMTsKK30KKworQ29sb3JNYXRyaXggQ29sb3JNYXRy
aXg6OmdyYXlzY2FsZU1hdHJpeChmbG9hdCBhbW91bnQpCit7CisgICAgQ29sb3JNYXRyaXggbWF0
cml4OworCisgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBhbW91bnQsIDAu
MCwgMS4wKTsKKworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0
ZXItZWZmZWN0cy0xLyNncmF5c2NhbGVFcXVpdmFsZW50CisgICAgbWF0cml4Lm1fbWF0cml4WzBd
WzBdID0gMC4yMTI2ZiArIDAuNzg3NGYgKiBvbmVNaW51c0Ftb3VudDsKKyAgICBtYXRyaXgubV9t
YXRyaXhbMF1bMV0gPSAwLjcxNTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50OworICAgIG1h
dHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyMmYgLSAwLjA3MjJmICogb25lTWludXNBbW91bnQ7
CisKKyAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxMjZmIC0gMC4yMTI2ZiAqIG9uZU1p
bnVzQW1vdW50OworICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1MmYgKyAwLjI4NDhm
ICogb25lTWludXNBbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzIyZiAt
IDAuMDcyMmYgKiBvbmVNaW51c0Ftb3VudDsKKworICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9
IDAuMjEyNmYgLSAwLjIxMjZmICogb25lTWludXNBbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4
WzJdWzFdID0gMC43MTUyZiAtIDAuNzE1MmYgKiBvbmVNaW51c0Ftb3VudDsKKyAgICBtYXRyaXgu
bV9tYXRyaXhbMl1bMl0gPSAwLjA3MjJmICsgMC45Mjc4ZiAqIG9uZU1pbnVzQW1vdW50OworICAg
IAorICAgIHJldHVybiBtYXRyaXg7Cit9CisKK0NvbG9yTWF0cml4IENvbG9yTWF0cml4OjpzYXR1
cmF0aW9uTWF0cml4KGZsb2F0IGFtb3VudCkKK3sKKyAgICBDb2xvck1hdHJpeCBtYXRyaXg7CisK
KyAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMt
MS8jZmVDb2xvck1hdHJpeEVsZW1lbnQKKyAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjIx
M2YgKyAwLjc4N2YgKiBhbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4WzBdWzFdID0gMC43MTVm
IC0gMC43MTVmICogYW1vdW50OworICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMDcyZiAt
IDAuMDcyZiAqIGFtb3VudDsKKworICAgIG1hdHJpeC5tX21hdHJpeFsxXVswXSA9IDAuMjEzZiAt
IDAuMjEzZiAqIGFtb3VudDsKKyAgICBtYXRyaXgubV9tYXRyaXhbMV1bMV0gPSAwLjcxNWYgKyAw
LjI4NWYgKiBhbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4WzFdWzJdID0gMC4wNzJmIC0gMC4w
NzJmICogYW1vdW50OworCisgICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTNmIC0gMC4y
MTNmICogYW1vdW50OworICAgIG1hdHJpeC5tX21hdHJpeFsyXVsxXSA9IDAuNzE1ZiAtIDAuNzE1
ZiAqIGFtb3VudDsKKyAgICBtYXRyaXgubV9tYXRyaXhbMl1bMl0gPSAwLjA3MmYgKyAwLjkyOGYg
KiBhbW91bnQ7CisKKyAgICByZXR1cm4gbWF0cml4OworfQorCitDb2xvck1hdHJpeCBDb2xvck1h
dHJpeDo6aHVlUm90YXRlTWF0cml4KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKQoreworICAgIGZsb2F0
IGNvc0h1ZSA9IGNvcyhkZWcycmFkKGFuZ2xlSW5EZWdyZWVzKSk7CisgICAgZmxvYXQgc2luSHVl
ID0gc2luKGRlZzJyYWQoYW5nbGVJbkRlZ3JlZXMpKTsKKworICAgIENvbG9yTWF0cml4IG1hdHJp
eDsKKworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZm
ZWN0cy0xLyNmZUNvbG9yTWF0cml4RWxlbWVudAorICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9
IDAuMjEzZiArIGNvc0h1ZSAqIDAuNzg3ZiAtIHNpbkh1ZSAqIDAuMjEzZjsKKyAgICBtYXRyaXgu
bV9tYXRyaXhbMF1bMV0gPSAwLjcxNWYgLSBjb3NIdWUgKiAwLjcxNWYgLSBzaW5IdWUgKiAwLjcx
NWY7CisgICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4wNzJmIC0gY29zSHVlICogMC4wNzJm
ICsgc2luSHVlICogMC45MjhmOworCisgICAgbWF0cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTNm
IC0gY29zSHVlICogMC4yMTNmICsgc2luSHVlICogMC4xNDNmOworICAgIG1hdHJpeC5tX21hdHJp
eFsxXVsxXSA9IDAuNzE1ZiArIGNvc0h1ZSAqIDAuMjg1ZiArIHNpbkh1ZSAqIDAuMTQwZjsKKyAg
ICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgLSBzaW5I
dWUgKiAwLjI4M2Y7CisKKyAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxM2YgLSBjb3NI
dWUgKiAwLjIxM2YgLSBzaW5IdWUgKiAwLjc4N2Y7CisgICAgbWF0cml4Lm1fbWF0cml4WzJdWzFd
ID0gMC43MTVmIC0gY29zSHVlICogMC43MTVmICsgc2luSHVlICogMC43MTVmOworICAgIG1hdHJp
eC5tX21hdHJpeFsyXVsyXSA9IDAuMDcyZiArIGNvc0h1ZSAqIDAuOTI4ZiArIHNpbkh1ZSAqIDAu
MDcyZjsKKworICAgIHJldHVybiBtYXRyaXg7Cit9CisKK0NvbG9yTWF0cml4IENvbG9yTWF0cml4
OjpzZXBpYU1hdHJpeChmbG9hdCBhbW91bnQpCit7CisgICAgQ29sb3JNYXRyaXggbWF0cml4Owor
CisgICAgZmxvYXQgb25lTWludXNBbW91bnQgPSBjbGFtcFRvKDEgLSBhbW91bnQsIDAuMCwgMS4w
KTsKKworICAgIC8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZm
ZWN0cy0xLyNzZXBpYUVxdWl2YWxlbnQKKyAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjM5
M2YgKyAwLjYwN2YgKiBvbmVNaW51c0Ftb3VudDsKKyAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0g
PSAwLjc2OWYgLSAwLjc2OWYgKiBvbmVNaW51c0Ftb3VudDsKKyAgICBtYXRyaXgubV9tYXRyaXhb
MF1bMl0gPSAwLjE4OWYgLSAwLjE4OWYgKiBvbmVNaW51c0Ftb3VudDsKKworICAgIG1hdHJpeC5t
X21hdHJpeFsxXVswXSA9IDAuMzQ5ZiAtIDAuMzQ5ZiAqIG9uZU1pbnVzQW1vdW50OworICAgIG1h
dHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNjg2ZiArIDAuMzE0ZiAqIG9uZU1pbnVzQW1vdW50Owor
ICAgIG1hdHJpeC5tX21hdHJpeFsxXVsyXSA9IDAuMTY4ZiAtIDAuMTY4ZiAqIG9uZU1pbnVzQW1v
dW50OworCisgICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yNzJmIC0gMC4yNzJmICogb25l
TWludXNBbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4WzJdWzFdID0gMC41MzRmIC0gMC41MzRm
ICogb25lTWludXNBbW91bnQ7CisgICAgbWF0cml4Lm1fbWF0cml4WzJdWzJdID0gMC4xMzFmICsg
MC44NjlmICogb25lTWludXNBbW91bnQ7CisKKyAgICByZXR1cm4gbWF0cml4OworfQorCit2b2lk
IENvbG9yTWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoRmxvYXRDb21wb25lbnRzJiBj
b2xvckNvbXBvbmVudHMpIGNvbnN0Cit7CisgICAgZmxvYXQgcmVkID0gY29sb3JDb21wb25lbnRz
LmNvbXBvbmVudHNbMF07CisgICAgZmxvYXQgZ3JlZW4gPSBjb2xvckNvbXBvbmVudHMuY29tcG9u
ZW50c1sxXTsKKyAgICBmbG9hdCBibHVlID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl07
CisgICAgZmxvYXQgYWxwaGEgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXTsKKworICAg
IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdID0gbV9tYXRyaXhbMF1bMF0gKiByZWQgKyBt
X21hdHJpeFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMF1bMl0gKiBibHVlICsgbV9tYXRyaXhb
MF1bM10gKiBhbHBoYSArIG1fbWF0cml4WzBdWzRdOworICAgIGNvbG9yQ29tcG9uZW50cy5jb21w
b25lbnRzWzFdID0gbV9tYXRyaXhbMV1bMF0gKiByZWQgKyBtX21hdHJpeFsxXVsxXSAqIGdyZWVu
ICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRyaXhbMV1bM10gKiBhbHBoYSArIG1fbWF0
cml4WzFdWzRdOworICAgIGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdID0gbV9tYXRyaXhb
Ml1bMF0gKiByZWQgKyBtX21hdHJpeFsyXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMl1bMl0gKiBi
bHVlICsgbV9tYXRyaXhbMl1bM10gKiBhbHBoYSArIG1fbWF0cml4WzJdWzRdOworICAgIGNvbG9y
Q29tcG9uZW50cy5jb21wb25lbnRzWzNdID0gbV9tYXRyaXhbM11bMF0gKiByZWQgKyBtX21hdHJp
eFszXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbM11bMl0gKiBibHVlICsgbV9tYXRyaXhbM11bM10g
KiBhbHBoYSArIG1fbWF0cml4WzNdWzRdOworfQorCitGbG9hdENvbXBvbmVudHMgQ29sb3JNYXRy
aXg6OnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgY29s
b3JDb21wb25lbnRzKSBjb25zdAoreworICAgIGZsb2F0IHJlZCA9IGNvbG9yQ29tcG9uZW50cy5j
b21wb25lbnRzWzBdOworICAgIGZsb2F0IGdyZWVuID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVu
dHNbMV07CisgICAgZmxvYXQgYmx1ZSA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdOwor
ICAgIGZsb2F0IGFscGhhID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbM107CisKKyAgICBy
ZXR1cm4geworICAgICAgICBtX21hdHJpeFswXVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFdICog
Z3JlZW4gKyBtX21hdHJpeFswXVsyXSAqIGJsdWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhhICsg
bV9tYXRyaXhbMF1bNF0sCisgICAgICAgIG1fbWF0cml4WzFdWzBdICogcmVkICsgbV9tYXRyaXhb
MV1bMV0gKiBncmVlbiArIG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1fbWF0cml4WzFdWzNdICog
YWxwaGEgKyBtX21hdHJpeFsxXVs0XSwKKyAgICAgICAgbV9tYXRyaXhbMl1bMF0gKiByZWQgKyBt
X21hdHJpeFsyXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhbMl1bMl0gKiBibHVlICsgbV9tYXRyaXhb
Ml1bM10gKiBhbHBoYSArIG1fbWF0cml4WzJdWzRdLAorICAgICAgICBtX21hdHJpeFszXVswXSAq
IHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3JlZW4gKyBtX21hdHJpeFszXVsyXSAqIGJsdWUgKyBt
X21hdHJpeFszXVszXSAqIGFscGhhICsgbV9tYXRyaXhbM11bNF0KKyAgICB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvck1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JNYXRyaXguY3BwCShyZXZpc2lvbiAyNjIxNjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0
LDI3NiArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29s
b3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDb2xvck1hdHJpeC5oIgogCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db2xvckNvbXBvbmVudHM6
OkNvbG9yQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIGZsb2F0Q29tcG9uZW50cykK
LXsKLSAgICBjb21wb25lbnRzWzBdID0gY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9u
ZW50cy5jb21wb25lbnRzWzBdKTsKLSAgICBjb21wb25lbnRzWzFdID0gY2xhbXBlZENvbG9yQ29t
cG9uZW50KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRzWzFdKTsKLSAgICBjb21wb25lbnRzWzJd
ID0gY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9uZW50cy5jb21wb25lbnRzWzJdKTsK
LSAgICBjb21wb25lbnRzWzNdID0gY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0Q29tcG9uZW50
cy5jb21wb25lbnRzWzNdKTsKLX0KLQotYm9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgYSwgY29uc3QgRmxvYXRDb21wb25lbnRzJiBiKQotewotICAgIHJldHVy
biBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNb
MF0pCi0gICAgICAgICYmIFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbChhLmNvbXBvbmVudHNbMV0s
IGIuY29tcG9uZW50c1sxXSkKLSAgICAgICAgJiYgV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsKGEu
Y29tcG9uZW50c1syXSwgYi5jb21wb25lbnRzWzJdKQotICAgICAgICAmJiBXVEY6OmFyZUVzc2Vu
dGlhbGx5RXF1YWwoYS5jb21wb25lbnRzWzNdLCBiLmNvbXBvbmVudHNbM10pOwotfQotCi0vLyBU
aGVzZSBhcmUgdGhlIHN0YW5kYXJkIHNSR0IgPC0+IGxpbmVhclJHQiBjb252ZXJzaW9uIGZ1bmN0
aW9ucyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCi17Ci0gICAgaWYgKGMgPCAwLjAwMzEzMDhmKQot
ICAgICAgICByZXR1cm4gMTIuOTJmICogYzsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0Pigx
LjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYsIDAsIDEpOwotfQotCi1m
bG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCi17Ci0gICAgaWYgKGMgPD0g
MC4wNDA0NWYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmOwotCi0gICAgcmV0dXJuIGNsYW1w
VG88ZmxvYXQ+KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEpOwot
fQotCi1GbG9hdENvbXBvbmVudHMgcmdiVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYgUkdCQ29sb3IpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzBdKSwKLSAgICAgICAgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzFdKSwKLSAgICAgICAgcmdiVG9M
aW5lYXJDb2xvckNvbXBvbmVudChSR0JDb2xvci5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgUkdC
Q29sb3IuY29tcG9uZW50c1szXQotICAgIH07Ci19Ci0KLUZsb2F0Q29tcG9uZW50cyBsaW5lYXJU
b1JHQkNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBsaW5lYXJSR0IpCi17Ci0gICAg
cmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChsaW5lYXJSR0IuY29t
cG9uZW50c1swXSksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQobGluZWFyUkdC
LmNvbXBvbmVudHNbMV0pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGxpbmVh
clJHQi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgbGluZWFyUkdCLmNvbXBvbmVudHNbM10KLSAg
ICB9OwotfQotCi1zdGF0aWMgRmxvYXRDb21wb25lbnRzIHh5elRvTGluZWFyU1JHQihjb25zdCBG
bG9hdENvbXBvbmVudHMmIFhZWkNvbXBvbmVudHMpCi17Ci0gICAgLy8gaHR0cHM6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU1JHQgotICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29t
L2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdCBmbG9hdCB2YWx1
ZXNbXSA9IHsKLSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0Ziwg
MC4wZiwgMC4wZiwKLSAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYw
ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcy
MjUyZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgIDAuMGYsICAgICAgICAwLjBmLCAgICAgICAgMC4w
ZiwgICAgICAgMS4wZiwgMC4wZiwKLSAgICB9OwotICAgIENvbG9yTWF0cml4IHh5elRvTGluZWFy
U1JHQk1hdHJpeCh2YWx1ZXMpOwotICAgIHJldHVybiB4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJh
bnNmb3JtZWRDb2xvckNvbXBvbmVudHMoWFlaQ29tcG9uZW50cyk7Ci19Ci0KLXN0YXRpYyBGbG9h
dENvbXBvbmVudHMgbGluZWFyU1JHQlRvWFlaKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgWFlaQ29t
cG9uZW50cykKLXsKLSAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCi0g
ICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZ
Wl9NYXRyaXguaHRtbAotICAgIGNvbnN0IGZsb2F0IHZhbHVlc1tdID0gewotICAgICAgICAwLjQx
MjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsIDAuMGYsIDAuMGYsCi0gICAgICAgIDAu
MjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwgMC4wZiwgMC4wZiwKLSAgICAgICAg
MC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1MDMwNDFmLCAwLjBmLCAwLjBmLAotICAgICAg
ICAwLjBmLCAgICAgICAgMC4wZiwgICAgICAgIDAuMGYsICAgICAgIDEuMGYsIDAuMGYsCi0gICAg
fTsKLSAgICBDb2xvck1hdHJpeCBsaW5lYXJTUkdCVG9YWVpNYXRyaXgodmFsdWVzKTsKLSAgICBy
ZXR1cm4gbGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZ
WkNvbXBvbmVudHMpOwotfQotCi1zdGF0aWMgRmxvYXRDb21wb25lbnRzIFhZWlRvTGluZWFyUDMo
Y29uc3QgRmxvYXRDb21wb25lbnRzJiBYWVpDb21wb25lbnRzKQotewotICAgIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNv
bnN0IGZsb2F0IHZhbHVlc1tdID0gewotICAgICAgICAgMi40OTM0OTY5MTE5NDE0MjVmLCAgLTAu
OTMxMzgzNjE3OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcxNjhmLCAwLjBmLCAwLjBmLAotICAg
ICAgICAtMC44Mjk0ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYy
NDY4NTg0MTk0MzZmLCAwLjBmLCAwLjBmLAotICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1Ziwg
LTAuMDc2MTcyMzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAwNzY4NzJmLCAwLjBmLCAwLjBmLAot
ICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgICAwLjBm
LCAgICAgICAgICAgICAgICAxLjBmLCAwLjBmLAotICAgIH07Ci0gICAgQ29sb3JNYXRyaXggeHl6
VG9MaW5lYXJTUkdCTWF0cml4KHZhbHVlcyk7Ci0gICAgcmV0dXJuIHh5elRvTGluZWFyU1JHQk1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhYWVpDb21wb25lbnRzKTsKLX0KLQotc3Rh
dGljIEZsb2F0Q29tcG9uZW50cyBsaW5lYXJQM1RvWFlaKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYg
WFlaQ29tcG9uZW50cykKLXsKLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNv
bG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25zdCBmbG9hdCB2YWx1ZXNbXSA9IHsK
LSAgICAgICAgMC40ODY1NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgy
MTcyODUyMzQzNjNmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAw
LjY5MTczODUyMTgzNjUwNjRmLCAwLjA3OTI4NjkxNDA5Mzc0NWYsIDAuMGYsIDAuMGYsCi0gICAg
ICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgxODU4OTAyNmYsIDEuMDQzOTQ0MzY4
OTAwOTc2ZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4wZiwg
ICAgICAgICAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAxLjBmLCAwLjBmLAotICAgIH07Ci0g
ICAgQ29sb3JNYXRyaXggbGluZWFyUDNUb1hZWk1hdHJpeCh2YWx1ZXMpOwotICAgIHJldHVybiBs
aW5lYXJQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKFhZWkNvbXBvbmVu
dHMpOwotfQotCi1GbG9hdENvbXBvbmVudHMgcDNUb1NSR0IoY29uc3QgRmxvYXRDb21wb25lbnRz
JiBwMykKLXsKLSAgICBhdXRvIGxpbmVhclAzID0gcmdiVG9MaW5lYXJDb21wb25lbnRzKHAzKTsK
LSAgICBhdXRvIHh5eiA9IGxpbmVhclAzVG9YWVoobGluZWFyUDMpOwotICAgIGF1dG8gbGluZWFy
U1JHQiA9IHh5elRvTGluZWFyU1JHQih4eXopOwotICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBv
bmVudHMobGluZWFyU1JHQik7Ci19Ci0KLUZsb2F0Q29tcG9uZW50cyBzUkdCVG9QMyhjb25zdCBG
bG9hdENvbXBvbmVudHMmIHNSR0IpCi17Ci0gICAgYXV0byBsaW5lYXJTUkdCID0gcmdiVG9MaW5l
YXJDb21wb25lbnRzKHNSR0IpOwotICAgIGF1dG8geHl6ID0gbGluZWFyU1JHQlRvWFlaKGxpbmVh
clNSR0IpOwotICAgIGF1dG8gbGluZWFyUDMgPSBYWVpUb0xpbmVhclAzKHh5eik7Ci0gICAgcmV0
dXJuIGxpbmVhclRvUkdCQ29tcG9uZW50cyhsaW5lYXJQMyk7Ci19Ci0KLWZsb2F0IGxpZ2h0bmVz
cyhjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50cykKLXsKLSAgICBhdXRvIFty
LCBnLCBiLCBhXSA9IHNSR0JDb21wb250ZW50czsKLQotICAgIGZsb2F0IG1heCA9IHN0ZDo6bWF4
KHsgciwgZywgYiB9KTsKLSAgICBmbG9hdCBtaW4gPSBzdGQ6Om1pbih7IHIsIGcsIGIgfSk7Ci0K
LSAgICByZXR1cm4gMC41ZiAqIChtYXggKyBtaW4pOwotfQotCi0vLyBUaGlzIGlzIHNpbWlsYXIg
dG8gc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnQgYnV0IGZvciBzb21lIHJlYXNvbgotLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1p
bmFuY2VkZWYKLS8vIGRvZXNuJ3QgdXNlIHRoZSBzdGFuZGFyZCBzUkdCIC0+IGxpbmVhclJHQiB0
aHJlc2hvbGQgb2YgMC4wNDA0NS4KLXN0YXRpYyBmbG9hdCBzUkdCVG9MaW5lYXJDb2xvckNvbXBv
bmVudEZvckx1bWluYW5jZShmbG9hdCBjKQotewotICAgIGlmIChjIDw9IDAuMDM5MjhmKQotICAg
ICAgICByZXR1cm4gYyAvIDEyLjkyZjsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6
OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotZmxvYXQgbHVt
aW5hbmNlKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbmVudHMpCi17Ci0gICAgLy8g
VmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIx
MS8jcmVsYXRpdmVsdW1pbmFuY2VkZWYKLSAgICByZXR1cm4gMC4yMTI2ZiAqIHNSR0JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMF0p
Ci0gICAgICAgICsgMC43MTUyZiAqIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5h
bmNlKHNSR0JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0pCi0gICAgICAgICsgMC4wNzIyZiAqIHNS
R0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzLmNvbXBv
bmVudHNbMl0pOwotfQotCi1mbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYgY29tcG9uZW50c0EsIGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgY29tcG9uZW50c0IpCi17Ci0g
ICAgLy8gVXNlcyB0aGUgV0NBRyAyLjAgZGVmaW5pdGlvbiBvZiBjb250cmFzdCByYXRpby4KLSAg
ICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNjb250cmFzdC1yYXRpb2RlZgotICAg
IGZsb2F0IGxpZ2h0ZXJMdW1pbmFuY2UgPSBsdW1pbmFuY2UoY29tcG9uZW50c0EpOwotICAgIGZs
b2F0IGRhcmtlckx1bWluYW5jZSA9IGx1bWluYW5jZShjb21wb25lbnRzQik7Ci0KLSAgICBpZiAo
bGlnaHRlckx1bWluYW5jZSA8IGRhcmtlckx1bWluYW5jZSkKLSAgICAgICAgc3RkOjpzd2FwKGxp
Z2h0ZXJMdW1pbmFuY2UsIGRhcmtlckx1bWluYW5jZSk7Ci0KLSAgICByZXR1cm4gKGxpZ2h0ZXJM
dW1pbmFuY2UgKyAwLjA1KSAvIChkYXJrZXJMdW1pbmFuY2UgKyAwLjA1KTsKLX0KLQotRmxvYXRD
b21wb25lbnRzIHNSR0JUb0hTTChjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50
cykKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFj
ZS4KLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBzUkdCQ29tcG9udGVudHM7Ci0KLSAgICBm
bG9hdCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7Ci0gICAgZmxvYXQgbWluID0gc3RkOjpt
aW4oeyByLCBnLCBiIH0pOwotICAgIGZsb2F0IGNocm9tYSA9IG1heCAtIG1pbjsKLQotICAgIGZs
b2F0IGh1ZTsKLSAgICBpZiAoIWNocm9tYSkKLSAgICAgICAgaHVlID0gMDsKLSAgICBlbHNlIGlm
IChtYXggPT0gcikKLSAgICAgICAgaHVlID0gKDYwLjBmICogKChnIC0gYikgLyBjaHJvbWEpKSAr
IDM2MC4wZjsKLSAgICBlbHNlIGlmIChtYXggPT0gZykKLSAgICAgICAgaHVlID0gKDYwLjBmICog
KChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wZjsKLSAgICBlbHNlCi0gICAgICAgIGh1ZSA9ICg2
MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMGY7Ci0KLSAgICBpZiAoaHVlID49IDM2
MC4wZikKLSAgICAgICAgaHVlIC09IDM2MC4wZjsKLQotICAgIGh1ZSAvPSAzNjAuMGY7Ci0KLSAg
ICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICogKG1heCArIG1pbik7Ci0gICAgZmxvYXQgc2F0dXJh
dGlvbjsKLSAgICBpZiAoIWNocm9tYSkKLSAgICAgICAgc2F0dXJhdGlvbiA9IDA7Ci0gICAgZWxz
ZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCi0gICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8g
KG1heCArIG1pbikpOwotICAgIGVsc2UKLSAgICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEgLyAo
Mi4wZiAtIChtYXggKyBtaW4pKSk7Ci0KLSAgICByZXR1cm4gewotICAgICAgICBodWUsCi0gICAg
ICAgIHNhdHVyYXRpb24sCi0gICAgICAgIGxpZ2h0bmVzcywKLSAgICAgICAgYWxwaGEKLSAgICB9
OwotfQotCi0vLyBIdWUgaXMgaW4gdGhlIHJhbmdlIDAtNiwgb3RoZXIgYXJncyBpbiAwLTEuCi1z
dGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgdGVtcDIsIGZsb2F0IGh1ZVZh
bCkKLXsKLSAgICBpZiAoaHVlVmFsIDwgMC4wZikKLSAgICAgICAgaHVlVmFsICs9IDYuMGY7Ci0g
ICAgZWxzZSBpZiAoaHVlVmFsID49IDYuMGYpCi0gICAgICAgIGh1ZVZhbCAtPSA2LjBmOwotICAg
IGlmIChodWVWYWwgPCAxLjBmKQotICAgICAgICByZXR1cm4gdGVtcDEgKyAodGVtcDIgLSB0ZW1w
MSkgKiBodWVWYWw7Ci0gICAgaWYgKGh1ZVZhbCA8IDMuMGYpCi0gICAgICAgIHJldHVybiB0ZW1w
MjsKLSAgICBpZiAoaHVlVmFsIDwgNC4wZikKLSAgICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAy
IC0gdGVtcDEpICogKDQuMGYgLSBodWVWYWwpOwotICAgIHJldHVybiB0ZW1wMTsKLX0KLQotLy8g
RXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBDU1MgQ29s
b3IgNCBNb2R1bGUKLS8vIHNwZWNpZmljYXRpb24gYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1jb2xvci00LyNoc2wtdG8tcmdiIHdpdGgKLS8vIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXZh
aWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlCi1G
bG9hdENvbXBvbmVudHMgaHNsVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgaHNsQ29sb3Ip
Ci17Ci0gICAgZmxvYXQgaHVlID0gaHNsQ29sb3IuY29tcG9uZW50c1swXTsKLSAgICBmbG9hdCBz
YXR1cmF0aW9uID0gaHNsQ29sb3IuY29tcG9uZW50c1sxXTsKLSAgICBmbG9hdCBsaWdodG5lc3Mg
PSBoc2xDb2xvci5jb21wb25lbnRzWzJdOwotCi0gICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4K
LSAgICBpZiAoIXNhdHVyYXRpb24pIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGxp
Z2h0bmVzcywKLSAgICAgICAgICAgIGxpZ2h0bmVzcywKLSAgICAgICAgICAgIGxpZ2h0bmVzcywK
LSAgICAgICAgICAgIGhzbENvbG9yLmNvbXBvbmVudHNbM10KLSAgICAgICAgfTsKLSAgICB9Ci0g
ICAgCi0gICAgZmxvYXQgdGVtcDIgPSBsaWdodG5lc3MgPD0gMC41ZiA/IGxpZ2h0bmVzcyAqICgx
LjBmICsgc2F0dXJhdGlvbikgOiBsaWdodG5lc3MgKyBzYXR1cmF0aW9uIC0gbGlnaHRuZXNzICog
c2F0dXJhdGlvbjsKLSAgICBmbG9hdCB0ZW1wMSA9IDIuMGYgKiBsaWdodG5lc3MgLSB0ZW1wMjsK
LSAgICAKLSAgICBodWUgKj0gNi4wZjsgLy8gY2FsY0h1ZSgpIHdhbnRzIGh1ZSBpbiB0aGUgMC02
IHJhbmdlLgotICAgIHJldHVybiB7Ci0gICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAyLCBodWUg
KyAyLjBmKSwKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSksCi0gICAgICAgIGNh
bGNIdWUodGVtcDEsIHRlbXAyLCBodWUgLSAyLjBmKSwKLSAgICAgICAgaHNsQ29sb3IuY29tcG9u
ZW50c1szXQotICAgIH07Ci19Ci0KLUZsb2F0Q29tcG9uZW50cyBwcmVtdWx0aXBsaWVkKGNvbnN0
IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbmVudHMpCi17Ci0gICAgYXV0byBbciwgZywgYiwg
YV0gPSBzUkdCQ29tcG9uZW50czsKLSAgICByZXR1cm4gewotICAgICAgICByICogYSwKLSAgICAg
ICAgZyAqIGEsCi0gICAgICAgIGIgKiBhLAotICAgICAgICBhCi0gICAgfTsKLX0KLQogQ29sb3JN
YXRyaXg6OkNvbG9yTWF0cml4KCkKIHsKICAgICBtYWtlSWRlbnRpdHkoKTsKQEAgLTQyNCwxMCAr
MTYwLDcgQEAgQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNlcGlhTWF0cml4KGZsbwogCiB2b2lk
IENvbG9yTWF0cml4Ojp0cmFuc2Zvcm1Db2xvckNvbXBvbmVudHMoRmxvYXRDb21wb25lbnRzJiBj
b2xvckNvbXBvbmVudHMpIGNvbnN0CiB7Ci0gICAgZmxvYXQgcmVkID0gY29sb3JDb21wb25lbnRz
LmNvbXBvbmVudHNbMF07Ci0gICAgZmxvYXQgZ3JlZW4gPSBjb2xvckNvbXBvbmVudHMuY29tcG9u
ZW50c1sxXTsKLSAgICBmbG9hdCBibHVlID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl07
Ci0gICAgZmxvYXQgYWxwaGEgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXTsKKyAgICBh
dXRvIFtyZWQsIGdyZWVuLCBibHVlLCBhbHBoYV0gPSBjb2xvckNvbXBvbmVudHM7CiAKICAgICBj
b2xvckNvbXBvbmVudHMuY29tcG9uZW50c1swXSA9IG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9t
YXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBd
WzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0XTsKICAgICBjb2xvckNvbXBvbmVudHMuY29tcG9u
ZW50c1sxXSA9IG1fbWF0cml4WzFdWzBdICogcmVkICsgbV9tYXRyaXhbMV1bMV0gKiBncmVlbiAr
IG1fbWF0cml4WzFdWzJdICogYmx1ZSArIG1fbWF0cml4WzFdWzNdICogYWxwaGEgKyBtX21hdHJp
eFsxXVs0XTsKQEAgLTQzNywxMCArMTcwLDcgQEAgdm9pZCBDb2xvck1hdHJpeDo6dHJhbnNmb3Jt
Q29sb3JDb21wb25lbgogCiBGbG9hdENvbXBvbmVudHMgQ29sb3JNYXRyaXg6OnRyYW5zZm9ybWVk
Q29sb3JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgY29sb3JDb21wb25lbnRzKSBj
b25zdAogewotICAgIGZsb2F0IHJlZCA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzBdOwot
ICAgIGZsb2F0IGdyZWVuID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV07Ci0gICAgZmxv
YXQgYmx1ZSA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzJdOwotICAgIGZsb2F0IGFscGhh
ID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbM107CisgICAgYXV0byBbcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGFdID0gY29sb3JDb21wb25lbnRzOwogCiAgICAgcmV0dXJuIHsKICAgICAgICAg
bV9tYXRyaXhbMF1bMF0gKiByZWQgKyBtX21hdHJpeFswXVsxXSAqIGdyZWVuICsgbV9tYXRyaXhb
MF1bMl0gKiBibHVlICsgbV9tYXRyaXhbMF1bM10gKiBhbHBoYSArIG1fbWF0cml4WzBdWzRdLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5o
CShyZXZpc2lvbiAyNjIxNjYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmg6MjYyMTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNywgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
YXJyYXk+CisjaW5jbHVkZSA8bWF0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBGbG9hdENvbXBvbmVudHMgeworICAgIEZsb2F0Q29tcG9uZW50cyhmbG9hdCBhID0gMCwgZmxv
YXQgYiA9IDAsIGZsb2F0IGMgPSAwLCBmbG9hdCBkID0gMCkKKyAgICB7CisgICAgICAgIGNvbXBv
bmVudHNbMF0gPSBhOworICAgICAgICBjb21wb25lbnRzWzFdID0gYjsKKyAgICAgICAgY29tcG9u
ZW50c1syXSA9IGM7CisgICAgICAgIGNvbXBvbmVudHNbM10gPSBkOworICAgIH0KKworICAgIEZs
b2F0Q29tcG9uZW50cyhjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgdmFsdWVzKQorICAgIHsK
KyAgICAgICAgY29tcG9uZW50c1swXSA9IHZhbHVlc1swXTsKKyAgICAgICAgY29tcG9uZW50c1sx
XSA9IHZhbHVlc1sxXTsKKyAgICAgICAgY29tcG9uZW50c1syXSA9IHZhbHVlc1syXTsKKyAgICAg
ICAgY29tcG9uZW50c1szXSA9IHZhbHVlc1szXTsKKyAgICB9CisKKyAgICBGbG9hdENvbXBvbmVu
dHMmIG9wZXJhdG9yKz0oY29uc3QgRmxvYXRDb21wb25lbnRzJiByaHMpCisgICAgeworICAgICAg
ICBjb21wb25lbnRzWzBdICs9IHJocy5jb21wb25lbnRzWzBdOworICAgICAgICBjb21wb25lbnRz
WzFdICs9IHJocy5jb21wb25lbnRzWzFdOworICAgICAgICBjb21wb25lbnRzWzJdICs9IHJocy5j
b21wb25lbnRzWzJdOworICAgICAgICBjb21wb25lbnRzWzNdICs9IHJocy5jb21wb25lbnRzWzNd
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgRmxvYXRDb21wb25lbnRzIG9w
ZXJhdG9yKyhmbG9hdCByaHMpIGNvbnN0CisgICAgeworICAgICAgICBGbG9hdENvbXBvbmVudHMg
cmVzdWx0OworICAgICAgICByZXN1bHQuY29tcG9uZW50c1swXSA9IGNvbXBvbmVudHNbMF0gKyBy
aHM7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzFdID0gY29tcG9uZW50c1sxXSArIHJoczsK
KyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMl0gPSBjb21wb25lbnRzWzJdICsgcmhzOworICAg
ICAgICByZXN1bHQuY29tcG9uZW50c1szXSA9IGNvbXBvbmVudHNbM10gKyByaHM7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgRmxvYXRDb21wb25lbnRzIG9wZXJhdG9yLyhm
bG9hdCBkZW5vbWluYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIEZsb2F0Q29tcG9uZW50cyBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzBdID0gY29tcG9uZW50c1swXSAvIGRl
bm9taW5hdG9yOworICAgICAgICByZXN1bHQuY29tcG9uZW50c1sxXSA9IGNvbXBvbmVudHNbMV0g
LyBkZW5vbWluYXRvcjsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMl0gPSBjb21wb25lbnRz
WzJdIC8gZGVub21pbmF0b3I7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzNdID0gY29tcG9u
ZW50c1szXSAvIGRlbm9taW5hdG9yOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIEZsb2F0Q29tcG9uZW50cyBvcGVyYXRvciooZmxvYXQgZmFjdG9yKSBjb25zdAorICAgIHsK
KyAgICAgICAgRmxvYXRDb21wb25lbnRzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVu
dHNbMF0gPSBjb21wb25lbnRzWzBdICogZmFjdG9yOworICAgICAgICByZXN1bHQuY29tcG9uZW50
c1sxXSA9IGNvbXBvbmVudHNbMV0gKiBmYWN0b3I7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRz
WzJdID0gY29tcG9uZW50c1syXSAqIGZhY3RvcjsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNb
M10gPSBjb21wb25lbnRzWzNdICogZmFjdG9yOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIEZsb2F0Q29tcG9uZW50cyBhYnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgRmxv
YXRDb21wb25lbnRzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMF0gPSBmYWJz
KGNvbXBvbmVudHNbMF0pOworICAgICAgICByZXN1bHQuY29tcG9uZW50c1sxXSA9IGZhYnMoY29t
cG9uZW50c1sxXSk7CisgICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzJdID0gZmFicyhjb21wb25l
bnRzWzJdKTsKKyAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbM10gPSBmYWJzKGNvbXBvbmVudHNb
M10pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHRlbXBsYXRlPHN0ZDo6
c2l6ZV90IE4+CisgICAgZmxvYXQgZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
b21wb25lbnRzW05dOworICAgIH0KKworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDQ+IGNvbXBvbmVu
dHM7Cit9OworCitib29sIGFyZUVzc2VudGlhbGx5RXF1YWwoY29uc3QgRmxvYXRDb21wb25lbnRz
JiwgY29uc3QgRmxvYXRDb21wb25lbnRzJik7CisKK3N0cnVjdCBDb2xvckNvbXBvbmVudHMgewor
ICAgIENvbG9yQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKKyAgICAKKyAgICBz
dGF0aWMgQ29sb3JDb21wb25lbnRzIGZyb21SR0JBKHVuc2lnbmVkIHBpeGVsKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIENvbG9yQ29tcG9uZW50cygocGl4ZWwgPj4gMjQpICYgMHhGRiwgKHBpeGVs
ID4+IDE2KSAmIDB4RkYsIChwaXhlbCA+PiA4KSAmIDB4RkYsIHBpeGVsICYgMHhGRik7CisgICAg
fQorICAgIAorICAgIENvbG9yQ29tcG9uZW50cyh1aW50OF90IGEgPSAwLCB1aW50OF90IGIgPSAw
LCB1aW50OF90IGMgPSAwLCB1aW50OF90IGQgPSAwKQorICAgIHsKKyAgICAgICAgY29tcG9uZW50
c1swXSA9IGE7CisgICAgICAgIGNvbXBvbmVudHNbMV0gPSBiOworICAgICAgICBjb21wb25lbnRz
WzJdID0gYzsKKyAgICAgICAgY29tcG9uZW50c1szXSA9IGQ7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIHRvUkdCQSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcG9uZW50c1sw
XSA8PCAyNCB8IGNvbXBvbmVudHNbMV0gPDwgMTYgfCBjb21wb25lbnRzWzJdIDw8IDggfCBjb21w
b25lbnRzWzNdOworICAgIH0KKworICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgND4gY29tcG9uZW50
czsKK307CisKK2lubGluZSBDb2xvckNvbXBvbmVudHMgcGVyQ29tcG9uZW50TWF4KGNvbnN0IENv
bG9yQ29tcG9uZW50cyYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzJiBiKQoreworICAgIHJldHVy
biB7CisgICAgICAgIHN0ZDo6bWF4KGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwK
KyAgICAgICAgc3RkOjptYXgoYS5jb21wb25lbnRzWzFdLCBiLmNvbXBvbmVudHNbMV0pLAorICAg
ICAgICBzdGQ6Om1heChhLmNvbXBvbmVudHNbMl0sIGIuY29tcG9uZW50c1syXSksCisgICAgICAg
IHN0ZDo6bWF4KGEuY29tcG9uZW50c1szXSwgYi5jb21wb25lbnRzWzNdKQorICAgIH07Cit9CisK
K2lubGluZSBDb2xvckNvbXBvbmVudHMgcGVyQ29tcG9uZW50TWluKGNvbnN0IENvbG9yQ29tcG9u
ZW50cyYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzJiBiKQoreworICAgIHJldHVybiB7CisgICAg
ICAgIHN0ZDo6bWluKGEuY29tcG9uZW50c1swXSwgYi5jb21wb25lbnRzWzBdKSwKKyAgICAgICAg
c3RkOjptaW4oYS5jb21wb25lbnRzWzFdLCBiLmNvbXBvbmVudHNbMV0pLAorICAgICAgICBzdGQ6
Om1pbihhLmNvbXBvbmVudHNbMl0sIGIuY29tcG9uZW50c1syXSksCisgICAgICAgIHN0ZDo6bWlu
KGEuY29tcG9uZW50c1szXSwgYi5jb21wb25lbnRzWzNdKQorICAgIH07Cit9CisKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JDb21wb25lbnRzJiBhLCBjb25zdCBDb2xvckNvbXBv
bmVudHMmIGIpCit7CisgICAgcmV0dXJuIGEuY29tcG9uZW50cyA9PSBiLmNvbXBvbmVudHM7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3JDb21wb25lbnRzJiBhLCBjb25z
dCBDb2xvckNvbXBvbmVudHMmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworaW5s
aW5lIHVpbnQ4X3QgY2xhbXBlZENvbG9yQ29tcG9uZW50KGZsb2F0IGYpCit7CisgICAgLy8gU2Vl
IGFsc28gY29sb3JGbG9hdFRvUkdCQUJ5dGUoKS4KKyAgICByZXR1cm4gc3RkOjpjbGFtcChzdGF0
aWNfY2FzdDxpbnQ+KGxyb3VuZGYoMjU1LjBmICogZikpLCAwLCAyNTUpOworfQorCitpbmxpbmUg
dW5zaWduZWQgYnl0ZU9mZnNldE9mUGl4ZWwodW5zaWduZWQgeCwgdW5zaWduZWQgeSwgdW5zaWdu
ZWQgcm93Qnl0ZXMpCit7CisgICAgY29uc3QgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQ7Cisg
ICAgcmV0dXJuIHggKiBieXRlc1BlclBpeGVsICsgeSAqIHJvd0J5dGVzOworfQorCisvLyAwLTEg
Y29tcG9uZW50cywgcmVzdWx0IGlzIGNsYW1wZWQuCitmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29t
cG9uZW50KGZsb2F0KTsKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwor
CitGbG9hdENvbXBvbmVudHMgcmdiVG9MaW5lYXJDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYpOworRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9uZW50cyhjb25zdCBGbG9h
dENvbXBvbmVudHMmKTsKKworRmxvYXRDb21wb25lbnRzIHAzVG9TUkdCKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYpOworRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYpOworCitXRUJDT1JFX0VYUE9SVCBGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYpOworV0VCQ09SRV9FWFBPUlQgRmxvYXRDb21wb25lbnRzIGhzbFRvU1JH
Qihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKKworZmxvYXQgbGlnaHRuZXNzKGNvbnN0IEZsb2F0
Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKK2Zsb2F0IGx1bWluYW5jZShjb25zdCBGbG9h
dENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50cyk7CitmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0
IEZsb2F0Q29tcG9uZW50cyYsIGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOworCitGbG9hdENvbXBv
bmVudHMgcHJlbXVsdGlwbGllZChjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50
cyk7CisKK2NsYXNzIENvbG9yTWF0cml4IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29sb3JNYXRy
aXggZ3JheXNjYWxlTWF0cml4KGZsb2F0KTsKKyAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2F0dXJh
dGlvbk1hdHJpeChmbG9hdCk7CisgICAgc3RhdGljIENvbG9yTWF0cml4IGh1ZVJvdGF0ZU1hdHJp
eChmbG9hdCBhbmdsZUluRGVncmVlcyk7CisgICAgc3RhdGljIENvbG9yTWF0cml4IHNlcGlhTWF0
cml4KGZsb2F0KTsKKworICAgIENvbG9yTWF0cml4KCk7CisgICAgQ29sb3JNYXRyaXgoY29uc3Qg
ZmxvYXRbMjBdKTsKKyAgICAKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9h
dENvbXBvbmVudHMmKSBjb25zdDsKKyAgICBGbG9hdENvbXBvbmVudHMgdHJhbnNmb3JtZWRDb2xv
ckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBtYWtlSWRlbnRpdHkoKTsKKworICAgIGZsb2F0IG1fbWF0cml4WzRdWzVdOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2Ugc3RkIHsKKwordGVtcGxhdGU8
PgorY2xhc3MgdHVwbGVfc2l6ZTxXZWJDb3JlOjpGbG9hdENvbXBvbmVudHM+IDogcHVibGljIHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDQ+IHsKK307CisKK3RlbXBsYXRlPHN0
ZDo6c2l6ZV90IE4+CitjbGFzcyB0dXBsZV9lbGVtZW50PE4sIFdlYkNvcmU6OkZsb2F0Q29tcG9u
ZW50cz4geworcHVibGljOgorICAgIHVzaW5nIHR5cGUgPSBmbG9hdDsKK307CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaAkocmV2
aXNpb24gMjYyMTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JN
YXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTc0ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtYXRo
Lmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEZsb2F0Q29tcG9uZW50cyB7Ci0g
ICAgRmxvYXRDb21wb25lbnRzKGZsb2F0IGEgPSAwLCBmbG9hdCBiID0gMCwgZmxvYXQgYyA9IDAs
IGZsb2F0IGQgPSAwKQotICAgIHsKLSAgICAgICAgY29tcG9uZW50c1swXSA9IGE7Ci0gICAgICAg
IGNvbXBvbmVudHNbMV0gPSBiOwotICAgICAgICBjb21wb25lbnRzWzJdID0gYzsKLSAgICAgICAg
Y29tcG9uZW50c1szXSA9IGQ7Ci0gICAgfQotCi0gICAgRmxvYXRDb21wb25lbnRzKGNvbnN0IHN0
ZDo6YXJyYXk8ZmxvYXQsIDQ+JiB2YWx1ZXMpCi0gICAgewotICAgICAgICBjb21wb25lbnRzWzBd
ID0gdmFsdWVzWzBdOwotICAgICAgICBjb21wb25lbnRzWzFdID0gdmFsdWVzWzFdOwotICAgICAg
ICBjb21wb25lbnRzWzJdID0gdmFsdWVzWzJdOwotICAgICAgICBjb21wb25lbnRzWzNdID0gdmFs
dWVzWzNdOwotICAgIH0KLQotICAgIEZsb2F0Q29tcG9uZW50cyYgb3BlcmF0b3IrPShjb25zdCBG
bG9hdENvbXBvbmVudHMmIHJocykKLSAgICB7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKz0gcmhz
LmNvbXBvbmVudHNbMF07Ci0gICAgICAgIGNvbXBvbmVudHNbMV0gKz0gcmhzLmNvbXBvbmVudHNb
MV07Ci0gICAgICAgIGNvbXBvbmVudHNbMl0gKz0gcmhzLmNvbXBvbmVudHNbMl07Ci0gICAgICAg
IGNvbXBvbmVudHNbM10gKz0gcmhzLmNvbXBvbmVudHNbM107Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICBGbG9hdENvbXBvbmVudHMgb3BlcmF0b3IrKGZsb2F0IHJocykgY29u
c3QKLSAgICB7Ci0gICAgICAgIEZsb2F0Q29tcG9uZW50cyByZXN1bHQ7Ci0gICAgICAgIHJlc3Vs
dC5jb21wb25lbnRzWzBdID0gY29tcG9uZW50c1swXSArIHJoczsKLSAgICAgICAgcmVzdWx0LmNv
bXBvbmVudHNbMV0gPSBjb21wb25lbnRzWzFdICsgcmhzOwotICAgICAgICByZXN1bHQuY29tcG9u
ZW50c1syXSA9IGNvbXBvbmVudHNbMl0gKyByaHM7Ci0gICAgICAgIHJlc3VsdC5jb21wb25lbnRz
WzNdID0gY29tcG9uZW50c1szXSArIHJoczsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICBGbG9hdENvbXBvbmVudHMgb3BlcmF0b3IvKGZsb2F0IGRlbm9taW5hdG9yKSBjb25z
dAotICAgIHsKLSAgICAgICAgRmxvYXRDb21wb25lbnRzIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
LmNvbXBvbmVudHNbMF0gPSBjb21wb25lbnRzWzBdIC8gZGVub21pbmF0b3I7Ci0gICAgICAgIHJl
c3VsdC5jb21wb25lbnRzWzFdID0gY29tcG9uZW50c1sxXSAvIGRlbm9taW5hdG9yOwotICAgICAg
ICByZXN1bHQuY29tcG9uZW50c1syXSA9IGNvbXBvbmVudHNbMl0gLyBkZW5vbWluYXRvcjsKLSAg
ICAgICAgcmVzdWx0LmNvbXBvbmVudHNbM10gPSBjb21wb25lbnRzWzNdIC8gZGVub21pbmF0b3I7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRmxvYXRDb21wb25lbnRzIG9w
ZXJhdG9yKihmbG9hdCBmYWN0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICBGbG9hdENvbXBvbmVu
dHMgcmVzdWx0OwotICAgICAgICByZXN1bHQuY29tcG9uZW50c1swXSA9IGNvbXBvbmVudHNbMF0g
KiBmYWN0b3I7Ci0gICAgICAgIHJlc3VsdC5jb21wb25lbnRzWzFdID0gY29tcG9uZW50c1sxXSAq
IGZhY3RvcjsKLSAgICAgICAgcmVzdWx0LmNvbXBvbmVudHNbMl0gPSBjb21wb25lbnRzWzJdICog
ZmFjdG9yOwotICAgICAgICByZXN1bHQuY29tcG9uZW50c1szXSA9IGNvbXBvbmVudHNbM10gKiBm
YWN0b3I7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRmxvYXRDb21wb25l
bnRzIGFicygpIGNvbnN0Ci0gICAgewotICAgICAgICBGbG9hdENvbXBvbmVudHMgcmVzdWx0Owot
ICAgICAgICByZXN1bHQuY29tcG9uZW50c1swXSA9IGZhYnMoY29tcG9uZW50c1swXSk7Ci0gICAg
ICAgIHJlc3VsdC5jb21wb25lbnRzWzFdID0gZmFicyhjb21wb25lbnRzWzFdKTsKLSAgICAgICAg
cmVzdWx0LmNvbXBvbmVudHNbMl0gPSBmYWJzKGNvbXBvbmVudHNbMl0pOwotICAgICAgICByZXN1
bHQuY29tcG9uZW50c1szXSA9IGZhYnMoY29tcG9uZW50c1szXSk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgTj4KLSAgICBmbG9hdCBn
ZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbTl07Ci0gICAgfQot
Ci0gICAgc3RkOjphcnJheTxmbG9hdCwgND4gY29tcG9uZW50czsKLX07Ci0KLWJvb2wgYXJlRXNz
ZW50aWFsbHlFcXVhbChjb25zdCBGbG9hdENvbXBvbmVudHMmLCBjb25zdCBGbG9hdENvbXBvbmVu
dHMmKTsKLQotc3RydWN0IENvbG9yQ29tcG9uZW50cyB7Ci0gICAgQ29sb3JDb21wb25lbnRzKGNv
bnN0IEZsb2F0Q29tcG9uZW50cyYpOwotICAgIAotICAgIHN0YXRpYyBDb2xvckNvbXBvbmVudHMg
ZnJvbVJHQkEodW5zaWduZWQgcGl4ZWwpCi0gICAgewotICAgICAgICByZXR1cm4gQ29sb3JDb21w
b25lbnRzKChwaXhlbCA+PiAyNCkgJiAweEZGLCAocGl4ZWwgPj4gMTYpICYgMHhGRiwgKHBpeGVs
ID4+IDgpICYgMHhGRiwgcGl4ZWwgJiAweEZGKTsKLSAgICB9Ci0gICAgCi0gICAgQ29sb3JDb21w
b25lbnRzKHVpbnQ4X3QgYSA9IDAsIHVpbnQ4X3QgYiA9IDAsIHVpbnQ4X3QgYyA9IDAsIHVpbnQ4
X3QgZCA9IDApCi0gICAgewotICAgICAgICBjb21wb25lbnRzWzBdID0gYTsKLSAgICAgICAgY29t
cG9uZW50c1sxXSA9IGI7Ci0gICAgICAgIGNvbXBvbmVudHNbMl0gPSBjOwotICAgICAgICBjb21w
b25lbnRzWzNdID0gZDsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgdG9SR0JBKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdIDw8IDI0IHwgY29tcG9uZW50c1sx
XSA8PCAxNiB8IGNvbXBvbmVudHNbMl0gPDwgOCB8IGNvbXBvbmVudHNbM107Ci0gICAgfQotCi0g
ICAgc3RkOjphcnJheTx1aW50OF90LCA0PiBjb21wb25lbnRzOwotfTsKLQotaW5saW5lIENvbG9y
Q29tcG9uZW50cyBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29sb3JDb21wb25lbnRzJiBhLCBjb25z
dCBDb2xvckNvbXBvbmVudHMmIGIpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptYXgo
YS5jb21wb25lbnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBzdGQ6Om1heChhLmNv
bXBvbmVudHNbMV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAgIHN0ZDo6bWF4KGEuY29tcG9u
ZW50c1syXSwgYi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3RkOjptYXgoYS5jb21wb25lbnRz
WzNdLCBiLmNvbXBvbmVudHNbM10pCi0gICAgfTsKLX0KLQotaW5saW5lIENvbG9yQ29tcG9uZW50
cyBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzJiBhLCBjb25zdCBDb2xvckNv
bXBvbmVudHMmIGIpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYS5jb21wb25l
bnRzWzBdLCBiLmNvbXBvbmVudHNbMF0pLAotICAgICAgICBzdGQ6Om1pbihhLmNvbXBvbmVudHNb
MV0sIGIuY29tcG9uZW50c1sxXSksCi0gICAgICAgIHN0ZDo6bWluKGEuY29tcG9uZW50c1syXSwg
Yi5jb21wb25lbnRzWzJdKSwKLSAgICAgICAgc3RkOjptaW4oYS5jb21wb25lbnRzWzNdLCBiLmNv
bXBvbmVudHNbM10pCi0gICAgfTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b2xvckNvbXBvbmVudHMmIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50cyYgYikKLXsKLSAgICByZXR1
cm4gYS5jb21wb25lbnRzID09IGIuY29tcG9uZW50czsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBDb2xvckNvbXBvbmVudHMmIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50cyYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi1pbmxpbmUgdWludDhfdCBjbGFtcGVkQ29s
b3JDb21wb25lbnQoZmxvYXQgZikKLXsKLSAgICAvLyBTZWUgYWxzbyBjb2xvckZsb2F0VG9SR0JB
Qnl0ZSgpLgotICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0YXRpY19jYXN0PGludD4obHJvdW5kZigy
NTUuMGYgKiBmKSksIDAsIDI1NSk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBieXRlT2Zmc2V0T2ZQ
aXhlbCh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCB1bnNpZ25lZCByb3dCeXRlcykKLXsKLSAgICBj
b25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKLSAgICByZXR1cm4geCAqIGJ5dGVzUGVy
UGl4ZWwgKyB5ICogcm93Qnl0ZXM7Ci19Ci0KLS8vIDAtMSBjb21wb25lbnRzLCByZXN1bHQgaXMg
Y2xhbXBlZC4KLWZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoZmxvYXQpOwotZmxvYXQg
cmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChmbG9hdCk7Ci0KLUZsb2F0Q29tcG9uZW50cyByZ2JU
b0xpbmVhckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7Ci1GbG9hdENvbXBvbmVu
dHMgbGluZWFyVG9SR0JDb21wb25lbnRzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotCi1GbG9h
dENvbXBvbmVudHMgcDNUb1NSR0IoY29uc3QgRmxvYXRDb21wb25lbnRzJik7Ci1GbG9hdENvbXBv
bmVudHMgc1JHQlRvUDMoY29uc3QgRmxvYXRDb21wb25lbnRzJik7Ci0KLVdFQkNPUkVfRVhQT1JU
IEZsb2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb21wb25lbnRzJik7Ci1XRUJD
T1JFX0VYUE9SVCBGbG9hdENvbXBvbmVudHMgaHNsVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50
cyYpOwotCi1mbG9hdCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29tcG9u
dGVudHMpOwotZmxvYXQgbHVtaW5hbmNlKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBv
bnRlbnRzKTsKLWZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgRmxvYXRDb21wb25lbnRzJiwgY29u
c3QgRmxvYXRDb21wb25lbnRzJik7Ci0KLUZsb2F0Q29tcG9uZW50cyBwcmVtdWx0aXBsaWVkKGNv
bnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKK3N0cnVjdCBGbG9hdENvbXBv
bmVudHM7CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBsaWtlbHkgYmUgcmVwbGFjZWQgYnkgYSBn
ZW5lcmljIG1hdHJpeCBjbGFzcy4gT3RoZXIgdGhhbgorLy8gdGhlIHNwZWNpZmljIG1hdHJpeCBj
b25zdHVjdG9ycywgdGhlcmUgaXMgbm90aGluZyBjb2xvciBzcGVjaWZpYyBhYm91dCB0aGlzLgor
Ly8gRnV0aGVybW9yZSwgbW9zdCB0aGVzZSBkb24ndCBuZWVkIHRvIGJlIDR4NSBtYXRyaWNlcyB3
aXRoIG1vc3Qgb25seSBuZWVkaW5nCisvLyBhIDN4MyBtYXRyaXguCiBjbGFzcyBDb2xvck1hdHJp
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENvbG9yTWF0cml4IGdyYXlzY2FsZU1hdHJpeChmbG9h
dCk7CkBAIC0yMTMsMTcgKzUzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotbmFtZXNwYWNlIHN0ZCB7Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIHR1cGxlX3NpemU8
V2ViQ29yZTo6RmxvYXRDb21wb25lbnRzPiA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50
PHN0ZDo6c2l6ZV90LCA0PiB7Ci19OwotCi10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgotY2xhc3Mg
dHVwbGVfZWxlbWVudDxOLCBXZWJDb3JlOjpGbG9hdENvbXBvbmVudHM+IHsKLXB1YmxpYzoKLSAg
ICB1c2luZyB0eXBlID0gZmxvYXQ7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjIx
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogCisjaW5jbHVkZSAiQ29sb3JNYXRyaXguaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
OTQsMTYwICsyOTUsNCBAQCBGbG9hdENvbXBvbmVudHMgcHJlbXVsdGlwbGllZChjb25zdCBGbG9h
CiAgICAgfTsKIH0KIAotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KCkKLXsKLSAgICBtYWtlSWRl
bnRpdHkoKTsKLX0KLQotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KGNvbnN0IGZsb2F0IHZhbHVl
c1syMF0pCi17Ci0gICAgbV9tYXRyaXhbMF1bMF0gPSB2YWx1ZXNbMF07Ci0gICAgbV9tYXRyaXhb
MF1bMV0gPSB2YWx1ZXNbMV07Ci0gICAgbV9tYXRyaXhbMF1bMl0gPSB2YWx1ZXNbMl07Ci0gICAg
bV9tYXRyaXhbMF1bM10gPSB2YWx1ZXNbM107Ci0gICAgbV9tYXRyaXhbMF1bNF0gPSB2YWx1ZXNb
NF07Ci0KLSAgICBtX21hdHJpeFsxXVswXSA9IHZhbHVlc1s1XTsKLSAgICBtX21hdHJpeFsxXVsx
XSA9IHZhbHVlc1s2XTsKLSAgICBtX21hdHJpeFsxXVsyXSA9IHZhbHVlc1s3XTsKLSAgICBtX21h
dHJpeFsxXVszXSA9IHZhbHVlc1s4XTsKLSAgICBtX21hdHJpeFsxXVs0XSA9IHZhbHVlc1s5XTsK
LQotICAgIG1fbWF0cml4WzJdWzBdID0gdmFsdWVzWzEwXTsKLSAgICBtX21hdHJpeFsyXVsxXSA9
IHZhbHVlc1sxMV07Ci0gICAgbV9tYXRyaXhbMl1bMl0gPSB2YWx1ZXNbMTJdOwotICAgIG1fbWF0
cml4WzJdWzNdID0gdmFsdWVzWzEzXTsKLSAgICBtX21hdHJpeFsyXVs0XSA9IHZhbHVlc1sxNF07
Ci0KLSAgICBtX21hdHJpeFszXVswXSA9IHZhbHVlc1sxNV07Ci0gICAgbV9tYXRyaXhbM11bMV0g
PSB2YWx1ZXNbMTZdOwotICAgIG1fbWF0cml4WzNdWzJdID0gdmFsdWVzWzE3XTsKLSAgICBtX21h
dHJpeFszXVszXSA9IHZhbHVlc1sxOF07Ci0gICAgbV9tYXRyaXhbM11bNF0gPSB2YWx1ZXNbMTld
OwotfQotCi12b2lkIENvbG9yTWF0cml4OjptYWtlSWRlbnRpdHkoKQotewotICAgIG1lbXNldCht
X21hdHJpeCwgMCwgc2l6ZW9mKG1fbWF0cml4KSk7Ci0gICAgbV9tYXRyaXhbMF1bMF0gPSAxOwot
ICAgIG1fbWF0cml4WzFdWzFdID0gMTsKLSAgICBtX21hdHJpeFsyXVsyXSA9IDE7Ci0gICAgbV9t
YXRyaXhbM11bM10gPSAxOwotfQotCi1Db2xvck1hdHJpeCBDb2xvck1hdHJpeDo6Z3JheXNjYWxl
TWF0cml4KGZsb2F0IGFtb3VudCkKLXsKLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICBm
bG9hdCBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGFtb3VudCwgMC4wLCAxLjApOwotCi0g
ICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEv
I2dyYXlzY2FsZUVxdWl2YWxlbnQKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMF0gPSAwLjIxMjZm
ICsgMC43ODc0ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9
IDAuNzE1MmYgLSAwLjcxNTJmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4
WzBdWzJdID0gMC4wNzIyZiAtIDAuMDcyMmYgKiBvbmVNaW51c0Ftb3VudDsKLQotICAgIG1hdHJp
eC5tX21hdHJpeFsxXVswXSA9IDAuMjEyNmYgLSAwLjIxMjZmICogb25lTWludXNBbW91bnQ7Ci0g
ICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43MTUyZiArIDAuMjg0OGYgKiBvbmVNaW51c0Ft
b3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MjJmIC0gMC4wNzIyZiAqIG9u
ZU1pbnVzQW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzBdID0gMC4yMTI2ZiAtIDAu
MjEyNmYgKiBvbmVNaW51c0Ftb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcx
NTJmIC0gMC43MTUyZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsyXVsy
XSA9IDAuMDcyMmYgKyAwLjkyNzhmICogb25lTWludXNBbW91bnQ7Ci0gICAgCi0gICAgcmV0dXJu
IG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNhdHVyYXRpb25NYXRyaXgo
ZmxvYXQgYW1vdW50KQotewotICAgIENvbG9yTWF0cml4IG1hdHJpeDsKLQotICAgIC8vIFZhbHVl
cyBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9maWx0ZXItZWZmZWN0cy0xLyNmZUNvbG9yTWF0
cml4RWxlbWVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMjEzZiArIDAuNzg3ZiAq
IGFtb3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMF1bMV0gPSAwLjcxNWYgLSAwLjcxNWYgKiBh
bW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzJdID0gMC4wNzJmIC0gMC4wNzJmICogYW1v
dW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzBdID0gMC4yMTNmIC0gMC4yMTNmICogYW1v
dW50OwotICAgIG1hdHJpeC5tX21hdHJpeFsxXVsxXSA9IDAuNzE1ZiArIDAuMjg1ZiAqIGFtb3Vu
dDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMl0gPSAwLjA3MmYgLSAwLjA3MmYgKiBhbW91bnQ7
Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjIxM2YgLSAwLjIxM2YgKiBhbW91bnQ7
Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJdWzFdID0gMC43MTVmIC0gMC43MTVmICogYW1vdW50Owot
ICAgIG1hdHJpeC5tX21hdHJpeFsyXVsyXSA9IDAuMDcyZiArIDAuOTI4ZiAqIGFtb3VudDsKLQot
ICAgIHJldHVybiBtYXRyaXg7Ci19Ci0KLUNvbG9yTWF0cml4IENvbG9yTWF0cml4OjpodWVSb3Rh
dGVNYXRyaXgoZmxvYXQgYW5nbGVJbkRlZ3JlZXMpCi17Ci0gICAgZmxvYXQgY29zSHVlID0gY29z
KGRlZzJyYWQoYW5nbGVJbkRlZ3JlZXMpKTsKLSAgICBmbG9hdCBzaW5IdWUgPSBzaW4oZGVnMnJh
ZChhbmdsZUluRGVncmVlcykpOwotCi0gICAgQ29sb3JNYXRyaXggbWF0cml4OwotCi0gICAgLy8g
VmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI2ZlQ29s
b3JNYXRyaXhFbGVtZW50Ci0gICAgbWF0cml4Lm1fbWF0cml4WzBdWzBdID0gMC4yMTNmICsgY29z
SHVlICogMC43ODdmIC0gc2luSHVlICogMC4yMTNmOwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsx
XSA9IDAuNzE1ZiAtIGNvc0h1ZSAqIDAuNzE1ZiAtIHNpbkh1ZSAqIDAuNzE1ZjsKLSAgICBtYXRy
aXgubV9tYXRyaXhbMF1bMl0gPSAwLjA3MmYgLSBjb3NIdWUgKiAwLjA3MmYgKyBzaW5IdWUgKiAw
LjkyOGY7Ci0KLSAgICBtYXRyaXgubV9tYXRyaXhbMV1bMF0gPSAwLjIxM2YgLSBjb3NIdWUgKiAw
LjIxM2YgKyBzaW5IdWUgKiAwLjE0M2Y7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzFdID0gMC43
MTVmICsgY29zSHVlICogMC4yODVmICsgc2luSHVlICogMC4xNDBmOwotICAgIG1hdHJpeC5tX21h
dHJpeFsxXVsyXSA9IDAuMDcyZiAtIGNvc0h1ZSAqIDAuMDcyZiAtIHNpbkh1ZSAqIDAuMjgzZjsK
LQotICAgIG1hdHJpeC5tX21hdHJpeFsyXVswXSA9IDAuMjEzZiAtIGNvc0h1ZSAqIDAuMjEzZiAt
IHNpbkh1ZSAqIDAuNzg3ZjsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjcxNWYgLSBj
b3NIdWUgKiAwLjcxNWYgKyBzaW5IdWUgKiAwLjcxNWY7Ci0gICAgbWF0cml4Lm1fbWF0cml4WzJd
WzJdID0gMC4wNzJmICsgY29zSHVlICogMC45MjhmICsgc2luSHVlICogMC4wNzJmOwotCi0gICAg
cmV0dXJuIG1hdHJpeDsKLX0KLQotQ29sb3JNYXRyaXggQ29sb3JNYXRyaXg6OnNlcGlhTWF0cml4
KGZsb2F0IGFtb3VudCkKLXsKLSAgICBDb2xvck1hdHJpeCBtYXRyaXg7Ci0KLSAgICBmbG9hdCBv
bmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGFtb3VudCwgMC4wLCAxLjApOwotCi0gICAgLy8g
VmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2ZpbHRlci1lZmZlY3RzLTEvI3NlcGlh
RXF1aXZhbGVudAotICAgIG1hdHJpeC5tX21hdHJpeFswXVswXSA9IDAuMzkzZiArIDAuNjA3ZiAq
IG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsxXSA9IDAuNzY5ZiAtIDAu
NzY5ZiAqIG9uZU1pbnVzQW1vdW50OwotICAgIG1hdHJpeC5tX21hdHJpeFswXVsyXSA9IDAuMTg5
ZiAtIDAuMTg5ZiAqIG9uZU1pbnVzQW1vdW50OwotCi0gICAgbWF0cml4Lm1fbWF0cml4WzFdWzBd
ID0gMC4zNDlmIC0gMC4zNDlmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1fbWF0cml4
WzFdWzFdID0gMC42ODZmICsgMC4zMTRmICogb25lTWludXNBbW91bnQ7Ci0gICAgbWF0cml4Lm1f
bWF0cml4WzFdWzJdID0gMC4xNjhmIC0gMC4xNjhmICogb25lTWludXNBbW91bnQ7Ci0KLSAgICBt
YXRyaXgubV9tYXRyaXhbMl1bMF0gPSAwLjI3MmYgLSAwLjI3MmYgKiBvbmVNaW51c0Ftb3VudDsK
LSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMV0gPSAwLjUzNGYgLSAwLjUzNGYgKiBvbmVNaW51c0Ft
b3VudDsKLSAgICBtYXRyaXgubV9tYXRyaXhbMl1bMl0gPSAwLjEzMWYgKyAwLjg2OWYgKiBvbmVN
aW51c0Ftb3VudDsKLQotICAgIHJldHVybiBtYXRyaXg7Ci19Ci0KLXZvaWQgQ29sb3JNYXRyaXg6
OnRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVudHMmIGNvbG9yQ29tcG9uZW50
cykgY29uc3QKLXsKLSAgICBmbG9hdCByZWQgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sw
XTsKLSAgICBmbG9hdCBncmVlbiA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzFdOwotICAg
IGZsb2F0IGJsdWUgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1syXTsKLSAgICBmbG9hdCBh
bHBoYSA9IGNvbG9yQ29tcG9uZW50cy5jb21wb25lbnRzWzNdOwotCi0gICAgY29sb3JDb21wb25l
bnRzLmNvbXBvbmVudHNbMF0gPSBtX21hdHJpeFswXVswXSAqIHJlZCArIG1fbWF0cml4WzBdWzFd
ICogZ3JlZW4gKyBtX21hdHJpeFswXVsyXSAqIGJsdWUgKyBtX21hdHJpeFswXVszXSAqIGFscGhh
ICsgbV9tYXRyaXhbMF1bNF07Ci0gICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMV0gPSBt
X21hdHJpeFsxXVswXSAqIHJlZCArIG1fbWF0cml4WzFdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsx
XVsyXSAqIGJsdWUgKyBtX21hdHJpeFsxXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMV1bNF07Ci0g
ICAgY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl0gPSBtX21hdHJpeFsyXVswXSAqIHJlZCAr
IG1fbWF0cml4WzJdWzFdICogZ3JlZW4gKyBtX21hdHJpeFsyXVsyXSAqIGJsdWUgKyBtX21hdHJp
eFsyXVszXSAqIGFscGhhICsgbV9tYXRyaXhbMl1bNF07Ci0gICAgY29sb3JDb21wb25lbnRzLmNv
bXBvbmVudHNbM10gPSBtX21hdHJpeFszXVswXSAqIHJlZCArIG1fbWF0cml4WzNdWzFdICogZ3Jl
ZW4gKyBtX21hdHJpeFszXVsyXSAqIGJsdWUgKyBtX21hdHJpeFszXVszXSAqIGFscGhhICsgbV9t
YXRyaXhbM11bNF07Ci19Ci0KLUZsb2F0Q29tcG9uZW50cyBDb2xvck1hdHJpeDo6dHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoY29uc3QgRmxvYXRDb21wb25lbnRzJiBjb2xvckNvbXBvbmVudHMp
IGNvbnN0Ci17Ci0gICAgZmxvYXQgcmVkID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMF07
Ci0gICAgZmxvYXQgZ3JlZW4gPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1sxXTsKLSAgICBm
bG9hdCBibHVlID0gY29sb3JDb21wb25lbnRzLmNvbXBvbmVudHNbMl07Ci0gICAgZmxvYXQgYWxw
aGEgPSBjb2xvckNvbXBvbmVudHMuY29tcG9uZW50c1szXTsKLQotICAgIHJldHVybiB7Ci0gICAg
ICAgIG1fbWF0cml4WzBdWzBdICogcmVkICsgbV9tYXRyaXhbMF1bMV0gKiBncmVlbiArIG1fbWF0
cml4WzBdWzJdICogYmx1ZSArIG1fbWF0cml4WzBdWzNdICogYWxwaGEgKyBtX21hdHJpeFswXVs0
XSwKLSAgICAgICAgbV9tYXRyaXhbMV1bMF0gKiByZWQgKyBtX21hdHJpeFsxXVsxXSAqIGdyZWVu
ICsgbV9tYXRyaXhbMV1bMl0gKiBibHVlICsgbV9tYXRyaXhbMV1bM10gKiBhbHBoYSArIG1fbWF0
cml4WzFdWzRdLAotICAgICAgICBtX21hdHJpeFsyXVswXSAqIHJlZCArIG1fbWF0cml4WzJdWzFd
ICogZ3JlZW4gKyBtX21hdHJpeFsyXVsyXSAqIGJsdWUgKyBtX21hdHJpeFsyXVszXSAqIGFscGhh
ICsgbV9tYXRyaXhbMl1bNF0sCi0gICAgICAgIG1fbWF0cml4WzNdWzBdICogcmVkICsgbV9tYXRy
aXhbM11bMV0gKiBncmVlbiArIG1fbWF0cml4WzNdWzJdICogYmx1ZSArIG1fbWF0cml4WzNdWzNd
ICogYWxwaGEgKyBtX21hdHJpeFszXVs0XQotICAgIH07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYyMTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDI1ICsx
OTMsNiBAQCBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IEZsb2F0Q29tcG9uZW50CiAKIEZsb2F0
Q29tcG9uZW50cyBwcmVtdWx0aXBsaWVkKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBv
bnRlbnRzKTsKIAotY2xhc3MgQ29sb3JNYXRyaXggewotcHVibGljOgotICAgIHN0YXRpYyBDb2xv
ck1hdHJpeCBncmF5c2NhbGVNYXRyaXgoZmxvYXQpOwotICAgIHN0YXRpYyBDb2xvck1hdHJpeCBz
YXR1cmF0aW9uTWF0cml4KGZsb2F0KTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggaHVlUm90YXRl
TWF0cml4KGZsb2F0IGFuZ2xlSW5EZWdyZWVzKTsKLSAgICBzdGF0aWMgQ29sb3JNYXRyaXggc2Vw
aWFNYXRyaXgoZmxvYXQpOwotCi0gICAgQ29sb3JNYXRyaXgoKTsKLSAgICBDb2xvck1hdHJpeChj
b25zdCBmbG9hdFsyMF0pOwotICAgIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JDb21wb25lbnRz
KEZsb2F0Q29tcG9uZW50cyYpIGNvbnN0OwotICAgIEZsb2F0Q29tcG9uZW50cyB0cmFuc2Zvcm1l
ZENvbG9yQ29tcG9uZW50cyhjb25zdCBGbG9hdENvbXBvbmVudHMmKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICB2b2lkIG1ha2VJZGVudGl0eSgpOwotCi0gICAgZmxvYXQgbV9tYXRyaXhbNF1bNV07
Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBzdGQgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjYyMTY2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkNvbG9yTWF0cml4LmgiCiAjaW5jbHVkZSAi
Q29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJT
VkdVUklSZWZlcmVuY2UuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>