<?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>8935</bug_id>
          
          <creation_ts>2006-05-16 00:39:54 -0700</creation_ts>
          <short_desc>Split css_base.* into separate files (one per class).</short_desc>
          <delta_ts>2006-05-16 00:45:58 -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>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42446</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-16 00:39:54 -0700</bug_when>
    <thetext>and a partridge in a pear tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42447</commentid>
    <comment_count>1</comment_count>
      <attachid>8344</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-16 00:40:17 -0700</bug_when>
    <thetext>Created attachment 8344
Do the splits! (ignoring whitespace changes, excluding deleted files)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42448</commentid>
    <comment_count>2</comment_count>
      <attachid>8344</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-16 00:41:27 -0700</bug_when>
    <thetext>Comment on attachment 8344
Do the splits! (ignoring whitespace changes, excluding deleted files)

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8344</attachid>
            <date>2006-05-16 00:40:17 -0700</date>
            <delta_ts>2006-05-16 00:41:27 -0700</delta_ts>
            <desc>Do the splits! (ignoring whitespace changes, excluding deleted files)</desc>
            <filename>split.patch</filename>
            <type>text/plain</type>
            <size>82969</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pz
L2tqc19jc3MuY3BwCShyZXZpc2lvbiAxNDQwNykKKysrIGJpbmRpbmdzL2pzL2tqc19jc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiSlNDU1NTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVl
dExpc3QuaCIKLSNpbmNsdWRlICJjc3NfYmFzZS5oIgogI2luY2x1ZGUgImtqc19kb20uaCIKIAog
I2luY2x1ZGUgImtqc19jc3MubHV0LmgiCkluZGV4OiBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVj
bGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24uaAkocmV2aXNpb24gMTQ0MDcpCisrKyBkb20vQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGVFbnRyeS5o
IgorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCklu
ZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDQwNykKKysrIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE4LDYgKzYx
OCwxMyBAQAogCQlBODBFNkRGQzBBMTk5MDY3MDA3RkI4QzUgLyogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MEU2REZBMEExOTkwNjcwMDdGQjhDNSAvKiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5o
ICovOyB9OwogCQlBODBFNkUwRjBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZF
MEQwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLzsgfTsKIAkJQTgw
RTZFMTAwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZFMEUwQTE5OTExQzAw
N0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9OworCQlBODBFNzM0RDBBMTk5
Qzc3MDA3RkI4QzUgLyogU3R5bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU3MzQ2MEExOTlDNzcwMDdGQjhDNSAvKiBTdHlsZUxpc3Qu
Y3BwICovOyB9OworCQlBODBFNzM0RTBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTTmFtZXNwYWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0NzBB
MTk5Qzc3MDA3RkI4QzUgLyogQ1NTTmFtZXNwYWNlLmggKi87IH07CisJCUE4MEU3MzRGMEExOTlD
NzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0ODBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0
b3IuY3BwICovOyB9OworCQlBODBFNzM1MDBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0OTBB
MTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmggKi87IH07CisJCUE4MEU3MzUxMEExOTlDNzcw
MDdGQjhDNSAvKiBTdHlsZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4MEU3MzRBMEExOTlDNzcwMDdGQjhDNSAvKiBTdHlsZUxpc3QuaCAqLzsg
fTsKKwkJQTgwRTczNTIwQTE5OUM3NzAwN0ZCOEM1IC8qIENTU1NlbGVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0QjBBMTk5Qzc3MDA3
RkI4QzUgLyogQ1NTU2VsZWN0b3IuaCAqLzsgfTsKKwkJQTgwRTczNTMwQTE5OUM3NzAwN0ZCOEM1
IC8qIFN0eWxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODBFNzM0QzBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmNwcCAqLzsgfTsK
IAkJQTgxMzY5Q0EwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudC5oICovOyB9OwogCQlBODEzNjlDQjA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUFGMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MSXNJbmRleEVsZW1lbnQuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMg
LyogSFRNTElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxMzY5QjAwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQu
aCAqLzsgfTsKQEAgLTEzMDQsOCArMTMxMSw2IEBACiAJCUJDQzhEMTc0MDk4ODMwMTIwMDE0MEJG
MiAvKiBQZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQzhEMTcyMDk4ODMwMTIwMDE0MEJGMiAvKiBQZW4uaCAqLzsgfTsKIAkJQkNDRDEzMjAwQTBD
MDAzMDAwMUFGQThCIC8qIEZvbnREYXRhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNDRDEzMUUwQTBDMDAzMDAwMUFGQThCIC8qIEZvbnREYXRhLm1t
ICovOyB9OwogCQlCQ0Q3NUFCQzA5ODlBNDQ2MDAzRTI4REYgLyogSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDc1QUJCMDk4OUE0NDYwMDNF
MjhERiAvKiBJbWFnZS5oICovOyB9OwotCQlCQ0VBNDc4RDA5N0NBQUM4MDA5NEM5RTQgLyogY3Nz
X2Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ3N0EwOTdDQUFDODAwOTRDOUU0IC8qIGNzc19iYXNlLmNwcCAqLzsgfTsKLQkJQkNFQTQ3
OEUwOTdDQUFDODAwOTRDOUU0IC8qIGNzc19iYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3QjA5N0NBQUM4MDA5NEM5RTQgLyogY3NzX2Jh
c2UuaCAqLzsgfTsKIAkJQkNFQTQ3OEYwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcCAqLzsgfTsKIAkJQkNFQTQ3OTAwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFQTQ3N0QwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oICovOyB9OwogCQlCQ0VBNDc5ODA5N0NBQUM4MDA5NEM5RTQgLyogY3NzaGVs
cGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0Nzg1MDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NoZWxwZXIuY3BwICovOyB9OwpAQCAtMjAxNCw2
ICsyMDE5LDEzIEBACiAJCUE4MEU2REZBMEExOTkwNjcwMDdGQjhDNSAvKiBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgw
RTZFMEQwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1N0eWxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwRTZFMEUwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODBF
NzM0NjBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBODBFNzM0NzBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTTmFtZXNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTgwRTczNDgwQTE5OUM3NzAwN0ZCOEM1IC8qIENTU1NlbGVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NTZWxlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4MEU3MzQ5MEExOTlDNzcwMDdGQjhD
NSAvKiBTdHlsZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxl
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODBFNzM0QTBBMTk5Qzc3MDA3
RkI4QzUgLyogU3R5bGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHlsZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgwRTczNEIwQTE5OUM3
NzAwN0ZCOEM1IC8qIENTU1NlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODBFNzM0
QzBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBODEwRTM5MzA4QTQxNjBGMDAzMzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtDYW52YXNUcmVl
RGVidWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCUE4MTBFMzk0MDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
S0NhbnZhc1RyZWVEZWJ1Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBODEyMkM3RTA4RDU2NEIwMDA4NDRGQTMgLyogR2V0U1ZH
RG9jdW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0
U1ZHRG9jdW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKQEAgLTI4NDEsOCArMjg1Myw2IEBACiAJCUJDQzhEMTcyMDk4ODMwMTIw
MDE0MEJGMiAvKiBQZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0NEMTMxRTBBMEMwMDMwMDAxQUZBOEIg
LyogRm9udERhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Rm9udERhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDc1QUJCMDk4OUE0
NDYwMDNFMjhERiAvKiBJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ3N0EwOTdDQUFDODAw
OTRDOUU0IC8qIGNzc19iYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBjc3NfYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0NzdC
MDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NfYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY3NzX2Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3
N0MwOTdDQUFDODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3N0QwOTdDQUFD
ODAwOTRDOUU0IC8qIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzdFMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NH
cmFtbWFyLnkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU5MSw4ICs0NjAxLDYgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggKi8s
CiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLAotCQkJCUJD
RUE0NzdBMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NfYmFzZS5jcHAgKi8sCi0JCQkJQkNFQTQ3N0Iw
OTdDQUFDODAwOTRDOUU0IC8qIGNzc19iYXNlLmggKi8sCiAJCQkJQTgwRTZDQkIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU0JvcmRlckltYWdlVmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0REMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDQ0YwQTE5
ODlDQTAwN0ZCOEM1IC8qIENTU0NoYXJzZXRSdWxlLmggKi8sCkBAIC00NjE1LDYgKzQ2MjMsNyBA
QAogCQkJCUE4MEU2Q0Q5MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUuaCAqLywKIAkJ
CQlBODBFNkRGOTBBMTk5MDY3MDA3RkI4QzUgLyogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
Y3BwICovLAogCQkJCUE4MEU2REZBMEExOTkwNjcwMDdGQjhDNSAvKiBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5oICovLAorCQkJCUE4MEU3MzQ3MEExOTlDNzcwMDdGQjhDNSAvKiBDU1NOYW1l
c3BhY2UuaCAqLywKIAkJCQlBODBFNkNDQjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUu
Y3BwICovLAogCQkJCUE4MEU2Q0Q2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVsZS5oICov
LAogCQkJCUJDRUE0Nzg3MDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NwYXJzZXIuY3BwICovLApAQCAt
NDYzMSw2ICs0NjQwLDggQEAKIAkJCQkxNENGN0E3MDA5RjVDRjlBMDBFQjM2NjUgLyogQ1NTUnVs
ZS5pZGwgKi8sCiAJCQkJQTgwRTZDREYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0LmNw
cCAqLywKIAkJCQlBODBFNkNDODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZUxpc3QuaCAqLywK
KwkJCQlBODBFNzM0ODBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuY3BwICovLAorCQkJ
CUE4MEU3MzRCMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5oICovLAogCQkJCUE4MEU2
RTBFMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCAqLywKIAkJCQlB
ODBFNkUwRDBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5oICovLAogCQkJ
CTE0MjAxMUFFMEEwMDMxMTcwMDgzMDNGOSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmlkbCAqLywK
QEAgLTQ2NjMsNiArNDY3NCwxMCBAQAogCQkJCUE4MEU2Q0UwMEExOTg5Q0EwMDdGQjhDNSAvKiBS
ZWN0SW1wbC5oICovLAogCQkJCUE4MEU2Q0NBMEExOTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1
ZS5jcHAgKi8sCiAJCQkJQTgwRTZDQkUwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmgg
Ki8sCisJCQkJQTgwRTczNEMwQTE5OUM3NzAwN0ZCOEM1IC8qIFN0eWxlQmFzZS5jcHAgKi8sCisJ
CQkJQTgwRTczNDkwQTE5OUM3NzAwN0ZCOEM1IC8qIFN0eWxlQmFzZS5oICovLAorCQkJCUE4MEU3
MzQ2MEExOTlDNzcwMDdGQjhDNSAvKiBTdHlsZUxpc3QuY3BwICovLAorCQkJCUE4MEU3MzRBMEEx
OTlDNzcwMDdGQjhDNSAvKiBTdHlsZUxpc3QuaCAqLywKIAkJCQlBOEVBODAwNTBBMTk1MTZFMDBB
OEVGNUYgLyogU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQThFQTgwMDQwQTE5NTE2RTAwQThFRjVG
IC8qIFN0eWxlU2hlZXQuaCAqLywKIAkJCQlBOEVBODAwMzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5
bGVTaGVldExpc3QuY3BwICovLApAQCAtNTI4MSw3ICs1Mjk2LDYgQEAKIAkJCQlCQzFBMzdCRTA5
N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFB
MzdDMDA5N0M3MTVGMDAxOUYzRDggLyogRE9NVmlld3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MUEzN0MyMDk3QzcxNUYwMDE5RjNEOCAvKiBET01WaWV3c0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQ0VBNDc4RTA5N0NBQUM4MDA5NEM5RTQgLyogY3NzX2Jhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRUE0NzkwMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0NzlCMDk3Q0FBQzgwMDk0QzlFNCAv
KiBjc3NwYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0NzlFMDk3Q0FBQzgwMDk0QzlF
NCAvKiBjc3NzdHlsZXNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU2NTcsNiArNTY3MSwx
MCBAQAogCQkJCUE4MEU2RDBEMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NSdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkRGQzBBMTk5MDY3MDA3RkI4QzUgLyogQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RTBGMEExOTkxMUMwMDdGQjhDNSAv
KiBDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODBFNzM0RTBBMTk5
Qzc3MDA3RkI4QzUgLyogQ1NTTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODBFNzM1
MDBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODBF
NzM1MTBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
ODBFNzM1MjBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtNjEzOSw3ICs2MTU3LDYgQEAKIAkJCQlCQzFBMzdCQTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
SW50ZXJuYWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCRjA5N0M3MTVGMDAxOUYzRDgg
LyogRE9NVXRpbGl0eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMUEzN0MxMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01WaWV3cy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDRUE0NzhEMDk3Q0FBQzgw
MDk0QzlFNCAvKiBjc3NfYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDc4RjA5N0NB
QUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRUE0Nzk4MDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3NoZWxwZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQTQ3OUEwOTdDQUFDODAwOTRDOUU0IC8qIGNzc3BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTY0ODQsNiArNjUwMSw5IEBACiAJCQkJQTgwRTZEMDkwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2REZC
MEExOTkwNjcwMDdGQjhDNSAvKiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODBFNkUxMDBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODBFNzM0RDBBMTk5Qzc3MDA3RkI4QzUgLyog
U3R5bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4MEU3MzRGMEExOTlDNzcwMDdGQjhD
NSAvKiBDU1NTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODBFNzM1MzBBMTk5Qzc3
MDA3RkI4QzUgLyogU3R5bGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTQ0MDcpCisrKyBDaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MSBAQAorMjAwNi0wNS0xNiAgRXJpYyBTZWlkZWwg
IDxlc2VpZGVsQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9ranNfY3NzLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBj
c3MvQ1NTQ2hhcnNldFJ1bGUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxlLmg6Cisg
ICAgICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTSW1wb3J0UnVsZS5o
OgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHA6CisgICAgICAgICogY3NzL0NT
U0luaXRpYWxWYWx1ZS5jcHA6CisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5oOgorICAgICAg
ICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NO
YW1lc3BhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NOYW1lc3BhY2U6OkNTU05h
bWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NOYW1lc3BhY2U6Om5hbWVzcGFjZUZvclBy
ZWZpeCk6CisgICAgICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAg
KiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5oOgorICAgICAgICAq
IGNzcy9DU1NSdWxlTGlzdC5jcHA6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAgICAgICAqIGNz
cy9DU1NTdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojp+Q1NTU3R5bGVTaGVldCk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6Cisg
ICAgICAgICogY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHA6CisgICAgICAgICogY3NzL0ZvbnRWYWx1
ZS5jcHA6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgorICAgICAgICAqIGNzcy9NZWRpYUxp
c3QuaDoKKyAgICAgICAgKiBjc3MvU2hhZG93VmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9TaGFk
b3dWYWx1ZS5oOgorICAgICAgICAqIGNzcy9TdHlsZUJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQmFzZTo6c3R5bGVzaGVldCk6CisgICAgICAgICogY3NzL1N0eWxlQmFz
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQmFzZTo6U3R5bGVCYXNlKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVMaXN0LmNwcDogQWRkZWQuCisgICAgICAgICogY3NzL1N0eWxlTGlz
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9j
c3NfYmFzZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL2Nzc19iYXNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogY3NzL2Nzc3BhcnNlci5jcHA6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2Vs
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxl
c0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmg6CisgICAgICAgICog
ZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpTVkdDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0UkdCQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29sb3I6OnNldFJHQkNvbG9ySUNDQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Q29sb3I6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjc3NUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjb2xvcik6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0NvbG9yLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpjbGFzc05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0eWxlZEVsZW1lbnQ6OnVwZGF0ZUNhbnZhc0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQpOgorCiAyMDA2LTA1LTE1ICBF
cmljIFNlaWRlbCAgPGVzZWlkZWxAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGh5
YXR0LgpJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAx
NDQwNykKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MTUsMTEgKzE4MTUsMzEgQEAKIAkJCU5hbWU9ImNzcyINCiAJCQk+DQogCQkJ
PEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjc3NcY3NzX2Jhc2UuY3BwIg0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGNzc1xDU1NTZWxlY3Rvci5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjc3NcY3NzX2Jhc2UuaCIN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxjc3NcQ1NTU2VsZWN0b3IuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNzc1xTdHlsZUJh
c2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5cY3NzXFN0eWxlQmFzZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY3NzXENTU05hbWVzcGFjZS5oIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cY3NzXFN0eWxl
TGlzdC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxjc3NcU3R5bGVMaXN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCkluZGV4OiBjc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTU2VsZWN0
b3IuaAkocmV2aXNpb24gMTQ0MDYpCisrKyBjc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNTkgKzIxLDM5IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAq
LwogCi0jaWZuZGVmIENTU19CQVNFX0gKLSNkZWZpbmUgQ1NTX0JBU0VfSAorI2lmbmRlZiBDU1NT
ZWxlY3Rvcl9ICisjZGVmaW5lIENTU1NlbGVjdG9yX0gKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5h
bWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIFN0eWxlU2hlZXQ7Ci0gICAgY2xhc3MgTWVkaWFMaXN0OwotCi0gICAgY2xhc3Mg
Q1NTU2VsZWN0b3I7Ci0gICAgY2xhc3MgQ1NTUHJvcGVydHk7Ci0gICAgY2xhc3MgQ1NTVmFsdWU7
Ci0gICAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci0gICAgY2xhc3MgQ1NTUnVsZTsKLSAgICBj
bGFzcyBDU1NTdHlsZVJ1bGU7Ci0KLSAgICBjbGFzcyBEb2N1bWVudDsKLQotICAgIHN0cnVjdCBD
U1NOYW1lc3BhY2UgewotICAgICAgICBBdG9taWNTdHJpbmcgbV9wcmVmaXg7Ci0gICAgICAgIEF0
b21pY1N0cmluZyBtX3VyaTsKLSAgICAgICAgQ1NTTmFtZXNwYWNlKiBtX3BhcmVudDsKLQotICAg
ICAgICBDU1NOYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwLCBjb25zdCBBdG9taWNTdHJp
bmcmIHUsIENTU05hbWVzcGFjZSogcGFyZW50KSAKLSAgICAgICAgICAgIDptX3ByZWZpeChwKSwg
bV91cmkodSksIG1fcGFyZW50KHBhcmVudCkge30KLSAgICAgICAgfkNTU05hbWVzcGFjZSgpIHsg
ZGVsZXRlIG1fcGFyZW50OyB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4KCkgeyByZXR1cm4gbV9wcmVmaXg7IH0KLSAgICAgICAgCi0gICAgICAgIENTU05hbWVzcGFj
ZSogbmFtZXNwYWNlRm9yUHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KSB7Ci0gICAg
ICAgICAgICBpZiAocHJlZml4ID09IG1fcHJlZml4KQotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwotICAgICAgICAgICAgaWYgKG1fcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBt
X3BhcmVudC0+bmFtZXNwYWNlRm9yUHJlZml4KHByZWZpeCk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCiAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBz
ZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUKICAgICBjbGFzcyBDU1NTZWxlY3RvcgogICAgIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIENTU1NlbGVjdG9yKCkKLSAgICAgICAgICAgIDogdGFnSGlzdG9y
eSgwKSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgYXR0cihhbnlRTmFtZSgp
KSwgdGFnKGFueVFOYW1lKCkpLAotICAgICAgICAgICAgICBtX3JlbGF0aW9uKERlc2NlbmRhbnQp
LCBtYXRjaChOb25lKSwgcHNldWRvSWQoMCksIF9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkK
KyAgICAgICAgICAgIDogdGFnSGlzdG9yeSgwKQorICAgICAgICAgICAgLCBzaW1wbGVTZWxlY3Rv
cigwKQorICAgICAgICAgICAgLCBuZXh0U2VsZWN0b3IoMCkKKyAgICAgICAgICAgICwgYXR0cihh
bnlRTmFtZSgpKQorICAgICAgICAgICAgLCB0YWcoYW55UU5hbWUoKSkKKyAgICAgICAgICAgICwg
bV9yZWxhdGlvbihEZXNjZW5kYW50KQorICAgICAgICAgICAgLCBtYXRjaChOb25lKQorICAgICAg
ICAgICAgLCBwc2V1ZG9JZCgwKQorICAgICAgICAgICAgLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQ
YXJzZWQpCiAgICAgICAgIHt9CiAgICAgICAgIAogICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBR
dWFsaWZpZWROYW1lJiBxTmFtZSkKLSAgICAgICAgICAgIDogdGFnSGlzdG9yeSgwKSwgc2ltcGxl
U2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgYXR0cihhbnlRTmFtZSgpKSwgdGFnKHFOYW1l
KSwKLSAgICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0Y2goTm9uZSksIHBz
ZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCisgICAgICAgICAgICA6IHRh
Z0hpc3RvcnkoMCkKKyAgICAgICAgICAgICwgc2ltcGxlU2VsZWN0b3IoMCkKKyAgICAgICAgICAg
ICwgbmV4dFNlbGVjdG9yKDApCisgICAgICAgICAgICAsIGF0dHIoYW55UU5hbWUoKSkKKyAgICAg
ICAgICAgICwgdGFnKHFOYW1lKQorICAgICAgICAgICAgLCBtX3JlbGF0aW9uKERlc2NlbmRhbnQp
CisgICAgICAgICAgICAsIG1hdGNoKE5vbmUpCisgICAgICAgICAgICAsIHBzZXVkb0lkKDApCisg
ICAgICAgICAgICAsIF9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKICAgICAgICAge30KIAog
ICAgICAgICB+Q1NTU2VsZWN0b3IoKSB7CkBAIC0xOTIsNzMgKzE3Miw2IEBACiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0OwogICAgIH07Ci0KLSAg
ICAvLyBhIHN0eWxlIGNsYXNzIHdoaWNoIGhhcyBhIHBhcmVudCAoYWxtb3N0IGFsbCBoYXZlKQot
ICAgIGNsYXNzIFN0eWxlQmFzZSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVCYXNlPiB7Ci0gICAgcHVi
bGljOgotICAgICAgICBTdHlsZUJhc2UoU3R5bGVCYXNlKiBwYXJlbnQpCi0gICAgICAgICAgICA6
IG1fcGFyZW50KHBhcmVudCksIG1fc3RyaWN0UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNl
U3RyaWN0UGFyc2luZygpKSB7IH0KLSAgICAgICAgdmlydHVhbCB+U3R5bGVCYXNlKCkgeyB9Ci0K
LSAgICAgICAgU3R5bGVCYXNlKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQot
ICAgICAgICB2b2lkIHNldFBhcmVudChTdHlsZUJhc2UqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBh
cmVudDsgfQotCi0gICAgICAgIC8vIHJldHVybnMgdGhlIHVybCBvZiB0aGUgc3R5bGUgc2hlZXQg
dGhpcyBvYmplY3QgYmVsb25ncyB0bwotICAgICAgICBTdHJpbmcgYmFzZVVSTCgpOwotCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlU2hlZXRMaXN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzTWVkaWFMaXN0KCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUnVsZUxpc3QoKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSdWxlKCkgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVSdWxlKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ2hhcmV0UnVsZSgpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0ltcG9ydFJ1bGUoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVJ1bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNGb250RmFjZVJ1bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlUnVsZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc1Vua25vd25SdWxlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAg
dmlydHVhbCBib29sIGlzU3R5bGVEZWNsYXJhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmly
dHVhbCBib29sIGlzUHJpbWl0aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUxpc3QoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWx1ZUN1c3RvbSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAg
ICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIGJvb2wgLypzdHJpY3Qq
LyA9IGZhbHNlKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tM
b2FkZWQoKTsKLQotICAgICAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fc3Ry
aWN0UGFyc2luZyA9IGI7IH0KLSAgICAgICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b1BhcmVudCgpIHsgfQotCi0gICAgICAgIFN0eWxlU2hlZXQqIHN0eWxlc2hlZXQoKTsK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0eWxlQmFzZSogbV9wYXJlbnQ7Ci0gICAgICAgIGJv
b2wgbV9zdHJpY3RQYXJzaW5nOwotICAgIH07Ci0KLSAgICAvLyBhIHN0eWxlIGNsYXNzIHdoaWNo
IGhhcyBhIGxpc3Qgb2YgY2hpbGRyZW4gKFN0eWxlU2hlZXRzIGZvciBleGFtcGxlKQotICAgIGNs
YXNzIFN0eWxlTGlzdCA6IHB1YmxpYyBTdHlsZUJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAg
U3R5bGVMaXN0KFN0eWxlQmFzZSogcGFyZW50KSA6IFN0eWxlQmFzZShwYXJlbnQpIHsgfQotCi0g
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fY2hpbGRyZW4uc2l6ZSgpOyB9Ci0g
ICAgICAgIFN0eWxlQmFzZSogaXRlbSh1bnNpZ25lZCBudW0pIHsgcmV0dXJuIG51bSA8IGxlbmd0
aCgpID8gbV9jaGlsZHJlbltudW1dLmdldCgpIDogMDsgfQotCi0gICAgICAgIHZvaWQgYXBwZW5k
KFBhc3NSZWZQdHI8U3R5bGVCYXNlPik7Ci0gICAgICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIHBv
c2l0aW9uLCBQYXNzUmVmUHRyPFN0eWxlQmFzZT4pOwotICAgICAgICB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBwb3NpdGlvbik7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
U3R5bGVCYXNlPiA+IG1fY2hpbGRyZW47Ci0gICAgfTsKLQotICAgIGludCBnZXRQcm9wZXJ0eUlE
KGNvbnN0IGNoYXIgKnRhZ1N0ciwgaW50IGxlbik7Ci0KIH0KIAogI2VuZGlmCkluZGV4OiBjc3Mv
U3R5bGVCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL1N0eWxlQmFzZS5oCShyZXZpc2lvbiAxNDQw
NikKKysrIGNzcy9TdHlsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTgzICsyMSwyMyBA
QAogICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NfQkFT
RV9ICi0jZGVmaW5lIENTU19CQVNFX0gKKyNpZm5kZWYgU3R5bGVCYXNlX0gKKyNkZWZpbmUgU3R5
bGVCYXNlX0gKIAotI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSAiU2hhcmVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAg
IGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBTdHlsZVNoZWV0OwotICAgIGNsYXNzIE1lZGlhTGlz
dDsKLQotICAgIGNsYXNzIENTU1NlbGVjdG9yOwotICAgIGNsYXNzIENTU1Byb3BlcnR5OwotICAg
IGNsYXNzIENTU1ZhbHVlOwotICAgIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwotICAgIGNsYXNz
IENTU1J1bGU7Ci0gICAgY2xhc3MgQ1NTU3R5bGVSdWxlOwotCi0gICAgY2xhc3MgRG9jdW1lbnQ7
Ci0KLSAgICBzdHJ1Y3QgQ1NTTmFtZXNwYWNlIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fcHJl
Zml4OwotICAgICAgICBBdG9taWNTdHJpbmcgbV91cmk7Ci0gICAgICAgIENTU05hbWVzcGFjZSog
bV9wYXJlbnQ7Ci0KLSAgICAgICAgQ1NTTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcCwg
Y29uc3QgQXRvbWljU3RyaW5nJiB1LCBDU1NOYW1lc3BhY2UqIHBhcmVudCkgCi0gICAgICAgICAg
ICA6bV9wcmVmaXgocCksIG1fdXJpKHUpLCBtX3BhcmVudChwYXJlbnQpIHt9Ci0gICAgICAgIH5D
U1NOYW1lc3BhY2UoKSB7IGRlbGV0ZSBtX3BhcmVudDsgfQotICAgICAgICAKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCgpIHsgcmV0dXJuIG1fcHJlZml4OyB9Ci0gICAgICAgIAotICAg
ICAgICBDU1NOYW1lc3BhY2UqIG5hbWVzcGFjZUZvclByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCkgewotICAgICAgICAgICAgaWYgKHByZWZpeCA9PSBtX3ByZWZpeCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbV9wYXJlbnQtPm5hbWVzcGFjZUZvclByZWZpeChwcmVmaXgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotLy8gdGhpcyBjbGFz
cyByZXByZXNlbnRzIGEgc2VsZWN0b3IgZm9yIGEgU3R5bGVSdWxlCi0gICAgY2xhc3MgQ1NTU2Vs
ZWN0b3IKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICBDU1NTZWxlY3RvcigpCi0gICAgICAg
ICAgICA6IHRhZ0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0U2VsZWN0b3IoMCks
IGF0dHIoYW55UU5hbWUoKSksIHRhZyhhbnlRTmFtZSgpKSwKLSAgICAgICAgICAgICAgbV9yZWxh
dGlvbihEZXNjZW5kYW50KSwgbWF0Y2goTm9uZSksIHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQ
c2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICBDU1NTZWxlY3Rv
cihjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKLSAgICAgICAgICAgIDogdGFnSGlzdG9yeSgw
KSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgYXR0cihhbnlRTmFtZSgpKSwg
dGFnKHFOYW1lKSwKLSAgICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0Y2go
Tm9uZSksIHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAg
IHt9Ci0KLSAgICAgICAgfkNTU1NlbGVjdG9yKCkgewotICAgICAgICAgICAgZGVsZXRlIHRhZ0hp
c3Rvcnk7Ci0gICAgICAgICAgICBkZWxldGUgc2ltcGxlU2VsZWN0b3I7Ci0gICAgICAgICAgICBk
ZWxldGUgbmV4dFNlbGVjdG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhcHBlbmQoQ1NT
U2VsZWN0b3IqIG4pIHsKLSAgICAgICAgICAgIENTU1NlbGVjdG9yKiBlbmQgPSB0aGlzOwotICAg
ICAgICAgICAgd2hpbGUgKGVuZC0+bmV4dFNlbGVjdG9yKQotICAgICAgICAgICAgICAgIGVuZCA9
IGVuZC0+bmV4dFNlbGVjdG9yOwotICAgICAgICAgICAgZW5kLT5uZXh0U2VsZWN0b3IgPSBuOwot
ICAgICAgICB9Ci0gICAgICAgIENTU1NlbGVjdG9yKiBuZXh0KCkgeyByZXR1cm4gbmV4dFNlbGVj
dG9yOyB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIFByaW50IGRlYnVnIG91dHB1dCBmb3Ig
dGhpcyBzZWxlY3RvcgotICAgICAgICAgKi8KLSAgICAgICAgdm9pZCBwcmludCgpOwotCi0gICAg
ICAgIC8qKgotICAgICAgICAgKiBSZS1jcmVhdGUgc2VsZWN0b3IgdGV4dCBmcm9tIHNlbGVjdG9y
J3MgZGF0YQotICAgICAgICAgKi8KLSAgICAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCgpIGNvbnN0
OwotCi0gICAgICAgIC8vIGNoZWNrcyBpZiB0aGUgMiBzZWxlY3RvcnMgKGluY2x1ZGluZyBzdWIg
c2VsZWN0b3JzKSBhZ3JlZS4KLSAgICAgICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBDU1NTZWxl
Y3RvciYpOwotCi0gICAgICAgIC8vIHRhZyA9PSAtMSBtZWFucyBhcHBseSB0byBhbGwgZWxlbWVu
dHMgKFNlbGVjdG9yID0gKikKLQotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eSgpOwotCi0g
ICAgICAgIC8qIGhvdyB0aGUgYXR0cmlidXRlIHZhbHVlIGhhcyB0byBtYXRjaC4uLi4gRGVmYXVs
dCBpcyBFeGFjdCAqLwotICAgICAgICBlbnVtIE1hdGNoIHsKLSAgICAgICAgICAgIE5vbmUgPSAw
LAotICAgICAgICAgICAgSWQsCi0gICAgICAgICAgICBDbGFzcywKLSAgICAgICAgICAgIEV4YWN0
LAotICAgICAgICAgICAgU2V0LAotICAgICAgICAgICAgTGlzdCwKLSAgICAgICAgICAgIEh5cGhl
biwKLSAgICAgICAgICAgIFBzZXVkb0NsYXNzLAotICAgICAgICAgICAgUHNldWRvRWxlbWVudCwK
LSAgICAgICAgICAgIENvbnRhaW4sICAgLy8gY3NzMzogRVtmb28qPSJiYXIiXQotICAgICAgICAg
ICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zvb149ImJhciJdCi0gICAgICAgICAgICBFbmQgICAg
ICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIFJl
bGF0aW9uIHsKLSAgICAgICAgICAgIERlc2NlbmRhbnQgPSAwLAotICAgICAgICAgICAgQ2hpbGQs
Ci0gICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKLSAgICAgICAgICAgIEluZGlyZWN0QWRqYWNl
bnQsCi0gICAgICAgICAgICBTdWJTZWxlY3RvcgotICAgICAgICB9OwotCi0gICAgICAgIGVudW0g
UHNldWRvVHlwZSB7Ci0gICAgICAgICAgICBQc2V1ZG9Ob3RQYXJzZWQgPSAwLAotICAgICAgICAg
ICAgUHNldWRvT3RoZXIsCi0gICAgICAgICAgICBQc2V1ZG9FbXB0eSwKLSAgICAgICAgICAgIFBz
ZXVkb0ZpcnN0Q2hpbGQsCi0gICAgICAgICAgICBQc2V1ZG9GaXJzdE9mVHlwZSwKLSAgICAgICAg
ICAgIFBzZXVkb0xhc3RDaGlsZCwKLSAgICAgICAgICAgIFBzZXVkb0xhc3RPZlR5cGUsCi0gICAg
ICAgICAgICBQc2V1ZG9Pbmx5Q2hpbGQsCi0gICAgICAgICAgICBQc2V1ZG9Pbmx5T2ZUeXBlLAot
ICAgICAgICAgICAgUHNldWRvRmlyc3RMaW5lLAotICAgICAgICAgICAgUHNldWRvRmlyc3RMZXR0
ZXIsCi0gICAgICAgICAgICBQc2V1ZG9MaW5rLAotICAgICAgICAgICAgUHNldWRvVmlzaXRlZCwK
LSAgICAgICAgICAgIFBzZXVkb0FueUxpbmssCi0gICAgICAgICAgICBQc2V1ZG9BdXRvZmlsbCwK
LSAgICAgICAgICAgIFBzZXVkb0hvdmVyLAotICAgICAgICAgICAgUHNldWRvRHJhZywKLSAgICAg
ICAgICAgIFBzZXVkb0ZvY3VzLAotICAgICAgICAgICAgUHNldWRvQWN0aXZlLAotICAgICAgICAg
ICAgUHNldWRvQ2hlY2tlZCwKLSAgICAgICAgICAgIFBzZXVkb0VuYWJsZWQsCi0gICAgICAgICAg
ICBQc2V1ZG9EaXNhYmxlZCwKLSAgICAgICAgICAgIFBzZXVkb0luZGV0ZXJtaW5hdGUsCi0gICAg
ICAgICAgICBQc2V1ZG9UYXJnZXQsCi0gICAgICAgICAgICBQc2V1ZG9CZWZvcmUsCi0gICAgICAg
ICAgICBQc2V1ZG9BZnRlciwKLSAgICAgICAgICAgIFBzZXVkb0xhbmcsCi0gICAgICAgICAgICBQ
c2V1ZG9Ob3QsCi0gICAgICAgICAgICBQc2V1ZG9Sb290LAotICAgICAgICAgICAgUHNldWRvU2Vs
ZWN0aW9uCi0gICAgICAgIH07Ci0KLSAgICAgICAgUHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKF9wc2V1ZG9UeXBlID09IFBzZXVkb05vdFBh
cnNlZCkKLSAgICAgICAgICAgICAgICBleHRyYWN0UHNldWRvVHlwZSgpOwotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb1R5cGU+KF9wc2V1ZG9UeXBlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgaGFzVGFnKCkgY29uc3QgeyByZXR1cm4gdGFnICE9IGFueVFOYW1lKCk7
IH0KLSAgICAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBhdHRyICE9IGFu
eVFOYW1lKCk7IH0KLQotICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyB2YWx1ZTsKLSAgICAg
ICAgQ1NTU2VsZWN0b3IqIHRhZ0hpc3Rvcnk7Ci0gICAgICAgIENTU1NlbGVjdG9yKiBzaW1wbGVT
ZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KLSAgICAgICAgQ1NTU2VsZWN0b3IqIG5leHRTZWxl
Y3RvcjsgLy8gdXNlZCBmb3IgLC1jaGFpbmVkIHNlbGVjdG9ycwotICAgICAgICAKLSAgICAgICAg
UXVhbGlmaWVkTmFtZSBhdHRyOwotICAgICAgICBRdWFsaWZpZWROYW1lIHRhZzsKLSAgICAgICAg
Ci0gICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAg
ICAgICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KLSAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
YXRjaCAgICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gKLSAgICAgICAgdW5zaWduZWQgcHNldWRvSWQg
ICAgICAgICAgICA6IDM7Ci0gICAgICAgIG11dGFibGUgdW5zaWduZWQgX3BzZXVkb1R5cGUgOiA1
OyAvLyBQc2V1ZG9UeXBlCi0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGV4dHJhY3RQc2V1
ZG9UeXBlKCkgY29uc3Q7Ci0gICAgfTsKIAogICAgIC8vIGEgc3R5bGUgY2xhc3Mgd2hpY2ggaGFz
IGEgcGFyZW50IChhbG1vc3QgYWxsIGhhdmUpCiAgICAgY2xhc3MgU3R5bGVCYXNlIDogcHVibGlj
IFNoYXJlZDxTdHlsZUJhc2U+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0eWxlQmFzZShTdHls
ZUJhc2UqIHBhcmVudCkKLSAgICAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KSwgbV9zdHJpY3RQ
YXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCkpIHsgfQorICAgICAg
ICAgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgICAgICAgICAsIG1fc3RyaWN0UGFyc2luZygh
cGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpKQorICAgICAgICB7IH0KICAgICAg
ICAgdmlydHVhbCB+U3R5bGVCYXNlKCkgeyB9CiAKICAgICAgICAgU3R5bGVCYXNlKiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQpAQCAtMjQwLDI1ICs4MCw2IEBACiAgICAgICAg
IFN0eWxlQmFzZSogbV9wYXJlbnQ7CiAgICAgICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nOwogICAg
IH07Ci0KLSAgICAvLyBhIHN0eWxlIGNsYXNzIHdoaWNoIGhhcyBhIGxpc3Qgb2YgY2hpbGRyZW4g
KFN0eWxlU2hlZXRzIGZvciBleGFtcGxlKQotICAgIGNsYXNzIFN0eWxlTGlzdCA6IHB1YmxpYyBT
dHlsZUJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgU3R5bGVMaXN0KFN0eWxlQmFzZSogcGFy
ZW50KSA6IFN0eWxlQmFzZShwYXJlbnQpIHsgfQotCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCgp
IHsgcmV0dXJuIG1fY2hpbGRyZW4uc2l6ZSgpOyB9Ci0gICAgICAgIFN0eWxlQmFzZSogaXRlbSh1
bnNpZ25lZCBudW0pIHsgcmV0dXJuIG51bSA8IGxlbmd0aCgpID8gbV9jaGlsZHJlbltudW1dLmdl
dCgpIDogMDsgfQotCi0gICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U3R5bGVCYXNlPik7
Ci0gICAgICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIHBvc2l0aW9uLCBQYXNzUmVmUHRyPFN0eWxl
QmFzZT4pOwotICAgICAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbik7Ci0KLSAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVCYXNlPiA+IG1fY2hpbGRyZW47
Ci0gICAgfTsKLQotICAgIGludCBnZXRQcm9wZXJ0eUlEKGNvbnN0IGNoYXIgKnRhZ1N0ciwgaW50
IGxlbik7Ci0KIH0KIAogI2VuZGlmCkluZGV4OiBjc3MvQ1NTU3R5bGVSdWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjc3MvQ1NTU3R5bGVSdWxlLmNwcAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NT
U3R5bGVSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
aCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5k
ZXg6IGNzcy9DU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTU3R5bGVTaGVl
dC5jcHAJKHJldmlzaW9uIDE0NDA3KQorKysgY3NzL0NTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogCiAj
aW5jbHVkZSAiQ1NTSW1wb3J0UnVsZS5oIgorI2luY2x1ZGUgIkNTU05hbWVzcGFjZS5oIgogI2lu
Y2x1ZGUgImNzc3BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKQEAgLTU1LDYgKzU2LDExIEBACiB7CiB9CiAKK0NTU1N0eWxlU2hlZXQ6On5D
U1NTdHlsZVNoZWV0KCkKK3sKKyAgICBkZWxldGUgbV9uYW1lc3BhY2VzOworfQorCiBDU1NSdWxl
ICpDU1NTdHlsZVNoZWV0Ojpvd25lclJ1bGUoKSBjb25zdAogewogICAgIHJldHVybiAocGFyZW50
KCkgJiYgcGFyZW50KCktPmlzUnVsZSgpKSA/IHN0YXRpY19jYXN0PENTU1J1bGUqPihwYXJlbnQo
KSkgOiAwOwpJbmRleDogY3NzL0NTU1Byb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1By
b3BlcnR5LmgJKHJldmlzaW9uIDE0NDA3KQorKysgY3NzL0NTU1Byb3BlcnR5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogY3NzL0ZvbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9G
b250VmFsdWUuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvRm9udFZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDkgKzI0LDExIEBACiAjZGVmaW5lIEZvbnRWYWx1ZV9ICiAKICNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlTGlzdDsKIAog
Y2xhc3MgRm9udFZhbHVlIDogcHVibGljIENTU1ZhbHVlCkluZGV4OiBjc3MvQ1NTUGFnZVJ1bGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTUGFnZVJ1bGUuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBj
c3MvQ1NTUGFnZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmlu
ZSBDU1NQYWdlUnVsZV9ICiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNzcy9DU1NTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMTQ0MDYpCisr
KyBjc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4MSArMjIsMTEgQEAK
ICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICovCi0KICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJjc3NfYmFzZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFN0eWxlQmFzZTo6Y2hlY2tMb2FkZWQoKQot
ewotICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgcGFyZW50KCktPmNoZWNrTG9hZGVkKCk7Ci19
Ci0KLVN0eWxlU2hlZXQqIFN0eWxlQmFzZTo6c3R5bGVzaGVldCgpCi17Ci0gICAgU3R5bGVCYXNl
ICpiID0gdGhpczsKLSAgICB3aGlsZSAoYiAmJiAhYi0+aXNTdHlsZVNoZWV0KCkpCi0gICAgICAg
IGIgPSBiLT5wYXJlbnQoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3R5bGVTaGVldCAqPihi
KTsKLX0KLQotU3RyaW5nIFN0eWxlQmFzZTo6YmFzZVVSTCgpCi17Ci0gICAgLy8gdHJ5IHRvIGZp
bmQgdGhlIHN0eWxlIHNoZWV0LiBJZiBmb3VuZCBsb29rIGZvciBpdHMgdXJsLgotICAgIC8vIElm
IGl0IGhhcyBub25lLCBsb29rIGZvciB0aGUgcGFyZW50c2hlZXQsIG9yIHRoZSBwYXJlbnROb2Rl
IGFuZAotICAgIC8vIHRyeSB0byBmaW5kIG91dCBhYm91dCB0aGVpciB1cmwKLQotICAgIFN0eWxl
U2hlZXQqIHNoZWV0ID0gc3R5bGVzaGVldCgpOwotCi0gICAgaWYgKCFzaGVldCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYgKCFzaGVldC0+aHJlZigpLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gc2hlZXQtPmhyZWYoKTsKLQotICAgIC8vIGZpbmQgcGFyZW50Ci0gICAgaWYg
KHNoZWV0LT5wYXJlbnQoKSkgCi0gICAgICAgIHJldHVybiBzaGVldC0+cGFyZW50KCktPmJhc2VV
UkwoKTsKLQotICAgIGlmICghc2hlZXQtPm93bmVyTm9kZSgpKSAKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgcmV0dXJuIHNoZWV0LT5vd25lck5vZGUoKS0+ZG9jdW1lbnQoKS0+YmFz
ZVVSTCgpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBTdHlsZUxpc3Q6
OmFwcGVuZChQYXNzUmVmUHRyPFN0eWxlQmFzZT4gY2hpbGQpCi17Ci0gICAgU3R5bGVCYXNlKiBj
ID0gY2hpbGQuZ2V0KCk7Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwotICAgIGMtPmlu
c2VydGVkSW50b1BhcmVudCgpOwotfQotCi12b2lkIFN0eWxlTGlzdDo6aW5zZXJ0KHVuc2lnbmVk
IHBvc2l0aW9uLCBQYXNzUmVmUHRyPFN0eWxlQmFzZT4gY2hpbGQpCi17Ci0gICAgU3R5bGVCYXNl
KiBjID0gY2hpbGQuZ2V0KCk7Ci0gICAgaWYgKHBvc2l0aW9uID49IGxlbmd0aCgpKQotICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7Ci0gICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVu
Lmluc2VydChwb3NpdGlvbiwgY2hpbGQpOwotICAgIGMtPmluc2VydGVkSW50b1BhcmVudCgpOwot
fQotCi12b2lkIFN0eWxlTGlzdDo6cmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uKQotewotICAgIGlm
IChwb3NpdGlvbiA+PSBsZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2hpbGRyZW4u
cmVtb3ZlKHBvc2l0aW9uKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogdm9p
ZCBDU1NTZWxlY3Rvcjo6cHJpbnQoKQogewogICAgIGlmICh0YWdIaXN0b3J5KQpAQCAtMjQxLDcg
KzE3MSw2IEBACiAgICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3RoZXI7CiB9CiAKLQogYm9v
bCBDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKGNvbnN0IENTU1NlbGVjdG9yICZvdGhlcikKIHsK
ICAgICBjb25zdCBDU1NTZWxlY3RvciAqc2VsMSA9IHRoaXM7CkBAIC0zMzcsNiArMjY2LDQgQEAK
ICAgICByZXR1cm4gc3RyOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIH0KSW5kZXg6
IGNzcy9TdHlsZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9TdHlsZUJhc2UuY3BwCShyZXZp
c2lvbiAxNDQwNikKKysrIGNzcy9TdHlsZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
MSArMjIsMTEgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
ICovCi0KICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJjc3NfYmFzZS5oIgorI2luY2x1
ZGUgIlN0eWxlQmFzZS5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
OSwyNzQgKzY5LDQgQEAKICAgICByZXR1cm4gc2hlZXQtPm93bmVyTm9kZSgpLT5kb2N1bWVudCgp
LT5iYXNlVVJMKCk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12b2lkIFN0eWxl
TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U3R5bGVCYXNlPiBjaGlsZCkKLXsKLSAgICBTdHlsZUJh
c2UqIGMgPSBjaGlsZC5nZXQoKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7Ci0gICAg
Yy0+aW5zZXJ0ZWRJbnRvUGFyZW50KCk7Ci19Ci0KLXZvaWQgU3R5bGVMaXN0OjppbnNlcnQodW5z
aWduZWQgcG9zaXRpb24sIFBhc3NSZWZQdHI8U3R5bGVCYXNlPiBjaGlsZCkKLXsKLSAgICBTdHls
ZUJhc2UqIGMgPSBjaGlsZC5nZXQoKTsKLSAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKCkpCi0g
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG1fY2hp
bGRyZW4uaW5zZXJ0KHBvc2l0aW9uLCBjaGlsZCk7Ci0gICAgYy0+aW5zZXJ0ZWRJbnRvUGFyZW50
KCk7Ci19Ci0KLXZvaWQgU3R5bGVMaXN0OjpyZW1vdmUodW5zaWduZWQgcG9zaXRpb24pCi17Ci0g
ICAgaWYgKHBvc2l0aW9uID49IGxlbmd0aCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jaGls
ZHJlbi5yZW1vdmUocG9zaXRpb24pOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci12b2lkIENTU1NlbGVjdG9yOjpwcmludCgpCi17Ci0gICAgaWYgKHRhZ0hpc3RvcnkpCi0gICAg
ICAgIHRhZ0hpc3RvcnktPnByaW50KCk7Ci19Ci0KLXVuc2lnbmVkIGludCBDU1NTZWxlY3Rvcjo6
c3BlY2lmaWNpdHkoKQotewotICAgIC8vIEZJWE1FOiBQc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVk
by1jbGFzc2VzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNwZWNpZmljaXR5LiBUaGlzIGZ1bmN0aW9u
Ci0gICAgLy8gaXNuJ3QgcXVpdGUgY29ycmVjdC4KLSAgICBpbnQgcyA9ICh0YWcubG9jYWxOYW1l
KCkgPT0gc3RhckF0b20gPyAwIDogMSk7Ci0gICAgc3dpdGNoKG1hdGNoKQotICAgIHsKLSAgICBj
YXNlIElkOgotICAgICAgICBzICs9IDB4MTAwMDA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXhhY3Q6Ci0gICAgY2FzZSBDbGFzczoKLSAgICBjYXNlIFNldDoKLSAgICBjYXNlIExpc3Q6Ci0g
ICAgY2FzZSBIeXBoZW46Ci0gICAgY2FzZSBQc2V1ZG9DbGFzczoKLSAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnQ6Ci0gICAgY2FzZSBDb250YWluOgotICAgIGNhc2UgQmVnaW46Ci0gICAgY2FzZSBFbmQ6
Ci0gICAgICAgIHMgKz0gMHgxMDA7Ci0gICAgY2FzZSBOb25lOgotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgaWYgKHRhZ0hpc3RvcnkpCi0gICAgICAgIHMgKz0gdGFnSGlzdG9yeS0+c3BlY2lm
aWNpdHkoKTsKLSAgICAvLyBtYWtlIHN1cmUgaXQgZG9lc24ndCBvdmVyZmxvdwotICAgIHJldHVy
biBzICYgMHhmZmZmZmY7Ci19Ci0KLXZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBl
KCkgY29uc3QKLXsKLSAgICBpZiAobWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbWF0Y2ggIT0gUHNl
dWRvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgYWN0aXZlKCJhY3RpdmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFmdGVyKCJhZnRl
ciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYW55TGluaygiLXdlYmtpdC1hbnktbGluayIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYXV0b2ZpbGwoIi13ZWJraXQtYXV0b2ZpbGwiKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGJlZm9yZSgiYmVmb3JlIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBjaGVja2VkKCJjaGVja2VkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBk
aXNhYmxlZCgiZGlzYWJsZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGRyYWcoIi13ZWJr
aXQtZHJhZyIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW1wdHkoImVtcHR5Iik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBlbmFibGVkKCJlbmFibGVkIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBmaXJzdENoaWxkKCJmaXJzdC1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgZmlyc3RMZXR0ZXIoImZpcnN0LWxldHRlciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
Zmlyc3RMaW5lKCJmaXJzdC1saW5lIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdE9m
VHlwZSgiZmlyc3Qtb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZm9jdXMoImZv
Y3VzIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBob3ZlcigiaG92ZXIiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGluZGV0ZXJtaW5hdGUoImluZGV0ZXJtaW5hdGUiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGxpbmsoImxpbmsiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxh
bmcoImxhbmcoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsYXN0Q2hpbGQoImxhc3QtY2hp
bGQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxhc3RPZlR5cGUoImxhc3Qtb2YtdHlwZSIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm90U3RyKCJub3QoIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBvbmx5Q2hpbGQoIm9ubHktY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIG9ubHlPZlR5cGUoIm9ubHktb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
cm9vdCgicm9vdCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VsZWN0aW9uKCJzZWxlY3Rp
b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRhcmdldCgidGFyZ2V0Iik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyB2aXNpdGVkKCJ2aXNpdGVkIik7Ci0gICAgYm9vbCBlbGVtZW50ID0g
ZmFsc2U7ICAgICAgIC8vIHBzZXVkby1lbGVtZW50Ci0gICAgYm9vbCBjb21wYXQgPSBmYWxzZTsg
ICAgICAgIC8vIHNpbmdsZSBjb2xvbiBjb21wYXRiaWxpdHkgbW9kZQotICAgIAotICAgIF9wc2V1
ZG9UeXBlID0gUHNldWRvT3RoZXI7Ci0gICAgaWYgKHZhbHVlID09IGFjdGl2ZSkKLSAgICAgICAg
X3BzZXVkb1R5cGUgPSBQc2V1ZG9BY3RpdmU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYWZ0ZXIp
IHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9BZnRlcjsKLSAgICAgICAgZWxlbWVudCA9
IGNvbXBhdCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBhbnlMaW5rKQotICAgICAg
ICBfcHNldWRvVHlwZSA9IFBzZXVkb0FueUxpbms7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gYXV0
b2ZpbGwpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQXV0b2ZpbGw7Ci0gICAgZWxzZSBp
ZiAodmFsdWUgPT0gYmVmb3JlKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQmVmb3Jl
OwotICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHZhbHVl
ID09IGNoZWNrZWQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQ2hlY2tlZDsKLSAgICBl
bHNlIGlmICh2YWx1ZSA9PSBkaXNhYmxlZCkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9E
aXNhYmxlZDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBkcmFnKQotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb0RyYWc7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZW5hYmxlZCkKLSAgICAgICAg
X3BzZXVkb1R5cGUgPSBQc2V1ZG9FbmFibGVkOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGVtcHR5
KQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0VtcHR5OwotICAgIGVsc2UgaWYgKHZhbHVl
ID09IGZpcnN0Q2hpbGQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRmlyc3RDaGlsZDsK
LSAgICBlbHNlIGlmICh2YWx1ZSA9PSBmaXJzdExldHRlcikgewotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb0ZpcnN0TGV0dGVyOwotICAgICAgICBlbGVtZW50ID0gY29tcGF0ID0gdHJ1ZTsK
LSAgICB9IGVsc2UgaWYgKHZhbHVlID09IGZpcnN0TGluZSkgewotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb0ZpcnN0TGluZTsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBhdCA9IHRydWU7Ci0g
ICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBmaXJzdE9mVHlwZSkKLSAgICAgICAgX3BzZXVkb1R5cGUg
PSBQc2V1ZG9GaXJzdE9mVHlwZTsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBmb2N1cykKLSAgICAg
ICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Gb2N1czsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBob3Zl
cikKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Ib3ZlcjsKLSAgICBlbHNlIGlmICh2YWx1
ZSA9PSBpbmRldGVybWluYXRlKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0luZGV0ZXJt
aW5hdGU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gbGluaykKLSAgICAgICAgX3BzZXVkb1R5cGUg
PSBQc2V1ZG9MaW5rOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGxhbmcpCi0gICAgICAgIF9wc2V1
ZG9UeXBlID0gUHNldWRvTGFuZzsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBsYXN0Q2hpbGQpCi0g
ICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvTGFzdENoaWxkOwotICAgIGVsc2UgaWYgKHZhbHVl
ID09IGxhc3RPZlR5cGUpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvTGFzdE9mVHlwZTsK
LSAgICBlbHNlIGlmICh2YWx1ZSA9PSBub3RTdHIpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNl
dWRvTm90OwotICAgIGVsc2UgaWYgKHZhbHVlID09IG9ubHlDaGlsZCkKLSAgICAgICAgX3BzZXVk
b1R5cGUgPSBQc2V1ZG9Pbmx5Q2hpbGQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gb25seU9mVHlw
ZSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9Pbmx5T2ZUeXBlOwotICAgIGVsc2UgaWYg
KHZhbHVlID09IHJvb3QpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvUm9vdDsKLSAgICBl
bHNlIGlmICh2YWx1ZSA9PSBzZWxlY3Rpb24pIHsKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1
ZG9TZWxlY3Rpb247Ci0gICAgICAgIGVsZW1lbnQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFs
dWUgPT0gdGFyZ2V0KQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1RhcmdldDsKLSAgICBl
bHNlIGlmICh2YWx1ZSA9PSB2aXNpdGVkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1Zp
c2l0ZWQ7Ci0gICAgCi0gICAgaWYgKG1hdGNoID09IFBzZXVkb0NsYXNzICYmIGVsZW1lbnQpCi0g
ICAgICAgIGlmICghY29tcGF0KSAKLSAgICAgICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT3Ro
ZXI7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAgIG1hdGNoID0gUHNldWRvRWxlbWVudDsKLSAg
ICBlbHNlIGlmIChtYXRjaCA9PSBQc2V1ZG9FbGVtZW50ICYmICFlbGVtZW50KQotICAgICAgICBf
cHNldWRvVHlwZSA9IFBzZXVkb090aGVyOwotfQotCi0KLWJvb2wgQ1NTU2VsZWN0b3I6Om9wZXJh
dG9yID09IChjb25zdCBDU1NTZWxlY3RvciAmb3RoZXIpCi17Ci0gICAgY29uc3QgQ1NTU2VsZWN0
b3IgKnNlbDEgPSB0aGlzOwotICAgIGNvbnN0IENTU1NlbGVjdG9yICpzZWwyID0gJm90aGVyOwot
Ci0gICAgd2hpbGUgKHNlbDEgJiYgc2VsMikgewotICAgICAgICBpZiAoc2VsMS0+dGFnICE9IHNl
bDItPnRhZyB8fCBzZWwxLT5hdHRyICE9IHNlbDItPmF0dHIgfHwKLSAgICAgICAgICAgICBzZWwx
LT5yZWxhdGlvbigpICE9IHNlbDItPnJlbGF0aW9uKCkgfHwgc2VsMS0+bWF0Y2ggIT0gc2VsMi0+
bWF0Y2ggfHwKLSAgICAgICAgICAgICBzZWwxLT52YWx1ZSAhPSBzZWwyLT52YWx1ZSB8fAotICAg
ICAgICAgICAgIHNlbDEtPnBzZXVkb1R5cGUoKSAhPSBzZWwyLT5wc2V1ZG9UeXBlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNlbDEgPSBzZWwxLT50YWdIaXN0b3J5Owot
ICAgICAgICBzZWwyID0gc2VsMi0+dGFnSGlzdG9yeTsKLSAgICB9Ci0gICAgaWYgKHNlbDEgfHwg
c2VsMikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJp
bmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFN1
cHBvcnQgbmFtZXNwYWNlcyB3aGVuIGR1bXBpbmcgdGhlIHNlbGVjdG9yIHRleHQuIC1kd2gKLSAg
ICBTdHJpbmcgc3RyOwotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBjcyA9IHRoaXM7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBjcy0+dGFnLmxvY2FsTmFtZSgpOwotICAgIGlm
IChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6Ok5vbmUgfHwgbG9jYWxOYW1lICE9IHN0YXJBdG9t
KQotICAgICAgICBzdHIgPSBsb2NhbE5hbWU7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
aWYgKGNzLT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKLSAgICAgICAgICAgIHN0ciArPSAi
IyI7Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNz
LT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKLSAgICAgICAgICAgIHN0ciArPSAiLiI7
Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNzLT5t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpIHsKLSAgICAgICAgICAgIHN0ciArPSAi
OiI7Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNz
LT5tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgewotICAgICAgICAgICAgc3Ry
ICs9ICI6OiI7Ci0gICAgICAgICAgICBzdHIgKz0gY3MtPnZhbHVlOwotICAgICAgICB9IGVsc2Ug
aWYgKGNzLT5oYXNBdHRyaWJ1dGUoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBkdW1waW5nIG5hbWVzcGFjZXMuCi0gICAgICAgICAgICBTdHJpbmcgYXR0ck5hbWUg
PSBjcy0+YXR0ci5sb2NhbE5hbWUoKTsKLSAgICAgICAgICAgIHN0ciArPSAiWyI7Ci0gICAgICAg
ICAgICBzdHIgKz0gYXR0ck5hbWU7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNzLT5tYXRjaCkgewot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICAgICAgICAg
ICAgICBzdHIgKz0gIj0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNldCBo
YXMgbm8gb3BlcmF0b3Igb3IgdmFsdWUsIGp1c3QgdGhlIGF0dHJOYW1lCi0gICAgICAgICAgICAg
ICAgICAgIHN0ciArPSAiXSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHN0ciAr
PSAifj0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpIeXBoZW46Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAifD0iOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpCZWdpbjoKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9ICJePSI7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoK
LSAgICAgICAgICAgICAgICAgICAgc3RyICs9ICIkPSI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNvbnRhaW46Ci0gICAgICAg
ICAgICAgICAgICAgIHN0ciArPSAiKj0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjcy0+bWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OlNldCkg
ewotICAgICAgICAgICAgICAgIHN0ciArPSAiXCIiOwotICAgICAgICAgICAgICAgIHN0ciArPSBj
cy0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RyICs9ICJcIl0iOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGlmIChjcy0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3Vi
U2VsZWN0b3IgfHwgIWNzLT50YWdIaXN0b3J5KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNzID0gY3MtPnRhZ0hpc3Rvcnk7Ci0gICAgfQotICAgIGlmIChjcy0+dGFnSGlzdG9yeSkgewot
ICAgICAgICBTdHJpbmcgdGFnSGlzdG9yeVRleHQgPSBjcy0+dGFnSGlzdG9yeS0+c2VsZWN0b3JU
ZXh0KCk7Ci0gICAgICAgIGlmIChjcy0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6RGlyZWN0
QWRqYWNlbnQpCi0gICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIgKyAiICsgc3Ry
OwotICAgICAgICBlbHNlIGlmIChjcy0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJl
Y3RBZGphY2VudCkKLSAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3RvcnlUZXh0ICsgIiB+ICIgKyBz
dHI7Ci0gICAgICAgIGVsc2UgaWYgKGNzLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpDaGls
ZCkKLSAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3RvcnlUZXh0ICsgIiA+ICIgKyBzdHI7Ci0gICAg
ICAgIGVsc2UgLy8gRGVzY2VuZGFudAotICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQg
KyAiICIgKyBzdHI7Ci0gICAgfQotICAgIHJldHVybiBzdHI7Ci19Ci0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQogfQpJbmRleDogY3NzL0NTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
c3MvQ1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NQcm9wZXJ0eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICAqLwogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKIAogLy8gTm90IGluIGFueSBoZWFkZXIsIHNvIGp1c3QgZGVjbGFyZSBpdCBoZXJlIGZvciBu
b3cuCiBXZWJDb3JlOjpTdHJpbmcgZ2V0UHJvcGVydHlOYW1lKHVuc2lnbmVkIHNob3J0IGlkKTsK
SW5kZXg6IGNzcy9TdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL1N0eWxlU2hlZXQuaAko
cmV2aXNpb24gMTQ0MDYpCisrKyBjc3MvU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MywxMiArMjMsMTQgQEAKICNpZm5kZWYgU3R5bGVTaGVldF9ICiAjZGVmaW5lIFN0eWxlU2hlZXRf
SAogCi0jaW5jbHVkZSAiY3NzX2Jhc2UuaCIKKyNpbmNsdWRlICJTdHlsZUxpc3QuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5v
ZGU7CiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgTWVkaWFMaXN0OwogCiBjbGFz
cyBTdHlsZVNoZWV0IDogcHVibGljIFN0eWxlTGlzdCB7CiBwdWJsaWM6CkluZGV4OiBjc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNsdWRl
ICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIg
Ly8gZm9yIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKICNpbmNsdWRlICJEZXByZWNhdGVk
VmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNzIE5vZGU7CiAKIGNsYXNzIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24KSW5kZXg6
IGNzcy9TdHlsZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvU3R5bGVMaXN0LmgJKHJldmlzaW9u
IDE0NDA2KQorKysgY3NzL1N0eWxlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyMjYgKzIx
LDE1IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENT
U19CQVNFX0gKLSNkZWZpbmUgQ1NTX0JBU0VfSAorI2lmbmRlZiBTdHlsZUxpc3RfSAorI2RlZmlu
ZSBTdHlsZUxpc3RfSAogCi0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlN0
eWxlQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTdHlsZVNoZWV0Owot
ICAgIGNsYXNzIE1lZGlhTGlzdDsKLQotICAgIGNsYXNzIENTU1NlbGVjdG9yOwotICAgIGNsYXNz
IENTU1Byb3BlcnR5OwotICAgIGNsYXNzIENTU1ZhbHVlOwotICAgIGNsYXNzIENTU1ByaW1pdGl2
ZVZhbHVlOwotICAgIGNsYXNzIENTU1J1bGU7Ci0gICAgY2xhc3MgQ1NTU3R5bGVSdWxlOwotCi0g
ICAgY2xhc3MgRG9jdW1lbnQ7Ci0KLSAgICBzdHJ1Y3QgQ1NTTmFtZXNwYWNlIHsKLSAgICAgICAg
QXRvbWljU3RyaW5nIG1fcHJlZml4OwotICAgICAgICBBdG9taWNTdHJpbmcgbV91cmk7Ci0gICAg
ICAgIENTU05hbWVzcGFjZSogbV9wYXJlbnQ7Ci0KLSAgICAgICAgQ1NTTmFtZXNwYWNlKGNvbnN0
IEF0b21pY1N0cmluZyYgcCwgY29uc3QgQXRvbWljU3RyaW5nJiB1LCBDU1NOYW1lc3BhY2UqIHBh
cmVudCkgCi0gICAgICAgICAgICA6bV9wcmVmaXgocCksIG1fdXJpKHUpLCBtX3BhcmVudChwYXJl
bnQpIHt9Ci0gICAgICAgIH5DU1NOYW1lc3BhY2UoKSB7IGRlbGV0ZSBtX3BhcmVudDsgfQotICAg
ICAgICAKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkoKSB7IHJldHVybiBtX3VyaTsg
fQotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIHsgcmV0dXJuIG1fcHJlZml4
OyB9Ci0gICAgICAgIAotICAgICAgICBDU1NOYW1lc3BhY2UqIG5hbWVzcGFjZUZvclByZWZpeChj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkgewotICAgICAgICAgICAgaWYgKHByZWZpeCA9PSBt
X3ByZWZpeCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgICAgIGlmICht
X3BhcmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnQtPm5hbWVzcGFjZUZvclBy
ZWZpeChwcmVmaXgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Owot
ICAgIAotLy8gdGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2VsZWN0b3IgZm9yIGEgU3R5bGVSdWxl
Ci0gICAgY2xhc3MgQ1NTU2VsZWN0b3IKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICBDU1NT
ZWxlY3RvcigpCi0gICAgICAgICAgICA6IHRhZ0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDAp
LCBuZXh0U2VsZWN0b3IoMCksIGF0dHIoYW55UU5hbWUoKSksIHRhZyhhbnlRTmFtZSgpKSwKLSAg
ICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0Y2goTm9uZSksIHBzZXVkb0lk
KDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9Ci0gICAgICAgIAot
ICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKLSAgICAgICAg
ICAgIDogdGFnSGlzdG9yeSgwKSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwg
YXR0cihhbnlRTmFtZSgpKSwgdGFnKHFOYW1lKSwKLSAgICAgICAgICAgICAgbV9yZWxhdGlvbihE
ZXNjZW5kYW50KSwgbWF0Y2goTm9uZSksIHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9O
b3RQYXJzZWQpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgfkNTU1NlbGVjdG9yKCkgewotICAgICAg
ICAgICAgZGVsZXRlIHRhZ0hpc3Rvcnk7Ci0gICAgICAgICAgICBkZWxldGUgc2ltcGxlU2VsZWN0
b3I7Ci0gICAgICAgICAgICBkZWxldGUgbmV4dFNlbGVjdG9yOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBhcHBlbmQoQ1NTU2VsZWN0b3IqIG4pIHsKLSAgICAgICAgICAgIENTU1NlbGVjdG9y
KiBlbmQgPSB0aGlzOwotICAgICAgICAgICAgd2hpbGUgKGVuZC0+bmV4dFNlbGVjdG9yKQotICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZC0+bmV4dFNlbGVjdG9yOwotICAgICAgICAgICAgZW5kLT5u
ZXh0U2VsZWN0b3IgPSBuOwotICAgICAgICB9Ci0gICAgICAgIENTU1NlbGVjdG9yKiBuZXh0KCkg
eyByZXR1cm4gbmV4dFNlbGVjdG9yOyB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIFByaW50
IGRlYnVnIG91dHB1dCBmb3IgdGhpcyBzZWxlY3RvcgotICAgICAgICAgKi8KLSAgICAgICAgdm9p
ZCBwcmludCgpOwotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBSZS1jcmVhdGUgc2VsZWN0b3Ig
dGV4dCBmcm9tIHNlbGVjdG9yJ3MgZGF0YQotICAgICAgICAgKi8KLSAgICAgICAgU3RyaW5nIHNl
bGVjdG9yVGV4dCgpIGNvbnN0OwotCi0gICAgICAgIC8vIGNoZWNrcyBpZiB0aGUgMiBzZWxlY3Rv
cnMgKGluY2x1ZGluZyBzdWIgc2VsZWN0b3JzKSBhZ3JlZS4KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciA9PShjb25zdCBDU1NTZWxlY3RvciYpOwotCi0gICAgICAgIC8vIHRhZyA9PSAtMSBtZWFucyBh
cHBseSB0byBhbGwgZWxlbWVudHMgKFNlbGVjdG9yID0gKikKLQotICAgICAgICB1bnNpZ25lZCBz
cGVjaWZpY2l0eSgpOwotCi0gICAgICAgIC8qIGhvdyB0aGUgYXR0cmlidXRlIHZhbHVlIGhhcyB0
byBtYXRjaC4uLi4gRGVmYXVsdCBpcyBFeGFjdCAqLwotICAgICAgICBlbnVtIE1hdGNoIHsKLSAg
ICAgICAgICAgIE5vbmUgPSAwLAotICAgICAgICAgICAgSWQsCi0gICAgICAgICAgICBDbGFzcywK
LSAgICAgICAgICAgIEV4YWN0LAotICAgICAgICAgICAgU2V0LAotICAgICAgICAgICAgTGlzdCwK
LSAgICAgICAgICAgIEh5cGhlbiwKLSAgICAgICAgICAgIFBzZXVkb0NsYXNzLAotICAgICAgICAg
ICAgUHNldWRvRWxlbWVudCwKLSAgICAgICAgICAgIENvbnRhaW4sICAgLy8gY3NzMzogRVtmb28q
PSJiYXIiXQotICAgICAgICAgICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zvb149ImJhciJdCi0g
ICAgICAgICAgICBFbmQgICAgICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KLSAgICAgICAgfTsK
LQotICAgICAgICBlbnVtIFJlbGF0aW9uIHsKLSAgICAgICAgICAgIERlc2NlbmRhbnQgPSAwLAot
ICAgICAgICAgICAgQ2hpbGQsCi0gICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKLSAgICAgICAg
ICAgIEluZGlyZWN0QWRqYWNlbnQsCi0gICAgICAgICAgICBTdWJTZWxlY3RvcgotICAgICAgICB9
OwotCi0gICAgICAgIGVudW0gUHNldWRvVHlwZSB7Ci0gICAgICAgICAgICBQc2V1ZG9Ob3RQYXJz
ZWQgPSAwLAotICAgICAgICAgICAgUHNldWRvT3RoZXIsCi0gICAgICAgICAgICBQc2V1ZG9FbXB0
eSwKLSAgICAgICAgICAgIFBzZXVkb0ZpcnN0Q2hpbGQsCi0gICAgICAgICAgICBQc2V1ZG9GaXJz
dE9mVHlwZSwKLSAgICAgICAgICAgIFBzZXVkb0xhc3RDaGlsZCwKLSAgICAgICAgICAgIFBzZXVk
b0xhc3RPZlR5cGUsCi0gICAgICAgICAgICBQc2V1ZG9Pbmx5Q2hpbGQsCi0gICAgICAgICAgICBQ
c2V1ZG9Pbmx5T2ZUeXBlLAotICAgICAgICAgICAgUHNldWRvRmlyc3RMaW5lLAotICAgICAgICAg
ICAgUHNldWRvRmlyc3RMZXR0ZXIsCi0gICAgICAgICAgICBQc2V1ZG9MaW5rLAotICAgICAgICAg
ICAgUHNldWRvVmlzaXRlZCwKLSAgICAgICAgICAgIFBzZXVkb0FueUxpbmssCi0gICAgICAgICAg
ICBQc2V1ZG9BdXRvZmlsbCwKLSAgICAgICAgICAgIFBzZXVkb0hvdmVyLAotICAgICAgICAgICAg
UHNldWRvRHJhZywKLSAgICAgICAgICAgIFBzZXVkb0ZvY3VzLAotICAgICAgICAgICAgUHNldWRv
QWN0aXZlLAotICAgICAgICAgICAgUHNldWRvQ2hlY2tlZCwKLSAgICAgICAgICAgIFBzZXVkb0Vu
YWJsZWQsCi0gICAgICAgICAgICBQc2V1ZG9EaXNhYmxlZCwKLSAgICAgICAgICAgIFBzZXVkb0lu
ZGV0ZXJtaW5hdGUsCi0gICAgICAgICAgICBQc2V1ZG9UYXJnZXQsCi0gICAgICAgICAgICBQc2V1
ZG9CZWZvcmUsCi0gICAgICAgICAgICBQc2V1ZG9BZnRlciwKLSAgICAgICAgICAgIFBzZXVkb0xh
bmcsCi0gICAgICAgICAgICBQc2V1ZG9Ob3QsCi0gICAgICAgICAgICBQc2V1ZG9Sb290LAotICAg
ICAgICAgICAgUHNldWRvU2VsZWN0aW9uCi0gICAgICAgIH07Ci0KLSAgICAgICAgUHNldWRvVHlw
ZSBwc2V1ZG9UeXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKF9wc2V1ZG9U
eXBlID09IFBzZXVkb05vdFBhcnNlZCkKLSAgICAgICAgICAgICAgICBleHRyYWN0UHNldWRvVHlw
ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb1R5cGU+KF9wc2V1ZG9U
eXBlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaGFzVGFnKCkgY29uc3QgeyByZXR1cm4g
dGFnICE9IGFueVFOYW1lKCk7IH0KLSAgICAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBhdHRyICE9IGFueVFOYW1lKCk7IH0KLQotICAgICAgICBtdXRhYmxlIEF0b21pY1N0
cmluZyB2YWx1ZTsKLSAgICAgICAgQ1NTU2VsZWN0b3IqIHRhZ0hpc3Rvcnk7Ci0gICAgICAgIENT
U1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvcjsgLy8gVXNlZCBmb3IgOm5vdC4KLSAgICAgICAgQ1NT
U2VsZWN0b3IqIG5leHRTZWxlY3RvcjsgLy8gdXNlZCBmb3IgLC1jaGFpbmVkIHNlbGVjdG9ycwot
ICAgICAgICAKLSAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyOwotICAgICAgICBRdWFsaWZpZWRO
YW1lIHRhZzsKLSAgICAgICAgCi0gICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9Ci0KLSAgICAgICAgdW5z
aWduZWQgbV9yZWxhdGlvbiAgICAgICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KLSAgICAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtYXRjaCAgICAgICA6IDQ7IC8vIGVudW0gTWF0Y2gKLSAgICAgICAg
dW5zaWduZWQgcHNldWRvSWQgICAgICAgICAgICA6IDM7Ci0gICAgICAgIG11dGFibGUgdW5zaWdu
ZWQgX3BzZXVkb1R5cGUgOiA1OyAvLyBQc2V1ZG9UeXBlCi0KLSAgICBwcml2YXRlOgotICAgICAg
ICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3Q7Ci0gICAgfTsKLQotICAgIC8vIGEgc3R5
bGUgY2xhc3Mgd2hpY2ggaGFzIGEgcGFyZW50IChhbG1vc3QgYWxsIGhhdmUpCi0gICAgY2xhc3Mg
U3R5bGVCYXNlIDogcHVibGljIFNoYXJlZDxTdHlsZUJhc2U+IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIFN0eWxlQmFzZShTdHlsZUJhc2UqIHBhcmVudCkKLSAgICAgICAgICAgIDogbV9wYXJlbnQo
cGFyZW50KSwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJz
aW5nKCkpIHsgfQotICAgICAgICB2aXJ0dWFsIH5TdHlsZUJhc2UoKSB7IH0KLQotICAgICAgICBT
dHlsZUJhc2UqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgICAgIHZv
aWQgc2V0UGFyZW50KFN0eWxlQmFzZSogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9Ci0K
LSAgICAgICAgLy8gcmV0dXJucyB0aGUgdXJsIG9mIHRoZSBzdHlsZSBzaGVldCB0aGlzIG9iamVj
dCBiZWxvbmdzIHRvCi0gICAgICAgIFN0cmluZyBiYXNlVVJMKCk7Ci0KLSAgICAgICAgdmlydHVh
bCBib29sIGlzU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBpc0NTU1N0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVTaGVldExpc3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUxpc3QoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSdWxlTGlzdCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1J1bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZVJ1bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNDaGFyZXRSdWxlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAg
dmlydHVhbCBib29sIGlzSW1wb3J0UnVsZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBpc01lZGlhUnVsZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc0ZvbnRGYWNlUnVsZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc1BhZ2VSdWxlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBi
b29sIGlzVW5rbm93blJ1bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTdHlsZURlY2xhcmF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVh
bCBib29sIGlzVmFsdWUoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNQcmltaXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbHVlTGlzdCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbHVlQ3VzdG9tKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCAvKnN0cmljdCovID0gZmFsc2Up
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja0xvYWRlZCgpOwot
Ci0gICAgICAgIHZvaWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5n
ID0gYjsgfQotICAgICAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmljdFBhcnNpbmc7IH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvUGFy
ZW50KCkgeyB9Ci0KLSAgICAgICAgU3R5bGVTaGVldCogc3R5bGVzaGVldCgpOwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgU3R5bGVCYXNlKiBtX3BhcmVudDsKLSAgICAgICAgYm9vbCBtX3N0cmlj
dFBhcnNpbmc7Ci0gICAgfTsKLQogICAgIC8vIGEgc3R5bGUgY2xhc3Mgd2hpY2ggaGFzIGEgbGlz
dCBvZiBjaGlsZHJlbiAoU3R5bGVTaGVldHMgZm9yIGV4YW1wbGUpCiAgICAgY2xhc3MgU3R5bGVM
aXN0IDogcHVibGljIFN0eWxlQmFzZSB7CiAgICAgcHVibGljOgpAQCAtMjU2LDkgKzQ1LDYgQEAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVCYXNlPiA+IG1fY2hp
bGRyZW47CiAgICAgfTsKLQotICAgIGludCBnZXRQcm9wZXJ0eUlEKGNvbnN0IGNoYXIgKnRhZ1N0
ciwgaW50IGxlbik7Ci0KIH0KIAogI2VuZGlmCkluZGV4OiBjc3MvRm9udFZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBjc3MvRm9udFZhbHVlLmNwcAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvRm9u
dFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAi
Q1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNzcy9D
U1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1N0eWxlU2hlZXQuaAkocmV2aXNp
b24gMTQ0MDYpCisrKyBjc3MvQ1NTU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5
ICsyNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU05hbWVzcGFjZTsK
IGNsYXNzIENTU1BhcnNlcjsKK2NsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NSdWxlTGlzdDsKIGNs
YXNzIERvY0xvYWRlcjsKK2NsYXNzIERvY3VtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwogCkBAIC00MCw3ICs0Myw3IEBACiAgICAgQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCwgU3RyaW5nIGhyZWYgPSBTdHJpbmcoKSk7CiAgICAgQ1NTU3R5bGVTaGVl
dChDU1NSdWxlKiBvd25lclJ1bGUsIFN0cmluZyBocmVmID0gU3RyaW5nKCkpOwogICAgIAotICAg
IH5DU1NTdHlsZVNoZWV0KCkgeyBkZWxldGUgbV9uYW1lc3BhY2VzOyB9CisgICAgfkNTU1N0eWxl
U2hlZXQoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNDQwNykKKysrIGNz
cy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtMzcyLDggKzM3Myw3IEBACiAgICAgfQogfQogCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCog
cnVsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgZmly
c3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hSdWxlc0Zvckxpc3QoQ1NTUnVsZURhdGFMaXN0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJ
bmRleCwgaW50JiBsYXN0UnVsZUluZGV4KQogewogICAgIGlmICghcnVsZXMpIHJldHVybjsKICAg
ICBmb3IgKENTU1J1bGVEYXRhKiBkID0gcnVsZXMtPmZpcnN0KCk7IGQ7IGQgPSBkLT5uZXh0KCkp
IHsKSW5kZXg6IGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NT
U0luaGVyaXRlZFZhbHVlLmNwcAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NTSW5oZXJpdGVk
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKIAorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdW5zaWduZWQgc2hvcnQgQ1NT
SW5oZXJpdGVkVmFsdWU6OmNzc1ZhbHVlVHlwZSgpIGNvbnN0CkluZGV4OiBjc3MvU2hhZG93VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9TaGFkb3dWYWx1ZS5jcHAJKHJldmlzaW9uIDE0NDA3
KQorKysgY3NzL1NoYWRvd1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCiAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApJbmRleDogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NTdHlsZURlY2xh
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxNCBAQAogI2lmbmRlZiBDU1NT
dHlsZURlY2xhcmF0aW9uX0gKICNkZWZpbmUgQ1NTU3R5bGVEZWNsYXJhdGlvbl9ICiAKLSNpbmNs
dWRlICJjc3NfYmFzZS5oIiAvLyBmb3IgU3R5bGVCYXNlCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjsKK2NsYXNzIENTU1J1bGU7CitjbGFzcyBD
U1NWYWx1ZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtMzUsNyArMzgsNyBA
QAogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlRGVjbGFyYXRpb24oKTsKIAotICAg
IHN0YXRpYyBib29sIGlzUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1Byb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIENT
U1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdDsKIApJbmRleDogY3NzL0NTU1J1bGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjc3MvQ1NTUnVsZS5oCShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NSdWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpZm5kZWYgQ1NTUnVsZV9ICiAjZGVm
aW5lIENTU1J1bGVfSAogCi0jaW5jbHVkZSAiY3NzX2Jhc2UuaCIgLy8gZm9yIFN0eWxlQmFzZQor
I2luY2x1ZGUgIlN0eWxlQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNz
cy9DU1NNZWRpYVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTTWVkaWFSdWxlLmgJKHJldmlz
aW9uIDE0NDA3KQorKysgY3NzL0NTU01lZGlhUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
MCArMjUsMTIgQEAKICNkZWZpbmUgQ1NTTWVkaWFSdWxlX0gKIAogI2luY2x1ZGUgIkNTU1J1bGUu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1NTUnVsZUxpc3Q7CitjbGFzcyBNZWRpYUxpc3Q7CiAKIGNsYXNzIENTU01lZGlhUnVsZSA6
IHB1YmxpYyBDU1NSdWxlCiB7CkBAIC00OCw3ICs1MCw3IEBACiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OwogCiAgICAgLyogTm90IHBhcnQgb2YgdGhlIERPTSAqLwotICAgIHVu
c2lnbmVkIGFwcGVuZChDU1NSdWxlKiBydWxlKTsKKyAgICB1bnNpZ25lZCBhcHBlbmQoQ1NTUnVs
ZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbV9sc3RNZWRpYTsKSW5k
ZXg6IGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTQm9y
ZGVySW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDE0NDA3KQorKysgY3NzL0NTU0JvcmRlckltYWdl
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ1NT
Qm9yZGVySW1hZ2VWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVjdEltcGwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogY3NzL0NTU1ZhbHVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9D
U1NWYWx1ZUxpc3QuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NTVmFsdWVMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNzcy9DU1NDaGFyc2V0UnVsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGNzcy9DU1NDaGFyc2V0UnVsZS5oCShyZXZpc2lvbiAxNDQwNykKKysrIGNz
cy9DU1NDaGFyc2V0UnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVm
aW5lIENTU0NoYXJzZXRSdWxlX0gKIAogI2luY2x1ZGUgIkNTU1J1bGUuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNzcy9jc3Nw
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxNDQw
NykKKysrIGNzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDU1NRdWlya1ByaW1pdGl2ZVZhbHVlLmgiCkluZGV4OiBjc3MvQ1NTUnVsZUxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGNzcy9DU1NSdWxlTGlzdC5jcHAJKHJldmlzaW9uIDE0NDA3KQorKysg
Y3NzL0NTU1J1bGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2lu
Y2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCi0jaW5jbHVkZSAi
Y3NzX2Jhc2UuaCIgLy8gZm9yIFN0eWxlTGlzdAorI2luY2x1ZGUgIlN0eWxlTGlzdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IGNzcy9jc3NzdHlsZXNlbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3Mv
Y3Nzc3R5bGVzZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTQgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247Citj
bGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTUnVs
ZURhdGE7CiBjbGFzcyBDU1NSdWxlRGF0YUxpc3Q7CiBjbGFzcyBDU1NSdWxlTGlzdDsKIGNsYXNz
IENTU1J1bGVTZXQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKK2NsYXNzIENTU1N0eWxlUnVsZTsKIGNs
YXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERvY3VtZW50OwpJbmRl
eDogY3NzL0NTU0ltcG9ydFJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTSW1wb3J0UnVsZS5o
CShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NJbXBvcnRSdWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEwICsyNiwxMiBAQAogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZE9iamVjdENsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIE1lZGlh
TGlzdDsKIAogY2xhc3MgQ1NTSW1wb3J0UnVsZSA6IHB1YmxpYyBDU1NSdWxlLCBwdWJsaWMgQ2Fj
aGVkT2JqZWN0Q2xpZW50CiB7CkluZGV4OiBjc3MvQ1NTVmFsdWVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBjc3MvQ1NTVmFsdWVMaXN0LmNwcAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NTVmFs
dWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU1NWYWx1ZUxpc3Q6On5DU1NWYWx1
ZUxpc3QoKQpJbmRleDogY3NzL2Nzc19iYXNlLmNwcCAoZGVsZXRlZCkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRl
eDogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmgJKHJldmlzaW9uIDE0NDA3KQorKysgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFsdWVf
SAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMyLDYgKzMzLDcgQEAKIGNsYXNzIFBhaXI7CiBj
bGFzcyBSZWN0SW1wbDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU3RyaW5nSW1wbDsKIAog
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApJbmRleDogY3NzL0NTU0dyYW1tYXIueQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBjc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NH
cmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1J1bGUuaCIKICNpbmNsdWRlICJDU1NSdWxl
TGlzdC5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVl
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkluZGV4
OiBjc3MvU2hhZG93VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvU2hhZG93VmFsdWUuaAkocmV2
aXNpb24gMTQ0MDcpCisrKyBjc3MvU2hhZG93VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsMTMgQEAKICNkZWZpbmUgU2hhZG93VmFsdWVfSAogCiAjaW5jbHVkZSAiQ1NTVmFsdWUu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKKwogLy8g
VXNlZCBmb3IgdGV4dC1zaGFkb3cgYW5kIGJveC1zaGFkb3cKIGNsYXNzIFNoYWRvd1ZhbHVlIDog
cHVibGljIENTU1ZhbHVlCiB7CkluZGV4OiBjc3MvQ1NTRm9udEZhY2VSdWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gY3NzL0NTU0ZvbnRGYWNlUnVsZS5oCShyZXZpc2lvbiAxNDQwNykKKysrIGNzcy9DU1NG
b250RmFjZVJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBD
U1NGb250RmFjZVJ1bGVfSAogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBjc3MvQ1NTQm9yZGVySW1h
Z2VWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgJKHJldmlz
aW9uIDE0NDA3KQorKysgY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsOCBAQAogI2RlZmluZSBDU1NCb3JkZXJJbWFnZVZhbHVlX0gKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogY3NzL0NTU0luaXRp
YWxWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAJKHJldmlz
aW9uIDE0NDA3KQorKysgY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDYgKzIyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NJbml0aWFs
VmFsdWUuaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdW5zaWduZWQgc2hvcnQgQ1NTSW5pdGlhbFZhbHVlOjpjc3NWYWx1ZVR5cGUoKSBj
b25zdApJbmRleDogY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0Zv
bnRGYW1pbHlWYWx1ZS5jcHAJKHJldmlzaW9uIDE0NDA3KQorKysgY3NzL0ZvbnRGYW1pbHlWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJGb250RmFtaWx5VmFsdWUuaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogY3NzL0NTU1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NTdHls
ZVJ1bGUuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NTU3R5bGVSdWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDEwICsyNSwxMyBAQAogI2RlZmluZSBDU1NTdHlsZVJ1bGVfSAogCiAjaW5j
bHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOworY2xhc3MgQ1NTU2VsZWN0b3I7CiAKIGNsYXNzIENTU1N0eWxlUnVs
ZSA6IHB1YmxpYyBDU1NSdWxlCiB7CkluZGV4OiBjc3MvQ1NTTmFtZXNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gY3NzL0NTU05hbWVzcGFjZS5oCShyZXZpc2lvbiAxNDQwNikKKysrIGNzcy9DU1NOYW1l
c3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMzkgKzIxLDI5IEBACiAgKiBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU19CQVNFX0gKLSNkZWZpbmUgQ1NT
X0JBU0VfSAorI2lmbmRlZiBDU1NOYW1lc3BhY2VfSAorI2RlZmluZSBDU1NOYW1lc3BhY2VfSAog
Ci0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgU3R5bGVTaGVldDsKLSAgICBjbGFzcyBNZWRpYUxpc3Q7Ci0KLSAgICBjbGFzcyBDU1NTZWxl
Y3RvcjsKLSAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKLSAgICBjbGFzcyBDU1NWYWx1ZTsKLSAgICBj
bGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLSAgICBjbGFzcyBDU1NSdWxlOwotICAgIGNsYXNzIENT
U1N0eWxlUnVsZTsKLQotICAgIGNsYXNzIERvY3VtZW50OwotCiAgICAgc3RydWN0IENTU05hbWVz
cGFjZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtX3ByZWZpeDsKICAgICAgICAgQXRvbWljU3Ry
aW5nIG1fdXJpOwogICAgICAgICBDU1NOYW1lc3BhY2UqIG1fcGFyZW50OwogCiAgICAgICAgIENT
U05hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgdSwg
Q1NTTmFtZXNwYWNlKiBwYXJlbnQpIAotICAgICAgICAgICAgOm1fcHJlZml4KHApLCBtX3VyaSh1
KSwgbV9wYXJlbnQocGFyZW50KSB7fQorICAgICAgICAgICAgOiBtX3ByZWZpeChwKQorICAgICAg
ICAgICAgLCBtX3VyaSh1KQorICAgICAgICAgICAgLCBtX3BhcmVudChwYXJlbnQpIHt9CiAgICAg
ICAgIH5DU1NOYW1lc3BhY2UoKSB7IGRlbGV0ZSBtX3BhcmVudDsgfQogICAgICAgICAKICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIHsgcmV0dXJuIG1fcHJlZml4OyB9CiAgICAgICAg
IAotICAgICAgICBDU1NOYW1lc3BhY2UqIG5hbWVzcGFjZUZvclByZWZpeChjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCkgeworICAgICAgICBDU1NOYW1lc3BhY2UqIG5hbWVzcGFjZUZvclByZWZp
eChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCkKKyAgICAgICAgewogICAgICAgICAgICAgaWYg
KHByZWZpeCA9PSBtX3ByZWZpeCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAg
ICAgICAgIGlmIChtX3BhcmVudCkKQEAgLTYxLDIwNCArNTEsNiBAQAogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICB9OwotICAgIAotLy8gdGhpcyBjbGFzcyByZXByZXNlbnRz
IGEgc2VsZWN0b3IgZm9yIGEgU3R5bGVSdWxlCi0gICAgY2xhc3MgQ1NTU2VsZWN0b3IKLSAgICB7
Ci0gICAgcHVibGljOgotICAgICAgICBDU1NTZWxlY3RvcigpCi0gICAgICAgICAgICA6IHRhZ0hp
c3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0U2VsZWN0b3IoMCksIGF0dHIoYW55UU5h
bWUoKSksIHRhZyhhbnlRTmFtZSgpKSwKLSAgICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5k
YW50KSwgbWF0Y2goTm9uZSksIHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJz
ZWQpCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICBDU1NTZWxlY3Rvcihjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKLSAgICAgICAgICAgIDogdGFnSGlzdG9yeSgwKSwgc2ltcGxlU2Vs
ZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgYXR0cihhbnlRTmFtZSgpKSwgdGFnKHFOYW1lKSwK
LSAgICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0Y2goTm9uZSksIHBzZXVk
b0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCi0gICAgICAgIHt9Ci0KLSAgICAg
ICAgfkNTU1NlbGVjdG9yKCkgewotICAgICAgICAgICAgZGVsZXRlIHRhZ0hpc3Rvcnk7Ci0gICAg
ICAgICAgICBkZWxldGUgc2ltcGxlU2VsZWN0b3I7Ci0gICAgICAgICAgICBkZWxldGUgbmV4dFNl
bGVjdG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhcHBlbmQoQ1NTU2VsZWN0b3IqIG4p
IHsKLSAgICAgICAgICAgIENTU1NlbGVjdG9yKiBlbmQgPSB0aGlzOwotICAgICAgICAgICAgd2hp
bGUgKGVuZC0+bmV4dFNlbGVjdG9yKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+bmV4dFNl
bGVjdG9yOwotICAgICAgICAgICAgZW5kLT5uZXh0U2VsZWN0b3IgPSBuOwotICAgICAgICB9Ci0g
ICAgICAgIENTU1NlbGVjdG9yKiBuZXh0KCkgeyByZXR1cm4gbmV4dFNlbGVjdG9yOyB9Ci0KLSAg
ICAgICAgLyoqCi0gICAgICAgICAqIFByaW50IGRlYnVnIG91dHB1dCBmb3IgdGhpcyBzZWxlY3Rv
cgotICAgICAgICAgKi8KLSAgICAgICAgdm9pZCBwcmludCgpOwotCi0gICAgICAgIC8qKgotICAg
ICAgICAgKiBSZS1jcmVhdGUgc2VsZWN0b3IgdGV4dCBmcm9tIHNlbGVjdG9yJ3MgZGF0YQotICAg
ICAgICAgKi8KLSAgICAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCgpIGNvbnN0OwotCi0gICAgICAg
IC8vIGNoZWNrcyBpZiB0aGUgMiBzZWxlY3RvcnMgKGluY2x1ZGluZyBzdWIgc2VsZWN0b3JzKSBh
Z3JlZS4KLSAgICAgICAgYm9vbCBvcGVyYXRvciA9PShjb25zdCBDU1NTZWxlY3RvciYpOwotCi0g
ICAgICAgIC8vIHRhZyA9PSAtMSBtZWFucyBhcHBseSB0byBhbGwgZWxlbWVudHMgKFNlbGVjdG9y
ID0gKikKLQotICAgICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eSgpOwotCi0gICAgICAgIC8qIGhv
dyB0aGUgYXR0cmlidXRlIHZhbHVlIGhhcyB0byBtYXRjaC4uLi4gRGVmYXVsdCBpcyBFeGFjdCAq
LwotICAgICAgICBlbnVtIE1hdGNoIHsKLSAgICAgICAgICAgIE5vbmUgPSAwLAotICAgICAgICAg
ICAgSWQsCi0gICAgICAgICAgICBDbGFzcywKLSAgICAgICAgICAgIEV4YWN0LAotICAgICAgICAg
ICAgU2V0LAotICAgICAgICAgICAgTGlzdCwKLSAgICAgICAgICAgIEh5cGhlbiwKLSAgICAgICAg
ICAgIFBzZXVkb0NsYXNzLAotICAgICAgICAgICAgUHNldWRvRWxlbWVudCwKLSAgICAgICAgICAg
IENvbnRhaW4sICAgLy8gY3NzMzogRVtmb28qPSJiYXIiXQotICAgICAgICAgICAgQmVnaW4sICAg
ICAvLyBjc3MzOiBFW2Zvb149ImJhciJdCi0gICAgICAgICAgICBFbmQgICAgICAgIC8vIGNzczM6
IEVbZm9vJD0iYmFyIl0KLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIFJlbGF0aW9uIHsKLSAg
ICAgICAgICAgIERlc2NlbmRhbnQgPSAwLAotICAgICAgICAgICAgQ2hpbGQsCi0gICAgICAgICAg
ICBEaXJlY3RBZGphY2VudCwKLSAgICAgICAgICAgIEluZGlyZWN0QWRqYWNlbnQsCi0gICAgICAg
ICAgICBTdWJTZWxlY3RvcgotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gUHNldWRvVHlwZSB7
Ci0gICAgICAgICAgICBQc2V1ZG9Ob3RQYXJzZWQgPSAwLAotICAgICAgICAgICAgUHNldWRvT3Ro
ZXIsCi0gICAgICAgICAgICBQc2V1ZG9FbXB0eSwKLSAgICAgICAgICAgIFBzZXVkb0ZpcnN0Q2hp
bGQsCi0gICAgICAgICAgICBQc2V1ZG9GaXJzdE9mVHlwZSwKLSAgICAgICAgICAgIFBzZXVkb0xh
c3RDaGlsZCwKLSAgICAgICAgICAgIFBzZXVkb0xhc3RPZlR5cGUsCi0gICAgICAgICAgICBQc2V1
ZG9Pbmx5Q2hpbGQsCi0gICAgICAgICAgICBQc2V1ZG9Pbmx5T2ZUeXBlLAotICAgICAgICAgICAg
UHNldWRvRmlyc3RMaW5lLAotICAgICAgICAgICAgUHNldWRvRmlyc3RMZXR0ZXIsCi0gICAgICAg
ICAgICBQc2V1ZG9MaW5rLAotICAgICAgICAgICAgUHNldWRvVmlzaXRlZCwKLSAgICAgICAgICAg
IFBzZXVkb0FueUxpbmssCi0gICAgICAgICAgICBQc2V1ZG9BdXRvZmlsbCwKLSAgICAgICAgICAg
IFBzZXVkb0hvdmVyLAotICAgICAgICAgICAgUHNldWRvRHJhZywKLSAgICAgICAgICAgIFBzZXVk
b0ZvY3VzLAotICAgICAgICAgICAgUHNldWRvQWN0aXZlLAotICAgICAgICAgICAgUHNldWRvQ2hl
Y2tlZCwKLSAgICAgICAgICAgIFBzZXVkb0VuYWJsZWQsCi0gICAgICAgICAgICBQc2V1ZG9EaXNh
YmxlZCwKLSAgICAgICAgICAgIFBzZXVkb0luZGV0ZXJtaW5hdGUsCi0gICAgICAgICAgICBQc2V1
ZG9UYXJnZXQsCi0gICAgICAgICAgICBQc2V1ZG9CZWZvcmUsCi0gICAgICAgICAgICBQc2V1ZG9B
ZnRlciwKLSAgICAgICAgICAgIFBzZXVkb0xhbmcsCi0gICAgICAgICAgICBQc2V1ZG9Ob3QsCi0g
ICAgICAgICAgICBQc2V1ZG9Sb290LAotICAgICAgICAgICAgUHNldWRvU2VsZWN0aW9uCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgUHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKF9wc2V1ZG9UeXBlID09IFBzZXVkb05vdFBhcnNlZCkKLSAgICAg
ICAgICAgICAgICBleHRyYWN0UHNldWRvVHlwZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFBzZXVkb1R5cGU+KF9wc2V1ZG9UeXBlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgaGFzVGFnKCkgY29uc3QgeyByZXR1cm4gdGFnICE9IGFueVFOYW1lKCk7IH0KLSAgICAgICAg
Ym9vbCBoYXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBhdHRyICE9IGFueVFOYW1lKCk7IH0K
LQotICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyB2YWx1ZTsKLSAgICAgICAgQ1NTU2VsZWN0
b3IqIHRhZ0hpc3Rvcnk7Ci0gICAgICAgIENTU1NlbGVjdG9yKiBzaW1wbGVTZWxlY3RvcjsgLy8g
VXNlZCBmb3IgOm5vdC4KLSAgICAgICAgQ1NTU2VsZWN0b3IqIG5leHRTZWxlY3RvcjsgLy8gdXNl
ZCBmb3IgLC1jaGFpbmVkIHNlbGVjdG9ycwotICAgICAgICAKLSAgICAgICAgUXVhbGlmaWVkTmFt
ZSBhdHRyOwotICAgICAgICBRdWFsaWZpZWROYW1lIHRhZzsKLSAgICAgICAgCi0gICAgICAgIFJl
bGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1f
cmVsYXRpb24pOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAgICAgICA6IDM7
IC8vIGVudW0gUmVsYXRpb24KLSAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtYXRjaCAgICAgICA6
IDQ7IC8vIGVudW0gTWF0Y2gKLSAgICAgICAgdW5zaWduZWQgcHNldWRvSWQgICAgICAgICAgICA6
IDM7Ci0gICAgICAgIG11dGFibGUgdW5zaWduZWQgX3BzZXVkb1R5cGUgOiA1OyAvLyBQc2V1ZG9U
eXBlCi0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29u
c3Q7Ci0gICAgfTsKLQotICAgIC8vIGEgc3R5bGUgY2xhc3Mgd2hpY2ggaGFzIGEgcGFyZW50IChh
bG1vc3QgYWxsIGhhdmUpCi0gICAgY2xhc3MgU3R5bGVCYXNlIDogcHVibGljIFNoYXJlZDxTdHls
ZUJhc2U+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFN0eWxlQmFzZShTdHlsZUJhc2UqIHBhcmVu
dCkKLSAgICAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KSwgbV9zdHJpY3RQYXJzaW5nKCFwYXJl
bnQgfHwgcGFyZW50LT51c2VTdHJpY3RQYXJzaW5nKCkpIHsgfQotICAgICAgICB2aXJ0dWFsIH5T
dHlsZUJhc2UoKSB7IH0KLQotICAgICAgICBTdHlsZUJhc2UqIHBhcmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0UGFyZW50KFN0eWxlQmFzZSogcGFyZW50
KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9Ci0KLSAgICAgICAgLy8gcmV0dXJucyB0aGUgdXJsIG9m
IHRoZSBzdHlsZSBzaGVldCB0aGlzIG9iamVjdCBiZWxvbmdzIHRvCi0gICAgICAgIFN0cmluZyBi
YXNlVVJMKCk7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVTaGVldCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0NTU1N0eWxlU2hlZXQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNo
ZWV0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU3R5
bGVTaGVldExpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNNZWRpYUxpc3QoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNSdWxlTGlzdCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1J1
bGUoKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZVJ1bGUo
KSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDaGFyZXRSdWxlKCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzSW1wb3J0UnVsZSgpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhUnVsZSgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZvbnRGYWNlUnVsZSgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1BhZ2VSdWxlKCkgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzVW5rbm93blJ1bGUoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZURlY2xhcmF0aW9uKCkgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFsdWUoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcmltaXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlTGlzdCgpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbHVlQ3VzdG9tKCkgeyByZXR1cm4g
ZmFsc2U7IH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5n
JiwgYm9vbCAvKnN0cmljdCovID0gZmFsc2UpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBjaGVja0xvYWRlZCgpOwotCi0gICAgICAgIHZvaWQgc2V0U3RyaWN0UGFyc2lu
Zyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAgICAgICBib29sIHVzZVN0cmlj
dFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdFBhcnNpbmc7IH0KLQotICAgICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvUGFyZW50KCkgeyB9Ci0KLSAgICAgICAgU3R5bGVTaGVl
dCogc3R5bGVzaGVldCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU3R5bGVCYXNlKiBtX3Bh
cmVudDsKLSAgICAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7Ci0gICAgfTsKLQotICAgIC8vIGEg
c3R5bGUgY2xhc3Mgd2hpY2ggaGFzIGEgbGlzdCBvZiBjaGlsZHJlbiAoU3R5bGVTaGVldHMgZm9y
IGV4YW1wbGUpCi0gICAgY2xhc3MgU3R5bGVMaXN0IDogcHVibGljIFN0eWxlQmFzZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBTdHlsZUxpc3QoU3R5bGVCYXNlKiBwYXJlbnQpIDogU3R5bGVCYXNl
KHBhcmVudCkgeyB9Ci0KLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9jaGls
ZHJlbi5zaXplKCk7IH0KLSAgICAgICAgU3R5bGVCYXNlKiBpdGVtKHVuc2lnbmVkIG51bSkgeyBy
ZXR1cm4gbnVtIDwgbGVuZ3RoKCkgPyBtX2NoaWxkcmVuW251bV0uZ2V0KCkgOiAwOyB9Ci0KLSAg
ICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxTdHlsZUJhc2U+KTsKLSAgICAgICAgdm9pZCBp
bnNlcnQodW5zaWduZWQgcG9zaXRpb24sIFBhc3NSZWZQdHI8U3R5bGVCYXNlPik7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9uKTsKLQotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgVmVjdG9yPFJlZlB0cjxTdHlsZUJhc2U+ID4gbV9jaGlsZHJlbjsKLSAgICB9OwotCi0gICAg
aW50IGdldFByb3BlcnR5SUQoY29uc3QgY2hhciAqdGFnU3RyLCBpbnQgbGVuKTsKLQogfQogCiAj
ZW5kaWYKSW5kZXg6IGNzcy9NZWRpYUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvTWVkaWFMaXN0
LmgJKHJldmlzaW9uIDE0NDA2KQorKysgY3NzL01lZGlhTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMiArMjMsMTQgQEAKICNpZm5kZWYgTWVkaWFMaXN0X0gKICNkZWZpbmUgTWVkaWFMaXN0
X0gKIAotI2luY2x1ZGUgImNzc19iYXNlLmgiCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAjaW5j
bHVkZSAiRGVwcmVjYXRlZFZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENT
U1J1bGU7CiAKIGNsYXNzIE1lZGlhTGlzdCA6IHB1YmxpYyBTdHlsZUJhc2UKIHsKSW5kZXg6IGNz
cy9jc3NfYmFzZS5oIChkZWxldGVkKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBjc3MvQ1NTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBjc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMTQ0MDcpCisrKyBjc3MvQ1NT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBDU1NWYWx1
ZV9ICiAjZGVmaW5lIENTU1ZhbHVlX0gKIAotI2luY2x1ZGUgImNzc19iYXNlLmgiIC8vIGZvciBT
dHlsZUJhc2UKKyNpbmNsdWRlICJTdHlsZUJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBjc3MvU3R5bGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvU3R5bGVMaXN0LmNw
cAkocmV2aXNpb24gMTQ0MDYpCisrKyBjc3MvU3R5bGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNTUgKzIyLDExIEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICAqLwotCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiY3NzX2Jhc2UuaCIK
LQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiU3R5bGVTaGVldC5oIgorI2luY2x1
ZGUgIlN0eWxlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU3R5bGVCYXNl
OjpjaGVja0xvYWRlZCgpCi17Ci0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+
Y2hlY2tMb2FkZWQoKTsKLX0KLQotU3R5bGVTaGVldCogU3R5bGVCYXNlOjpzdHlsZXNoZWV0KCkK
LXsKLSAgICBTdHlsZUJhc2UgKmIgPSB0aGlzOwotICAgIHdoaWxlIChiICYmICFiLT5pc1N0eWxl
U2hlZXQoKSkKLSAgICAgICAgYiA9IGItPnBhcmVudCgpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTdHlsZVNoZWV0ICo+KGIpOwotfQotCi1TdHJpbmcgU3R5bGVCYXNlOjpiYXNlVVJMKCkKLXsK
LSAgICAvLyB0cnkgdG8gZmluZCB0aGUgc3R5bGUgc2hlZXQuIElmIGZvdW5kIGxvb2sgZm9yIGl0
cyB1cmwuCi0gICAgLy8gSWYgaXQgaGFzIG5vbmUsIGxvb2sgZm9yIHRoZSBwYXJlbnRzaGVldCwg
b3IgdGhlIHBhcmVudE5vZGUgYW5kCi0gICAgLy8gdHJ5IHRvIGZpbmQgb3V0IGFib3V0IHRoZWly
IHVybAotCi0gICAgU3R5bGVTaGVldCogc2hlZXQgPSBzdHlsZXNoZWV0KCk7Ci0KLSAgICBpZiAo
IXNoZWV0KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoIXNoZWV0LT5ocmVm
KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzaGVldC0+aHJlZigpOwotCi0gICAgLy8gZmlu
ZCBwYXJlbnQKLSAgICBpZiAoc2hlZXQtPnBhcmVudCgpKSAKLSAgICAgICAgcmV0dXJuIHNoZWV0
LT5wYXJlbnQoKS0+YmFzZVVSTCgpOwotCi0gICAgaWYgKCFzaGVldC0+b3duZXJOb2RlKCkpIAot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gc2hlZXQtPm93bmVyTm9kZSgp
LT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
CiB2b2lkIFN0eWxlTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U3R5bGVCYXNlPiBjaGlsZCkKIHsK
ICAgICBTdHlsZUJhc2UqIGMgPSBjaGlsZC5nZXQoKTsKQEAgLTk1LDI0OCArNTEsNCBAQAogICAg
IG1fY2hpbGRyZW4ucmVtb3ZlKHBvc2l0aW9uKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotdm9pZCBDU1NTZWxlY3Rvcjo6cHJpbnQoKQotewotICAgIGlmICh0YWdIaXN0b3J5
KQotICAgICAgICB0YWdIaXN0b3J5LT5wcmludCgpOwotfQotCi11bnNpZ25lZCBpbnQgQ1NTU2Vs
ZWN0b3I6OnNwZWNpZmljaXR5KCkKLXsKLSAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1lbnRzIGFu
ZCBwc2V1ZG8tY2xhc3NlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzcGVjaWZpY2l0eS4gVGhpcyBm
dW5jdGlvbgotICAgIC8vIGlzbid0IHF1aXRlIGNvcnJlY3QuCi0gICAgaW50IHMgPSAodGFnLmxv
Y2FsTmFtZSgpID09IHN0YXJBdG9tID8gMCA6IDEpOwotICAgIHN3aXRjaChtYXRjaCkKLSAgICB7
Ci0gICAgY2FzZSBJZDoKLSAgICAgICAgcyArPSAweDEwMDAwOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV4YWN0OgotICAgIGNhc2UgQ2xhc3M6Ci0gICAgY2FzZSBTZXQ6Ci0gICAgY2FzZSBM
aXN0OgotICAgIGNhc2UgSHlwaGVuOgotICAgIGNhc2UgUHNldWRvQ2xhc3M6Ci0gICAgY2FzZSBQ
c2V1ZG9FbGVtZW50OgotICAgIGNhc2UgQ29udGFpbjoKLSAgICBjYXNlIEJlZ2luOgotICAgIGNh
c2UgRW5kOgotICAgICAgICBzICs9IDB4MTAwOwotICAgIGNhc2UgTm9uZToKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGlmICh0YWdIaXN0b3J5KQotICAgICAgICBzICs9IHRhZ0hpc3Rvcnkt
PnNwZWNpZmljaXR5KCk7Ci0gICAgLy8gbWFrZSBzdXJlIGl0IGRvZXNuJ3Qgb3ZlcmZsb3cKLSAg
ICByZXR1cm4gcyAmIDB4ZmZmZmZmOwotfQotCi12b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNl
dWRvVHlwZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1hdGNo
ICE9IFBzZXVkb0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIGFjdGl2ZSgiYWN0aXZlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhZnRl
cigiYWZ0ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFueUxpbmsoIi13ZWJraXQtYW55
LWxpbmsiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGF1dG9maWxsKCItd2Via2l0LWF1dG9m
aWxsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBiZWZvcmUoImJlZm9yZSIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgY2hlY2tlZCgiY2hlY2tlZCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgZGlzYWJsZWQoImRpc2FibGVkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFn
KCItd2Via2l0LWRyYWciKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVtcHR5KCJlbXB0eSIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW5hYmxlZCgiZW5hYmxlZCIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgZmlyc3RDaGlsZCgiZmlyc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIGZpcnN0TGV0dGVyKCJmaXJzdC1sZXR0ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGZpcnN0TGluZSgiZmlyc3QtbGluZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
Zmlyc3RPZlR5cGUoImZpcnN0LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZv
Y3VzKCJmb2N1cyIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgaG92ZXIoImhvdmVyIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBpbmRldGVybWluYXRlKCJpbmRldGVybWluYXRlIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBsaW5rKCJsaW5rIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBsYW5nKCJsYW5nKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdENoaWxkKCJs
YXN0LWNoaWxkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsYXN0T2ZUeXBlKCJsYXN0LW9m
LXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG5vdFN0cigibm90KCIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgb25seUNoaWxkKCJvbmx5LWNoaWxkIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBvbmx5T2ZUeXBlKCJvbmx5LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIHJvb3QoInJvb3QiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNlbGVjdGlvbigi
c2VsZWN0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB0YXJnZXQoInRhcmdldCIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdmlzaXRlZCgidmlzaXRlZCIpOwotICAgIGJvb2wgZWxl
bWVudCA9IGZhbHNlOyAgICAgICAvLyBwc2V1ZG8tZWxlbWVudAotICAgIGJvb2wgY29tcGF0ID0g
ZmFsc2U7ICAgICAgICAvLyBzaW5nbGUgY29sb24gY29tcGF0YmlsaXR5IG1vZGUKLSAgICAKLSAg
ICBfcHNldWRvVHlwZSA9IFBzZXVkb090aGVyOwotICAgIGlmICh2YWx1ZSA9PSBhY3RpdmUpCi0g
ICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQWN0aXZlOwotICAgIGVsc2UgaWYgKHZhbHVlID09
IGFmdGVyKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvQWZ0ZXI7Ci0gICAgICAgIGVs
ZW1lbnQgPSBjb21wYXQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gYW55TGluaykK
LSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9BbnlMaW5rOwotICAgIGVsc2UgaWYgKHZhbHVl
ID09IGF1dG9maWxsKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0F1dG9maWxsOwotICAg
IGVsc2UgaWYgKHZhbHVlID09IGJlZm9yZSkgewotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVk
b0JlZm9yZTsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBhdCA9IHRydWU7Ci0gICAgfSBlbHNlIGlm
ICh2YWx1ZSA9PSBjaGVja2VkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0NoZWNrZWQ7
Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZGlzYWJsZWQpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0g
UHNldWRvRGlzYWJsZWQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZHJhZykKLSAgICAgICAgX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9EcmFnOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGVuYWJsZWQpCi0g
ICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRW5hYmxlZDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9
PSBlbXB0eSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9FbXB0eTsKLSAgICBlbHNlIGlm
ICh2YWx1ZSA9PSBmaXJzdENoaWxkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0ZpcnN0
Q2hpbGQ7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZmlyc3RMZXR0ZXIpIHsKLSAgICAgICAgX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdExldHRlcjsKLSAgICAgICAgZWxlbWVudCA9IGNvbXBhdCA9
IHRydWU7Ci0gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBmaXJzdExpbmUpIHsKLSAgICAgICAgX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9GaXJzdExpbmU7Ci0gICAgICAgIGVsZW1lbnQgPSBjb21wYXQgPSB0
cnVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gZmlyc3RPZlR5cGUpCi0gICAgICAgIF9wc2V1
ZG9UeXBlID0gUHNldWRvRmlyc3RPZlR5cGU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gZm9jdXMp
Ci0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvRm9jdXM7Ci0gICAgZWxzZSBpZiAodmFsdWUg
PT0gaG92ZXIpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvSG92ZXI7Ci0gICAgZWxzZSBp
ZiAodmFsdWUgPT0gaW5kZXRlcm1pbmF0ZSkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9J
bmRldGVybWluYXRlOwotICAgIGVsc2UgaWYgKHZhbHVlID09IGxpbmspCi0gICAgICAgIF9wc2V1
ZG9UeXBlID0gUHNldWRvTGluazsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBsYW5nKQotICAgICAg
ICBfcHNldWRvVHlwZSA9IFBzZXVkb0xhbmc7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gbGFzdENo
aWxkKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0xhc3RDaGlsZDsKLSAgICBlbHNlIGlm
ICh2YWx1ZSA9PSBsYXN0T2ZUeXBlKQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb0xhc3RP
ZlR5cGU7Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gbm90U3RyKQotICAgICAgICBfcHNldWRvVHlw
ZSA9IFBzZXVkb05vdDsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBvbmx5Q2hpbGQpCi0gICAgICAg
IF9wc2V1ZG9UeXBlID0gUHNldWRvT25seUNoaWxkOwotICAgIGVsc2UgaWYgKHZhbHVlID09IG9u
bHlPZlR5cGUpCi0gICAgICAgIF9wc2V1ZG9UeXBlID0gUHNldWRvT25seU9mVHlwZTsKLSAgICBl
bHNlIGlmICh2YWx1ZSA9PSByb290KQotICAgICAgICBfcHNldWRvVHlwZSA9IFBzZXVkb1Jvb3Q7
Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gc2VsZWN0aW9uKSB7Ci0gICAgICAgIF9wc2V1ZG9UeXBl
ID0gUHNldWRvU2VsZWN0aW9uOwotICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKLSAgICB9IGVsc2Ug
aWYgKHZhbHVlID09IHRhcmdldCkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9UYXJnZXQ7
Ci0gICAgZWxzZSBpZiAodmFsdWUgPT0gdmlzaXRlZCkKLSAgICAgICAgX3BzZXVkb1R5cGUgPSBQ
c2V1ZG9WaXNpdGVkOwotICAgIAotICAgIGlmIChtYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVt
ZW50KQotICAgICAgICBpZiAoIWNvbXBhdCkgCi0gICAgICAgICAgICBfcHNldWRvVHlwZSA9IFBz
ZXVkb090aGVyOwotICAgICAgICBlbHNlIAotICAgICAgICAgICBtYXRjaCA9IFBzZXVkb0VsZW1l
bnQ7Ci0gICAgZWxzZSBpZiAobWF0Y2ggPT0gUHNldWRvRWxlbWVudCAmJiAhZWxlbWVudCkKLSAg
ICAgICAgX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdGhlcjsKLX0KLQotCi1ib29sIENTU1NlbGVjdG9y
OjpvcGVyYXRvciA9PSAoY29uc3QgQ1NTU2VsZWN0b3IgJm90aGVyKQotewotICAgIGNvbnN0IENT
U1NlbGVjdG9yICpzZWwxID0gdGhpczsKLSAgICBjb25zdCBDU1NTZWxlY3RvciAqc2VsMiA9ICZv
dGhlcjsKLQotICAgIHdoaWxlIChzZWwxICYmIHNlbDIpIHsKLSAgICAgICAgaWYgKHNlbDEtPnRh
ZyAhPSBzZWwyLT50YWcgfHwgc2VsMS0+YXR0ciAhPSBzZWwyLT5hdHRyIHx8Ci0gICAgICAgICAg
ICAgc2VsMS0+cmVsYXRpb24oKSAhPSBzZWwyLT5yZWxhdGlvbigpIHx8IHNlbDEtPm1hdGNoICE9
IHNlbDItPm1hdGNoIHx8Ci0gICAgICAgICAgICAgc2VsMS0+dmFsdWUgIT0gc2VsMi0+dmFsdWUg
fHwKLSAgICAgICAgICAgICBzZWwxLT5wc2V1ZG9UeXBlKCkgIT0gc2VsMi0+cHNldWRvVHlwZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzZWwxID0gc2VsMS0+dGFnSGlz
dG9yeTsKLSAgICAgICAgc2VsMiA9IHNlbDItPnRhZ0hpc3Rvcnk7Ci0gICAgfQotICAgIGlmIChz
ZWwxIHx8IHNlbDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAotewotICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG5hbWVzcGFjZXMgd2hlbiBkdW1waW5nIHRoZSBzZWxlY3RvciB0ZXh0LiAt
ZHdoCi0gICAgU3RyaW5nIHN0cjsKLSAgICBjb25zdCBDU1NTZWxlY3RvciogY3MgPSB0aGlzOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gY3MtPnRhZy5sb2NhbE5hbWUoKTsK
LSAgICBpZiAoY3MtPm1hdGNoID09IENTU1NlbGVjdG9yOjpOb25lIHx8IGxvY2FsTmFtZSAhPSBz
dGFyQXRvbSkKLSAgICAgICAgc3RyID0gbG9jYWxOYW1lOwotICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgIGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7Ci0gICAgICAgICAgICBz
dHIgKz0gIiMiOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAgfSBlbHNl
IGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7Ci0gICAgICAgICAgICBzdHIg
Kz0gIi4iOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAgfSBlbHNlIGlm
IChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7Ci0gICAgICAgICAgICBz
dHIgKz0gIjoiOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAgfSBlbHNl
IGlmIChjcy0+bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKLSAgICAgICAg
ICAgIHN0ciArPSAiOjoiOwotICAgICAgICAgICAgc3RyICs9IGNzLT52YWx1ZTsKLSAgICAgICAg
fSBlbHNlIGlmIChjcy0+aGFzQXR0cmlidXRlKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgZHVtcGluZyBuYW1lc3BhY2VzLgotICAgICAgICAgICAgU3RyaW5nIGF0
dHJOYW1lID0gY3MtPmF0dHIubG9jYWxOYW1lKCk7Ci0gICAgICAgICAgICBzdHIgKz0gIlsiOwot
ICAgICAgICAgICAgc3RyICs9IGF0dHJOYW1lOwotICAgICAgICAgICAgc3dpdGNoIChjcy0+bWF0
Y2gpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFjdDoKLSAgICAgICAg
ICAgICAgICAgICAgc3RyICs9ICI9IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2V0OgotICAgICAgICAgICAgICAgICAgICAv
LyBzZXQgaGFzIG5vIG9wZXJhdG9yIG9yIHZhbHVlLCBqdXN0IHRoZSBhdHRyTmFtZQotICAgICAg
ICAgICAgICAgICAgICBzdHIgKz0gIl0iOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpMaXN0OgotICAgICAgICAgICAgICAgICAg
ICBzdHIgKz0gIn49IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6SHlwaGVuOgotICAgICAgICAgICAgICAgICAgICBzdHIgKz0g
Inw9IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6QmVnaW46Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAiXj0iOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpFbmQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSAiJD0iOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpDb250YWluOgot
ICAgICAgICAgICAgICAgICAgICBzdHIgKz0gIio9IjsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY3MtPm1hdGNoICE9IENTU1NlbGVjdG9y
OjpTZXQpIHsKLSAgICAgICAgICAgICAgICBzdHIgKz0gIlwiIjsKLSAgICAgICAgICAgICAgICBz
dHIgKz0gY3MtPnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ciArPSAiXCJdIjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoY3MtPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0
b3I6OlN1YlNlbGVjdG9yIHx8ICFjcy0+dGFnSGlzdG9yeSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjcyA9IGNzLT50YWdIaXN0b3J5OwotICAgIH0KLSAgICBpZiAoY3MtPnRhZ0hpc3Rv
cnkpIHsKLSAgICAgICAgU3RyaW5nIHRhZ0hpc3RvcnlUZXh0ID0gY3MtPnRhZ0hpc3RvcnktPnNl
bGVjdG9yVGV4dCgpOwotICAgICAgICBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6
OkRpcmVjdEFkamFjZW50KQotICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiICsg
IiArIHN0cjsKLSAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6
OkluZGlyZWN0QWRqYWNlbnQpCi0gICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIg
fiAiICsgc3RyOwotICAgICAgICBlbHNlIGlmIChjcy0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6Q2hpbGQpCi0gICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIgPiAiICsgc3Ry
OwotICAgICAgICBlbHNlIC8vIERlc2NlbmRhbnQKLSAgICAgICAgICAgIHN0ciA9IHRhZ0hpc3Rv
cnlUZXh0ICsgIiAiICsgc3RyOwotICAgIH0KLSAgICByZXR1cm4gc3RyOwotfQotCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb2xvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtzdmcyL3N2Zy9TVkdDb2xvci5oCShyZXZpc2lvbiAxNDQwNykKKysrIGtzdmcyL3N2
Zy9TVkdDb2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTIgQEAKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZQogewogICAgIGNsYXNzIFJHQkNvbG9yOworICAg
IGNsYXNzIFN0cmluZ0ltcGw7CiAKICAgICBjbGFzcyBTVkdDb2xvciA6IHB1YmxpYyBDU1NWYWx1
ZQogICAgIHsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2
ZzIvc3ZnL1NWR0NvbG9yLmNwcAkocmV2aXNpb24gMTQ0MDcpCisrKyBrc3ZnMi9zdmcvU1ZHQ29s
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNSArMjIsMTQgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2lmIFNWR19TVVBQT1JUCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZ0xpc3Qu
aCIKLQotCi0jaW5jbHVkZSAia3N2Zy5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVk
ZSAiU1ZHRE9NSW1wbGVtZW50YXRpb24uaCIKKworI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmdM
aXN0LmgiCiAjaW5jbHVkZSAiUkdCQ29sb3IuaCIKKyNpbmNsdWRlICJTVkdET01JbXBsZW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgImtzdmcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0NvbG9yOjpTVkdDb2xvcigpIDogQ1NTVmFsdWUoKQog
ewpAQCAtMjI0LDggKzIyMyw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIERlcHJlY2F0ZWRT
dHJpbmcgcGFyc2UgPSBtX3JnYkNvbG9yLmRlcHJlY2F0ZWRTdHJpbmcoKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICBpZihwYXJzZS5zdGFydHNXaXRoKCJyZ2IoIikpCi0gICAgeworICAgIGlmIChw
YXJzZS5zdGFydHNXaXRoKCJyZ2IoIikpIHsKICAgICAgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3Qg
Y29sb3JzID0gRGVwcmVjYXRlZFN0cmluZ0xpc3Q6OnNwbGl0KCcsJywgcGFyc2UpOwogICAgICAg
ICBEZXByZWNhdGVkU3RyaW5nIHIgPSBjb2xvcnNbMF0ucmlnaHQoKGNvbG9yc1swXS5sZW5ndGgo
KSAtIDQpKTsKICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBnID0gY29sb3JzWzFdOwpAQCAtMjM2
LDIyICsyMzQsMTggQEAKICAgICAgICAgICAgIHIgPSBEZXByZWNhdGVkU3RyaW5nOjpudW1iZXIo
aW50KChkb3VibGUoMjU1ICogci50b0RvdWJsZSgpKSAvIDEwMC4wKSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYoZy5jb250YWlucygiJSIpKQotICAgICAgICB7CisgICAgICAgIGlmIChnLmNv
bnRhaW5zKCIlIikpIHsKICAgICAgICAgICAgIGcgPSBnLmxlZnQoZy5sZW5ndGgoKSAtIDEpOwog
ICAgICAgICAgICAgZyA9IERlcHJlY2F0ZWRTdHJpbmc6Om51bWJlcihpbnQoKGRvdWJsZSgyNTUg
KiBnLnRvRG91YmxlKCkpIC8gMTAwLjApKSk7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgaWYo
Yi5jb250YWlucygiJSIpKQotICAgICAgICB7CisgICAgICAgIGlmIChiLmNvbnRhaW5zKCIlIikp
IHsKICAgICAgICAgICAgIGIgPSBiLmxlZnQoYi5sZW5ndGgoKSAtIDEpOwogICAgICAgICAgICAg
YiA9IERlcHJlY2F0ZWRTdHJpbmc6Om51bWJlcihpbnQoKGRvdWJsZSgyNTUgKiBiLnRvRG91Ymxl
KCkpIC8gMTAwLjApKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3FDb2xvciA9IENvbG9yKHIu
dG9JbnQoKSwgZy50b0ludCgpLCBiLnRvSW50KCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewor
ICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBjb2xvck5hbWUgPSBtX3JnYkNvbG9yLmxvd2Vy
KCk7CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgbmFtZSA9IGNvbG9yTmFtZS5kZXByZWNhdGVk
U3RyaW5nKCk7CiAvLyAgICAgICAgaW50IGNvbCA9IFdlYkNvcmU6OmdldFZhbHVlSUQobmFtZS5h
c2NpaSgpLCBuYW1lLmxlbmd0aCgpKTsKQEAgLTI4Niw2ICsyODAsOCBAQAogICAgIHJldHVybiBt
X3FDb2xvcjsKIH0KIAorfQorCiAvLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBP
UlQKIApJbmRleDoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ0MDYpCisrKyBrc3Zn
Mi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkg
QEAKIAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IktDYW52YXNDcmVhdG9yLmgiCiAjaW5jbHVkZSAiS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgiCisj
aW5jbHVkZSAiS1JlbmRlcmluZ0RldmljZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQ2FudmFzLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgpAQCAt
MzgsMjEgKzQwLDIyIEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJjc3NfYmFz
ZS5oIgogI2luY2x1ZGUgImtzdmcuaCIKICNpbmNsdWRlICJrc3ZnY3NzcHJvcGVydGllcy5oIgot
I2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc0NyZWF0b3IuaD4KLSNpbmNsdWRlIDxrY2FudmFzL2Rl
dmljZS9LUmVuZGVyaW5nRGV2aWNlLmg+CisKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlZmluZWQgaW4gQ1NTR3JhbW1hci55LCBidXQg
bm90IGluIGFueSBoZWFkZXIsIHNvIGp1c3QgZGVjbGFyZSBpdCBoZXJlIGZvciBub3cuCitpbnQg
Z2V0UHJvcGVydHlJRChjb25zdCBjaGFyKiBzdHIsIGludCBsZW4pOworCiB1c2luZyBuYW1lc3Bh
Y2UgU1ZHTmFtZXM7CiAKIFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykKIDogU1ZHRWxlbWVudCh0YWdO
YW1lLCBkb2MpCisgICAgLCBtX3VwZGF0ZVZlY3RvcmlhbChmYWxzZSkKIHsKLSAgICBtX3VwZGF0
ZVZlY3RvcmlhbCA9IGZhbHNlOwogfQogCiBTVkdTdHlsZWRFbGVtZW50Ojp+U1ZHU3R5bGVkRWxl
bWVudCgpCkBAIC05Miw4ICs5NSw3IEBACiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6Om5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0CiB7CiAgICAgLy8gRm9yIG1vc3QgY2FzZXMgd2UgbmVlZCB0
byBoYW5kbGUgdmVjdG9yaWFsIGRhdGEgY2hhbmdlcyAoaWUuIHJlY3QgeCBjaGFuZ2VkKQotICAg
IGlmKCFvd25lckRvY3VtZW50KCktPnBhcnNpbmcoKSkKLSAgICB7CisgICAgaWYgKCFvd25lckRv
Y3VtZW50KCktPnBhcnNpbmcoKSkgewogICAgICAgICAvLyBUT0RPOiBVc2UgYSBtb3JlIG9wdGlt
aXplZCB3YXkgb2YgdXBkYXRpbmcsIG1lYW5zIG5vdCBjYWxsaW5nIHVwZGF0ZUNhbnZhc0l0ZW0o
KSBoZXJlIQogICAgICAgICBjb25zdF9jYXN0PFNWR1N0eWxlZEVsZW1lbnQgKj4odGhpcyktPm1f
dXBkYXRlVmVjdG9yaWFsID0gdHJ1ZTsKICAgICAgICAgY29uc3RfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50ICo+KHRoaXMpLT51cGRhdGVDYW52YXNJdGVtKCk7Cg==
</data>
<flag name="review"
          id="2354"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>