<?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>188709</bug_id>
          
          <creation_ts>2018-08-17 15:46:07 -0700</creation_ts>
          <short_desc>Add some plumbing for safe browsing</short_desc>
          <delta_ts>2018-08-17 16:25:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451250</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-17 15:46:07 -0700</bug_when>
    <thetext>Add some plumbing for safe browsing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451251</commentid>
    <comment_count>1</comment_count>
      <attachid>347401</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-17 15:52:22 -0700</bug_when>
    <thetext>Created attachment 347401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451266</commentid>
    <comment_count>2</comment_count>
      <attachid>347408</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-17 16:13:55 -0700</bug_when>
    <thetext>Created attachment 347408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451270</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-17 16:24:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234998</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451271</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-17 16:25:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/43444397&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347401</attachid>
            <date>2018-08-17 15:52:22 -0700</date>
            <delta_ts>2018-08-17 16:13:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188709-20180817155221.patch</filename>
            <type>text/plain</type>
            <size>63509</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTA4LTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNvbWUg
cGx1bWJpbmcgZm9yIHNhZmUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODcwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIEp1c3QgcGFzc2luZyBh
cm91bmQgdW51c2VkIGJvb2xlYW5zLgorICAgICAgICBXZSB3aWxsIG5lZWQgdGhpcyBmb3IgYSB3
YXkgdG8gbG9hZCBhIHBhZ2UgZXZlbiB0aG91Z2ggc2FmZSBicm93c2luZyBzYXlzIGl0J3MgdW5z
YWZlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRS
ZXF1ZXN0OjpzZXRTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2spOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdDo6c2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAg
KiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAgICAqIGxvYWRlci9TaG91bGRTa2lwU2Fm
ZUJyb3dzaW5nQ2hlY2suaDogQWRkZWQuCisKIDIwMTgtMDgtMTYgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGFsbG93
U2NyaXB0c1RvQ2xvc2VXaW5kb3dzIHNldHRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzNDkzMikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTgzOSw2ICsxODM5LDcgQEAKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMw
IC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVy
VGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFy
c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZF
NjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8q
IFNvY2tldFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzhDNjAwOTIx
Mjc2Qjg3MDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhDNjAwNzIxMjc2QjBGMDA4
MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNBMURFQzYxRjcxRjFDNzAwRTcxQkQz
IC8qIEhUVFBIZWFkZXJGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQjM3
RkZGMUM2MkQyQTEwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjM3RkZEMUM2MkQyNzgwMEYyMDE4
OCAvKiBTY3JvbGxBbmltYXRvck1vY2suaCAqLzsgfTsKIAkJNUNCQzhEQUQxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOERBQjFBQUEzMDIyMDBFMUM4MDMgLyogTWVk
aWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCAqLzsgfTsKQEAgLTg2NzMsNiArODY3NCw3IEBACiAJ
CTVDNkU2NTNGMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAvKiBT
aG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdEVkZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDOUI4NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZE1ldHJp
Y3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrTG9h
ZE1ldHJpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUVGMTZGMURGRjcx
OTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWFBhdGhHcmFtbWFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI0NDAyLDYgKzI0NDA0LDcgQEAKIAkJCQlDQkMyRDIyRTFDRTVCNzdEMDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oICovLAogCQkJCTI4NkU0RENCMjAyMTA0ODgwMDMx
NTIzOCAvKiBTZXJ2ZXJUaW1pbmcuY3BwICovLAogCQkJCTI4NkU0RENDMjAyMTA0ODgwMDMxNTIz
OCAvKiBTZXJ2ZXJUaW1pbmcuaCAqLywKKwkJCQk1QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyog
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggKi8sCiAJCQkJODM2MkU4QkYyMENFRjlDQjAw
MjQ1ODg2IC8qIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oICovLAogCQkJCTUxMzI3RDVG
MTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUxMzI3RDVFMTFB
MzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLywKQEAgLTMwMjk4LDYgKzMwMzAxLDcg
QEAKIAkJCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5nSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJl
ZFRpbWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzhDNjAwOTIxMjc2Qjg3MDA4MkY4OEYgLyog
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzYyRThD
MTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTFFMDY3RUUxRTYyNDZFNTAwMTYyRDE2IC8qIFNpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw3ICs0NDYs
NyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjCiB7CiB9CiAKLXZv
aWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2Rl
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZv
cm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNr
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM0OTMyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpCiAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikgZmluYWwgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25N
b2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIFNob3VsZFNraXBTYWZlQnJvd3Np
bmdDaGVjaywgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBv
bGljeUNoZWNrKCkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNr
LmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCkBAIC02Myw2ICs2NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZChib29sIHZhbHVlKSB7IG1fc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
ID0gdmFsdWU7IH0KICAgICBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOyB9CiAKKyAgICB2b2lkIHNl
dFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayhTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sg
c2tpcCkgeyBtX3Nob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayA9IHNraXA7IH0KKyAgICBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKCkgeyBy
ZXR1cm4gbV9zaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s7IH0KKyAgICAKICAgICBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1YnN0aXR1
dGVEYXRhOyB9CiAgICAgdm9pZCBzZXRTdWJzdGl0dXRlRGF0YShjb25zdCBTdWJzdGl0dXRlRGF0
YSYgZGF0YSkgeyBtX3N1YnN0aXR1dGVEYXRhID0gZGF0YTsgfQogICAgIGJvb2wgaGFzU3Vic3Rp
dHV0ZURhdGEoKSB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKTsgfQpAQCAtMTEw
LDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgbV9pbml0aWF0
ZWRCeU1haW5GcmFtZSB7IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAgICAgYm9v
bCBtX2lzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiB7IGZhbHNlIH07CiAgICAgU3lz
dGVtUHJldmlld0luZm8gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKKyAgICBTaG91bGRTa2lwU2FmZUJy
b3dzaW5nQ2hlY2sgbV9zaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgeyBTaG91bGRTa2lwU2Fm
ZUJyb3dzaW5nQ2hlY2s6Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNDkzMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMDMsNyArMTAwMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRBcmNoaXZlKFJlZjxBcmNo
aXYKIAogICAgIGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExv
YWRlcihyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAgICAgZG9jdW1lbnRMb2FkZXItPnNldEFy
Y2hpdmUoV1RGTW92ZShhcmNoaXZlKSk7Ci0gICAgbG9hZChkb2N1bWVudExvYWRlci5wdHIoKSk7
CisgICAgbG9hZChkb2N1bWVudExvYWRlci5nZXQoKSwgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0No
ZWNrOjpObyk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJh
bWVMb2FkUmVxdWUKICAgICBpZiAoaXNTeXN0ZW1QcmV2aWV3KQogICAgICAgICByZXF1ZXN0LnNl
dFN5c3RlbVByZXZpZXdSZWN0KGZyYW1lTG9hZFJlcXVlc3Quc3lzdGVtUHJldmlld1JlY3QoKSk7
CiAjZW5kaWYKLSAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBs
b2NrSGlzdG9yeSwgbmV3TG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBbdGhpcywgaXNSZWRpcmVjdCwgc2FtZVVSTCwgbmV3TG9hZFR5cGUs
IHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgeworICAgIGxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2Fk
VHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGZy
YW1lTG9hZFJlcXVlc3Quc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKCksIFt0aGlzLCBpc1Jl
ZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVh
c2UoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBAIC0xNDY5LDEwICsxNDY5LDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgcmVxdWVzdCk7
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjdXJyZW50TG9hZFNob3VsZEJlVHJlYXRlZEFzQ29u
dGludWluZ0xvYWRHdWFyZChtX2N1cnJlbnRMb2FkU2hvdWxkQmVUcmVhdGVkQXNDb250aW51aW5n
TG9hZCwgcmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQoKSk7Ci0gICAgbG9hZChs
b2FkZXIucHRyKCkpOworICAgIGxvYWQobG9hZGVyLmdldCgpLCByZXF1ZXN0LnNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjaygpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlw
ZSB0eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgRnJhbWVMb2Fk
VHlwZSB0eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgU2hvdWxkU2tpcFNhZmVC
cm93c2luZ0NoZWNrIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZjxEb2N1bWVudExvYWRl
cj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVs
dFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwg
YWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCksIGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KCkpOwpAQCAtMTQ4NCwyNyArMTQ4NCwyNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkV2l0aE5hdmlnYXRpb25BY3RpCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
IGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVu
Y29kaW5nKCkpOwogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIHR5
cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIHR5cGUsIFdURk1vdmUo
Zm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExv
YWRlciogbmV3RG9jdW1lbnRMb2FkZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50
TG9hZGVyJiBuZXdEb2N1bWVudExvYWRlciwgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrIHNo
b3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaykKIHsKLSAgICBSZXNvdXJjZVJlcXVlc3QmIHIgPSBu
ZXdEb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOworICAgIFJlc291cmNlUmVxdWVzdCYgciA9IG5l
d0RvY3VtZW50TG9hZGVyLnJlcXVlc3QoKTsKICAgICBhZGRFeHRyYUZpZWxkc1RvTWFpblJlc291
cmNlUmVxdWVzdChyKTsKICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CiAKLSAgICBpZiAoc2hvdWxk
VHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQobmV3RG9jdW1lbnRMb2FkZXItPm9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpKSkgeworICAgIGlmIChzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChuZXdE
b2N1bWVudExvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgci5zZXRD
YWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEpOwogICAgICAgICB0eXBlID0gRnJhbWVMb2FkVHlwZTo6U2FtZTsKLSAgICB9IGVsc2Ug
aWYgKHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3VtZW50TG9hZGVyLT51bnJl
YWNoYWJsZVVSTCgpKSAmJiBpc1JlbG9hZChtX2xvYWRUeXBlKSkKKyAgICB9IGVsc2UgaWYgKHNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3VtZW50TG9hZGVyLnVucmVhY2hhYmxl
VVJMKCkpICYmIGlzUmVsb2FkKG1fbG9hZFR5cGUpKQogICAgICAgICB0eXBlID0gbV9sb2FkVHlw
ZTsKLSAgICBlbHNlIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0
aExvY2tlZEJhY2tGb3J3YXJkTGlzdCAmJiAhbmV3RG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxl
VVJMKCkuaXNFbXB0eSgpICYmIG5ld0RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlz
VmFsaWQoKSkKKyAgICBlbHNlIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlZGly
ZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCAmJiAhbmV3RG9jdW1lbnRMb2FkZXIudW5yZWFj
aGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgbmV3RG9jdW1lbnRMb2FkZXIuc3Vic3RpdHV0ZURhdGEo
KS5pc1ZhbGlkKCkpCiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhM
b2NrZWRCYWNrRm9yd2FyZExpc3Q7CiAgICAgZWxzZQogICAgICAgICB0eXBlID0gRnJhbWVMb2Fk
VHlwZTo6U3RhbmRhcmQ7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKLSAgICAgICAgbmV3
RG9jdW1lbnRMb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3Zl
cnJpZGVFbmNvZGluZygpKTsKKyAgICAgICAgbmV3RG9jdW1lbnRMb2FkZXIuc2V0T3ZlcnJpZGVF
bmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29kaW5nKCkpOwogICAgIAogICAg
IC8vIFdoZW4gd2UgbG9hZGluZyBhbHRlcm5hdGUgY29udGVudCBmb3IgYW4gdW5yZWFjaGFibGUg
VVJMIHRoYXQgd2UncmUKICAgICAvLyB2aXNpdGluZyBpbiB0aGUgaGlzdG9yeSBsaXN0LCB3ZSB0
cmVhdCBpdCBhcyBhIHJlbG9hZCBzbyB0aGUgaGlzdG9yeSBsaXN0IApAQCAtMTUxNCw3ICsxNTE0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbgogICAgIC8vIHNo
b3VsZG4ndCBhIG1vcmUgZXhwbGljaXQgdHlwZSBvZiByZWxvYWQgYmUgZGVmaW5lZCwgdGhhdCBt
ZWFucyByb3VnaGx5IAogICAgIC8vICJsb2FkIHdpdGhvdXQgYWZmZWN0aW5nIGhpc3RvcnkiID8g
CiAgICAgaWYgKHNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwobmV3RG9jdW1lbnRM
b2FkZXIpKSB7Ci0gICAgICAgIC8vIHNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwo
KSByZXR1cm5zIHRydWUgb25seSB3aGVuIHRoZSBvcmlnaW5hbCBsb2FkIHR5cGUgaXMgYmFjay1m
b3J3YXJkLgorICAgICAgICAvLyBzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMIHJl
dHVybnMgdHJ1ZSBvbmx5IHdoZW4gdGhlIG9yaWdpbmFsIGxvYWQgdHlwZSBpcyBiYWNrLWZvcndh
cmQuCiAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBzaG91bGQgc2F2ZSB0aGUgZG9jdW1lbnQg
c3RhdGUgbm93LiBPdGhlcndpc2UgdGhlIHN0YXRlIGNhbiBiZSBsb3N0IGJlY2F1c2UgbG9hZCB0
eXBlIGlzCiAgICAgICAgIC8vIGNoYW5nZWQgYW5kIHVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdh
dGlvbigpIHdpbGwgbm90IGJlIGNhbGxlZCB3aGVuIGxvYWRpbmcgaXMgY29tbWl0dGVkLgogICAg
ICAgICBoaXN0b3J5KCkuc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKQEAgLTE1MjMsMTAg
KzE1MjMsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbgogICAg
ICAgICB0eXBlID0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwogICAgIH0KIAotICAgIGxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIobmV3RG9jdW1lbnRMb2FkZXIsIHR5cGUsIHsgfSwgQWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFtd
IHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcigmbmV3RG9jdW1lbnRMb2FkZXIsIHR5
cGUsIG51bGxwdHIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2spOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3Rh
dGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFJlZlB0
cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFNo
b3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBS
ZXRhaW4gYmVjYXVzZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBtYXkgcmVsZWFzZSB0aGUgbGFz
dCByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwpAQCAt
MTYwNSw3ICsxNjA1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cgogICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1
ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RS
ZXNwb25zZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29t
cGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0
ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICBjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBz
aG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKKyAgICB9LCBQb2xpY3lEZWNpc2lvbk1vZGU6OkFz
eW5jaHJvbm91cywgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjaygpCkBAIC0xNjcwLDkg
KzE2NzAsOSBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSCiAgICAg
cmV0dXJuIGVycm9yLmlzTnVsbCgpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxv
YWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCitib29s
IEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50
TG9hZGVyJiBkb2NMb2FkZXIpCiB7Ci0gICAgVVJMIHVucmVhY2hhYmxlVVJMID0gZG9jTG9hZGVy
LT51bnJlYWNoYWJsZVVSTCgpOworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci51
bnJlYWNoYWJsZVVSTCgpOwogCiAgICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcxMiw3ICsxNzEyLDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jbwogCiAgICAgbG9hZGVyLT5zZXRPdmVycmlkZUVuY29k
aW5nKGVuY29kaW5nKTsKIAotICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigp
LCBGcmFtZUxvYWRUeXBlOjpSZWxvYWQsIHsgfSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
OjpZZXMsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFtdIHsgfSk7CisgICAgbG9h
ZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZyYW1lTG9hZFR5cGU6OlJlbG9hZCwg
eyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpObyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChPcHRpb25TZXQ8
UmVsb2FkT3B0aW9uPiBvcHRpb25zKQpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYQogICAgICAgICByZXR1cm4gRnJhbWVMb2FkVHlw
ZTo6UmVsb2FkOwogICAgIH07CiAgICAgCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2Fk
ZXIucHRyKCksIGZyYW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMpLCB7IH0sIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Ok5vLCBbXSB7IH0pOworICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLnB0cigp
LCBmcmFtZUxvYWRUeXBlRm9yUmVsb2FkT3B0aW9ucyhvcHRpb25zKSwgeyB9LCBBbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkw6OlllcywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJ
dGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQpAQCAtMjkxOCw3ICsyOTE4LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTAogICAgIGlmICghZnJh
bWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBm
cmFtZSBpcyBkb25lIGVhcmxpZXIgaW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgogICAg
ICAgICBpZiAoYXV0byogdGFyZ2V0RnJhbWUgPSBmb3JtU3RhdGUgPyBudWxscHRyIDogZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUpKSB7Ci0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RG
TW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjazo6Tm8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yOTMxLDcgKzI5MzEsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMCiAKICAgICAvLyBtdXN0IGdyYWIgdGhp
cyBub3csIHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xl
YXIgdGhpcyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5n
OwotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBh
Y3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3Jr
aW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgV1RGTW92
ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIHJlcXVlc3Quc2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrKCksIFt0aGlzLCBpc1JlZGlyZWN0LCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAg
ICAgICAgICAgbV9xdWlja1JlZGlyZWN0Q29taW5nID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAo
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQpAQCAtMzM5Myw3ICszMzkzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaQogICAgIH0KIAogICAgIE5hdmlnYXRp
b25BY3Rpb24gbmV3QWN0aW9uIHsgKmZyYW1lLT5kb2N1bWVudCgpLCByZXF1ZXN0LCBJbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBhY3Rpb24uc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpIH07Ci0gICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5s
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgbmV3QWN0aW9uLCBMb2NrSGlzdG9yeTo6
Tm8sIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBmb3JtU3RhdGUsIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCwgW10geyB9KTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0b3J5OjpObywgRnJhbWVM
b2FkVHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVxdWVzdEZyb21EZWxlZ2F0ZShSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHVuc2lnbmVkIGxvbmcmIGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3Im
IGVycm9yKQpAQCAtMzU4OSw3ICszNTg5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZl
cmVudERvY3VtZW50SQogICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihXVEZNb3ZlKGFjdGlvbikpOwogCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hl
Y2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgICAgICBsb2FkV2l0aERvY3VtZW50
TG9hZGVyKGRvY3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Olllcywgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBbXSB7IH0pOworICAg
ICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyLCBsb2FkVHlwZSwgeyB9
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcywgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzY3Nyw3ICszNjc3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogCiAgICAgYWN0aW9uLnNl
dFRhcmdldEJhY2tGb3J3YXJkSXRlbShpdGVtKTsKIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbihyZXF1ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIHsgfSwgQWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFtdIHsgfSk7CisgICAgbG9hZFdpdGhOYXZp
Z2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBsb2FkVHlwZSwg
eyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7CiB9CiAKIC8vIExvYWRzIGNv
bnRlbnQgaW50byB0aGlzIGZyYW1lLCBhcyBzcGVjaWZpZWQgYnkgaGlzdG9yeSBpdGVtCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjM0OTMyKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDgg
KzQxLDEwIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oIgogI2luY2x1ZGUgIlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpAQCAtMzYxLDE2ICszNjMs
MTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlT2xkRGF0YVNvdXJjZXMoKTsKICAgICB2b2lk
IHdpbGxSZXN0b3JlRnJvbUNhY2hlZFBhZ2UoKTsKIAotICAgIGJvb2wgc2hvdWxkUmVsb2FkVG9I
YW5kbGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciopOworICAgIGJvb2wgc2hvdWxkUmVs
b2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciYpOwogCiAgICAgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGlu
aXRpYWxIYXNJbnNlY3VyZUNvbnRlbnQpOwogCiAgICAgdm9pZCB1cmxTZWxlY3RlZChGcmFtZUxv
YWRSZXF1ZXN0JiYsIEV2ZW50Kik7CiAKLSAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIo
RG9jdW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgY29udGludWVMb2FkQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5Ci0gICAgdm9pZCBsb2FkKERvY3VtZW50TG9hZGVyKik7IC8vIENhbGxzIGxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIKKyAgICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9j
dW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRUeXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgU2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrID0gU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpObywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8gQ2FsbHMgY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CisgICAgdm9pZCBsb2FkKERvY3VtZW50TG9hZGVyJiwg
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExv
YWRlcgogCi0gICAgdm9pZCBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIExvY2tIaXN0b3J5LCBGcmFtZUxvYWRU
eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7IC8vIENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2Fk
ZXIKKyAgICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUs
IFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgU2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrID0gU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpObywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gW10geyB9KTsgLy8gQ2FsbHMgbG9hZFdpdGhE
b2N1bWVudExvYWRlcgogCiAgICAgdm9pZCBsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVz
dCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBFdmVudCosIFJlZlB0
cjxGb3JtU3RhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBs
b2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVM
b2FkVHlwZSwgRXZlbnQqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgY2xhc3MgVVJMOwog
Y2xhc3MgV2lkZ2V0OwogCiBlbnVtIGNsYXNzIFBvbGljeURlY2lzaW9uTW9kZTsKK2VudW0gY2xh
c3MgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOworCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVj
dGlvbjsKIAogdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlvbik+IEZyYW1l
UG9saWN5RnVuY3Rpb247CkBAIC0xOTEsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURl
Y2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBTaG91bGRT
a2lwU2FmZUJyb3dzaW5nQ2hlY2ssIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAy
MzQ5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUg
UG9saWN5Q2hlYwogICAgIH0pOwogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZWZQdHI8Rm9y
bVN0YXRlPiYmIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBm
dW5jdGlvbiwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSkKK3ZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5
RGVjaXNpb25Nb2RlLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVC
cm93c2luZ0NoZWNrKQogewogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uID0gbG9hZGVyLT50
cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKQEAgLTE2OCw3
ICsxNjgsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljCiAKICAg
ICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwogICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHko
KSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKLSAgICBtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihhY3Rpb24sIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZS5nZXQoKSwgcG9s
aWN5RGVjaXNpb25Nb2RlLCBbdGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgZm9ybVN0YXRlID0gV1RGTW92ZShmb3Jt
U3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBi
bG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lv
bildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgIG1fZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFj
dGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lE
ZWNpc2lvbk1vZGUsIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgW3RoaXMsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUgPSBXVEZN
b3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92
ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0g
ZmFsc2U7CiAKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgorI2luY2x1ZGUgIlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oIgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTY5LDcgKzcwLDcgQEAgY2xhc3MgUG9saWN5Q2hlY2tlciB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUG9saWN5Q2hlY2tlcihGcmFtZSYpOwogCi0gICAgdm9pZCBjaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiwgUG9saWN5RGVjaXNpb25Nb2RlID0gUG9saWN5RGVj
aXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOworICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBEb2N1bWVudExvYWRlciosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uJiYsIFBvbGljeURlY2lzaW9uTW9kZSA9IFBvbGljeURlY2lzaW9u
TW9kZTo6QXN5bmNocm9ub3VzLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgPSBTaG91bGRT
a2lwU2FmZUJyb3dzaW5nQ2hlY2s6Ok5vKTsKICAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAgICAgdm9pZCBjaGVj
a05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYsIFJlc291cmNlUmVxdWVzdCYmLCBS
ZWZQdHI8Rm9ybVN0YXRlPiYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9s
aWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1No
b3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IGNsYXNzIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayB7IE5vLCBZZXMgfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpT
aG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssCisgICAg
ICAgIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjazo6Tm8sCisgICAgICAgIFdl
YkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjazo6WWVzCisgICAgPjsKK307CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ5OTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTA4LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNvbWUgcGx1
bWJpbmcgZm9yIHNhZmUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4ODcwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFsc28gYWRkaW5nIGEgVVJMIHRvIFNhZmVCcm93c2luZ1Jlc3VsdCBi
ZWNhdXNlIHdlJ2xsIG5lZWQgaXQuCisgICAgICAgIEFsc28gYWRkaW5nIGEgYm9vbCB0byBMb2Fk
UGFyYW1ldGVycyBiZWNhdXNlIHdlIHdpbGwgbmVlZCB0byBkbyBzcGVjaWFsIHRoaW5ncworICAg
ICAgICB3aGVuIGxvYWRpbmcgdGhlIHNhZmUgYnJvd3Npbmcgd2FybmluZywgbGlrZSBhZGRpbmcg
YSB3YXkgdG8gc2tpcCB0aGUgc2FmZSBicm93c2luZyBjaGVjay4KKworICAgICAgICAqIFNoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhZmVC
cm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayk6CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93
c2luZ1Jlc3VsdC5oOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OnVybCBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTgtMDgtMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBjYW5CdWJibGUgYW5kIGNhbmNlbGFi
bGUgYm9vbGVhbnMgaW4gRXZlbnQgYnkgZW51bSBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzQ5ODUpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlcgogICAgIGVuY29k
ZXIgPDwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDsKICAgICBlbmNvZGVyIDw8IHVzZXJEYXRhOworICAgIGVu
Y29kZXIgPDwgZm9yU2FmZUJyb3dzaW5nOwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7
CiB9CkBAIC0xMDUsNiArMTA2LDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlcgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS51c2VyRGF0YSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5mb3JTYWZlQnJv
d3NpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFwbGF0Zm9ybURl
Y29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIzNDk4NSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICB1aW50NjRfdCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHsgZmFsc2UgfTsKICAgICBVc2VyRGF0YSB1c2VyRGF0YTsKKyAgICBib29sIGZvclNhZmVCcm93
c2luZyB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NhZmVCcm93c2luZ1Jlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NhZmVCcm93c2luZ1Jlc3VsdC5oCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2Vy
dmljZUxvb2t1cFJlc3VsdDsKQEAgLTM0LDEwICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFNhZmVCcm93c2luZ1Jlc3VsdCB7CiBwdWJsaWM6CiAjaWYgSEFWRShTQUZFX0JST1dT
SU5HKQotICAgIFNhZmVCcm93c2luZ1Jlc3VsdChTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOwor
ICAgIFNhZmVCcm93c2luZ1Jlc3VsdChXZWJDb3JlOjpVUkwmJiwgU1NCU2VydmljZUxvb2t1cFJl
c3VsdCAqKTsKICNlbmRpZgogICAgIFNhZmVCcm93c2luZ1Jlc3VsdCgpID0gZGVmYXVsdDsKIAor
ICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsgfQog
ICAgIGJvb2wgaXNQaGlzaGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQaGlzaGluZzsgfQogICAg
IGJvb2wgaXNNYWx3YXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hbHdhcmU7IH0KQEAgLTQ1LDYg
KzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNLbm93blRvQmVVbnNhZmUoKSBjb25zdCB7IHJl
dHVybiBtX2lzS25vd25Ub0JlVW5zYWZlOyB9CiAKIHByaXZhdGU6CisgICAgV2ViQ29yZTo6VVJM
IG1fdXJsOwogICAgIFN0cmluZyBtX3Byb3ZpZGVyOwogICAgIGJvb2wgbV9pc1BoaXNoaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNNYWx3YXJlIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0OTg1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3OSw3ICsxMDc5LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
bwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJ
UHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9u
YWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5h
dGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBm
cm9tIGJlaW5nCkBAIC0xMTEwLDYgKzExMTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uCiAgICAgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcg
PSB1bnJlYWNoYWJsZVVSTDsKICAgICBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJv
clVSTFN0cmluZyA9IG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTDsKICAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhKS5nZXQoKSk7CisgICAgbG9hZFBhcmFtZXRlcnMuZm9yU2FmZUJyb3dzaW5n
ID0gZm9yU2FmZUJyb3dzaW5nOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBh
cmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJh
c2VVUkwpOwpAQCAtMzk2OCwxNCArMzk2OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5T
YWZlQnJvd3NpbmdDaGVjCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
Y29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRf
dCBsaXN0ZW5lcklEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZv
RGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRTa2lwU2Fm
ZUJyb3dzaW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQogewotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgZnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVz
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEs
IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8uLi4gYXJncykgeworICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNob3VsZFNraXBTYWZlQnJv
d3NpbmdDaGVjaywgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdz
KSB7CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CiAgICAgfSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ss
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5h
bCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCkBAIC00MDUyLDggKzQwNTMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhCiAgICAgICAgIH0KIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShz
ZW5kZXIpKTsKLSAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6OlllcykpOwot
ICAgIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2socmVxdWVzdC51cmwoKSwgbGlzdGVuZXIpOworICAg
IH0sIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayA9PSBTaG91bGRTa2lwU2FmZUJyb3dzaW5n
Q2hlY2s6OlllcyA/IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8gOiBTaG91bGRF
eHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6OlllcykpOworICAgIGlmIChzaG91bGRTa2lwU2FmZUJy
b3dzaW5nQ2hlY2sgPT0gU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpObykKKyAgICAgICAg
YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBsaXN0ZW5lcik7CiAKICAgICBB
UEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS0+aXNNYWluRnJhbWUo
KSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwogICAgIFdlYkZyYW1lUHJveHkqIG9yaWdp
bmF0aW5nRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YS5mcmFtZUlEKTsKQEAgLTQwODEsMTEgKzQwODMsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25z
dCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lz
aW9uU2VuZGVyOjpjcmVhdGUoV1RGTW92ZShyZXBseSkpOwogICAgIAotICAgIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdh
dGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZvRGF0YSwgb3Jp
Z2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOworICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNob3VsZFNraXBTYWZlQnJv
d3NpbmdDaGVjaywgc2VuZGVyLmNvcHlSZWYoKSk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGRp
ZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91c2x5LCBwcm9jZWVkIHdpdGggdGhlIGxvYWQuCiAgICAg
c2VuZGVyLT5zZW5kKFBvbGljeUFjdGlvbjo6VXNlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQo
KSwgc3RkOjpudWxsb3B0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyMzQ5ODUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgdm9p
ZCBsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwor
ICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKICAgICB2b2lkIGxvYWRXZWJBcmNo
aXZlRGF0YShBUEk6OkRhdGEqLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAg
ICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYg
dXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Qb2ludCk7CiAKQEAgLTE0MjUsOSArMTQyNSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3Qg
bGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiwgV2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgV2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93
c2luZ0NoZWNrLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgV2ViQ29yZTo6
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBVc2VyRGF0YSYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
OCArMTA2LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1l
c3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIERl
bGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIGVudW0gV2ViQ29yZTo6U2hvdWxkU2tp
cFNhZmVCcm93c2luZ0NoZWNrIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgdWludDY0X3Qg
bGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgZW51bSBXZWJDb3JlOjpTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKSAtPiAo
ZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZp
Z2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCShyZXZpc2lv
biAyMzQ5MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdS
ZXN1bHRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOSBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi1TYWZlQnJvd3NpbmdSZXN1bHQ6
OlNhZmVCcm93c2luZ1Jlc3VsdChTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCi0gICAg
OiBtX3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQorU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZl
QnJvd3NpbmdSZXN1bHQoV2ViQ29yZTo6VVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0
ICpyZXN1bHQpCisgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCisgICAgLCBtX3Byb3ZpZGVyKFty
ZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlzaGluZ10p
CiAgICAgLCBtX2lzTWFsd2FyZShbcmVzdWx0IGlzTWFsd2FyZV0pCiAgICAgLCBtX2lzVW53YW50
ZWRTb2Z0d2FyZShbcmVzdWx0IGlzVW53YW50ZWRTb2Z0d2FyZV0pCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNp
b24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogICAgIFNTQkxvb2t1cENvbnRleHQgKmNvbnRleHQg
PSBbU1NCTG9va3VwQ29udGV4dCBzaGFyZWRMb29rdXBDb250ZXh0XTsKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBsaXN0ZW5lci5kaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0
cyh7IH0pOwotICAgIFtjb250ZXh0IGxvb2tVcFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6Qmxv
Y2tQdHI8dm9pZChTU0JMb29rdXBSZXN1bHQgKiwgTlNFcnJvciAqKT46OmZyb21DYWxsYWJsZShb
bGlzdGVuZXIgPSBtYWtlUmVmKGxpc3RlbmVyKV0gKFNTQkxvb2t1cFJlc3VsdCAqcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgcmVzdWx0ID0gcmV0YWluUHRyKHJlc3Vs
dCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKV0geworICAgIFtjb250ZXh0IGxvb2tVcFVSTDp1
cmwgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChTU0JMb29rdXBSZXN1bHQgKiwgTlNF
cnJvciAqKT46OmZyb21DYWxsYWJsZShbbGlzdGVuZXIgPSBtYWtlUmVmKGxpc3RlbmVyKSwgdXJs
ID0gdXJsXSAoU1NCTG9va3VwUmVzdWx0ICpyZXN1bHQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsaXN0ZW5lciA9IFdURk1vdmUo
bGlzdGVuZXIpLCByZXN1bHQgPSByZXRhaW5QdHIocmVzdWx0KSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCB1cmwgPSBXVEZNb3ZlKHVybCldIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRSZWNlaXZlU2FmZUJyb3dzaW5nUmVzdWx0cyh7
IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogICAgICAgICAgICAgVmVjdG9yPFNhZmVC
cm93c2luZ1Jlc3VsdD4gcmVzdWx0c1ZlY3RvcjsKICAgICAgICAgICAgIHJlc3VsdHNWZWN0b3Iu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVzdWx0cyBjb3VudF0pOwogICAgICAgICAgICAgZm9y
IChTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQgaW4gcmVzdWx0cykKLSAgICAgICAgICAg
ICAgICByZXN1bHRzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZCh7IHJlc3VsdCB9KTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZCh7IFVSTCh1cmwpLCByZXN1bHQg
fSk7CiAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMo
V1RGTW92ZShyZXN1bHRzVmVjdG9yKSk7CiAgICAgICAgIH0pOwogICAgIH0pLmdldCgpXTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM0OTMyKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWUKICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBs
eVRvRG9jdW1lbnRMb2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2Fk
ZXIpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFj
dGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNp
b25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9u
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBw
b2xpY3lEZWNpc2lvbk1vZGUsIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lw
U2FmZUJyb3dzaW5nQ2hlY2ssIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7
CiAgICAgaWYgKCF3ZWJQYWdlKSB7CkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGlj
aWVzOwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExv
YWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNl
UmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYzo6UmVwbHkocG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2Fk
SUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3Jl
RnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0
aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpSZXBseShwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0
ZVBvbGljaWVzKSkpIHsKICAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIH0KIAogICAgIEFTU0VSVChwb2xp
Y3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwotICAg
IGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklE
KCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdp
bmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQp
KSkKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBzaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIGxpc3RlbmVySUQpKSkKICAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xp
Y3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNv
cmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6U2hv
dWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKICAgICAKICAgICB2
b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDgtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgc29tZSBwbHVtYmluZyBmb3Ig
c2FmZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
CisKIDIwMTgtMDgtMTYgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgZHJhZy1hbmQtZHJvcCBmb3IgaW5wdXRbdHlwZT1jb2xvcl0KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJp
bmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29y
ZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xp
Y3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGlj
eUNoZWNrKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0
cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCkuZ2V0KCldOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZvcm1T
dGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpTaG91bGRTa2lwU2FmZUJyb3dz
aW5nQ2hlY2ssIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBCT09MIHRyeUFw
cExpbmsgPSBzaG91bGRUcnlBcHBMaW5rKHdlYlZpZXcsIGFjdGlvbiwgY29yZShtX3dlYkZyYW1l
LmdldCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ5
MzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxOC0wOC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzb21lIHBsdW1iaW5nIGZvciBzYWZlIGJy
b3dzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODg3MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTgtMDgtMDIgIERhdmlkIEZlbnRvbiAgPGRhdmlkX2ZlbnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDQ4OS4KSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKICAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xp
Y3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUs
IEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBXZWJDb3JlOjpQb2xpY3lE
ZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFt
ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzNDkzMikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29u
c3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2Rl
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3Rh
dGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZl
QnJvd3NpbmdDaGVjaywgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3Bh
dGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347408</attachid>
            <date>2018-08-17 16:13:55 -0700</date>
            <delta_ts>2018-08-17 16:14:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188709-20180817161354.patch</filename>
            <type>text/plain</type>
            <size>63808</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTA4LTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNvbWUg
cGx1bWJpbmcgZm9yIHNhZmUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODcwOQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgSnVzdCBwYXNzaW5nIGFyb3Vu
ZCB1bnVzZWQgYm9vbGVhbnMuCisgICAgICAgIFdlIHdpbGwgbmVlZCB0aGlzIGZvciBhIHdheSB0
byBsb2FkIGEgcGFnZSBldmVuIHRob3VnaCBzYWZlIGJyb3dzaW5nIHNheXMgaXQncyB1bnNhZmUu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVl
c3Q6OnNldFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0OjpzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2spOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxv
YWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL1Nob3VsZFNraXBTYWZlQnJv
d3NpbmdDaGVjay5oOiBBZGRlZC4KKwogMjAxOC0wOC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgYWxsb3dTY3Jp
cHRzVG9DbG9zZVdpbmRvd3Mgc2V0dGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM0OTMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xODM5LDYgKzE4MzksNyBAQAogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyog
SlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0
dXJlTE9ELmggKi87IH07CiAJCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQw
MUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29j
a2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDOEM2MDA5MjEyNzZC
ODcwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4
RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyog
SFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMzdGRkYx
QzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8q
IFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9OwogCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMg
LyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM4REFCMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFj
Y2Vzc2liaWxpdHlTb2Z0TGluay5oICovOyB9OwpAQCAtODY3Myw2ICs4Njc0LDcgQEAKIAkJNUM2
RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM4QzYwMDcyMTI3NkIwRjAwODJGODhGIC8qIFNob3Vs
ZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWN0RWRnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0
cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RUYxNkYxREZGNzE5OTAw
QTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjQ0MDIsNiArMjQ0MDQsNyBAQAogCQkJCUNCQzJEMjJFMUNFNUI3N0QwMEQxODgwQiAvKiBSZXNv
dXJjZVRpbWluZ0luZm9ybWF0aW9uLmggKi8sCiAJCQkJMjg2RTREQ0IyMDIxMDQ4ODAwMzE1MjM4
IC8qIFNlcnZlclRpbWluZy5jcHAgKi8sCiAJCQkJMjg2RTREQ0MyMDIxMDQ4ODAwMzE1MjM4IC8q
IFNlcnZlclRpbWluZy5oICovLAorCQkJCTVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAvKiBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLywKIAkJCQk4MzYyRThCRjIwQ0VGOUNCMDAyNDU4
ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmggKi8sCiAJCQkJNTEzMjdENUYxMUEz
M0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgKi8sCiAJCQkJNTEzMjdENUUxMUEzM0Ey
QjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oICovLApAQCAtMzAyOTgsNiArMzAzMDEsNyBAQAog
CQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGlt
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOEM2MDA5MjEyNzZCODcwMDgyRjg4RiAvKiBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNjJFOEMxMjBD
RUY5Q0IwMDI0NTg4NiAvKiBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDcgKzQ0Niw3IEBA
IHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWMKIHsKIH0KIAotdm9pZCBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0
YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJD
bGkKIAogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBG
b3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUs
IEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0No
ZWNrLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5
Q2hlY2soKSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBv
bGljeShjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWwgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgJKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCIK
ICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
QEAgLTYzLDYgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPSB2
YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ7IH0KIAorICAgIHZvaWQgc2V0U2hv
dWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBza2lw
KSB7IG1fc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrID0gc2tpcDsgfQorICAgIFNob3VsZFNr
aXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2soKSB7IHJldHVy
biBtX3Nob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjazsgfQorICAgIAogICAgIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURh
dGE7IH0KICAgICB2b2lkIHNldFN1YnN0aXR1dGVEYXRhKGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBk
YXRhKSB7IG1fc3Vic3RpdHV0ZURhdGEgPSBkYXRhOyB9CiAgICAgYm9vbCBoYXNTdWJzdGl0dXRl
RGF0YSgpIHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpOyB9CkBAIC0xMTAsNiAr
MTE0LDcgQEAgcHJpdmF0ZToKICAgICBJbml0aWF0ZWRCeU1haW5GcmFtZSBtX2luaXRpYXRlZEJ5
TWFpbkZyYW1lIHsgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKICAgICBib29sIG1f
aXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAgICBTeXN0ZW1Q
cmV2aWV3SW5mbyBtX3N5c3RlbVByZXZpZXdJbmZvOworICAgIFNob3VsZFNraXBTYWZlQnJvd3Np
bmdDaGVjayBtX3Nob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayB7IFNob3VsZFNraXBTYWZlQnJv
d3NpbmdDaGVjazo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjM0OTMyKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
Myw3ICsxMDAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUmVmPEFyY2hpdgog
CiAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVy
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKICAgICBkb2N1bWVudExvYWRlci0+c2V0QXJjaGl2
ZShXVEZNb3ZlKGFyY2hpdmUpKTsKLSAgICBsb2FkKGRvY3VtZW50TG9hZGVyLnB0cigpKTsKKyAg
ICBsb2FkKGRvY3VtZW50TG9hZGVyLmdldCgpLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s6
Ok5vKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQpAQCAtMTQwNyw3ICsxNDA3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxv
YWRSZXF1ZQogICAgIGlmIChpc1N5c3RlbVByZXZpZXcpCiAgICAgICAgIHJlcXVlc3Quc2V0U3lz
dGVtUHJldmlld1JlY3QoZnJhbWVMb2FkUmVxdWVzdC5zeXN0ZW1QcmV2aWV3UmVjdCgpKTsKICNl
bmRpZgotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tI
aXN0b3J5LCBuZXdMb2FkVHlwZSwgV1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIFt0aGlzLCBpc1JlZGlyZWN0LCBzYW1lVVJMLCBuZXdMb2FkVHlwZSwgcHJv
dGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7CisgICAgbG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIG5ld0xvYWRUeXBl
LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgZnJhbWVM
b2FkUmVxdWVzdC5zaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2soKSwgW3RoaXMsIGlzUmVkaXJl
Y3QsIHNhbWVVUkwsIG5ld0xvYWRUeXBlLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFt
ZSksIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgICAgIG1f
cXVpY2tSZWRpcmVjdENvbWluZyA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcikKQEAgLTE0NjksMTAgKzE0NjksMTAgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JgogICAgIGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCByZXF1ZXN0KTsKIAog
ICAgIFNldEZvclNjb3BlPGJvb2w+IGN1cnJlbnRMb2FkU2hvdWxkQmVUcmVhdGVkQXNDb250aW51
aW5nTG9hZEd1YXJkKG1fY3VycmVudExvYWRTaG91bGRCZVRyZWF0ZWRBc0NvbnRpbnVpbmdMb2Fk
LCByZXF1ZXN0LnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCgpKTsKLSAgICBsb2FkKGxvYWRl
ci5wdHIoKSk7CisgICAgbG9hZChsb2FkZXIuZ2V0KCksIHJlcXVlc3Quc2hvdWxkU2tpcFNhZmVC
cm93c2luZ0NoZWNrKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRp
b25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIHR5
cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmln
YXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBl
IHR5cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91bGRTa2lwU2FmZUJyb3dz
aW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBs
b2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vi
c3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwogICAgIGFwcGx5U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBhY3Rp
b24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSwgYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CkBAIC0xNDg0LDI3ICsxNDg0LDI3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRX
aXRoTmF2aWdhdGlvbkFjdGkKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbG9h
ZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2Rp
bmcoKSk7CiAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgdHlwZSwg
V1RGTW92ZShmb3JtU3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgdHlwZSwgV1RGTW92ZShmb3Jt
U3RhdGUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVy
KiBuZXdEb2N1bWVudExvYWRlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRMb2Fk
ZXImIG5ld0RvY3VtZW50TG9hZGVyLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrKQogewotICAgIFJlc291cmNlUmVxdWVzdCYgciA9IG5ld0Rv
Y3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7CisgICAgUmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9j
dW1lbnRMb2FkZXIucmVxdWVzdCgpOwogICAgIGFkZEV4dHJhRmllbGRzVG9NYWluUmVzb3VyY2VS
ZXF1ZXN0KHIpOwogICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKIAotICAgIGlmIChzaG91bGRUcmVh
dFVSTEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCku
dXJsKCkpKSB7CisgICAgaWYgKHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3Vt
ZW50TG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICByLnNldENhY2hl
UG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0
YSk7CiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTYW1lOwotICAgIH0gZWxzZSBpZiAo
c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQobmV3RG9jdW1lbnRMb2FkZXItPnVucmVhY2hh
YmxlVVJMKCkpICYmIGlzUmVsb2FkKG1fbG9hZFR5cGUpKQorICAgIH0gZWxzZSBpZiAoc2hvdWxk
VHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQobmV3RG9jdW1lbnRMb2FkZXIudW5yZWFjaGFibGVVUkwo
KSkgJiYgaXNSZWxvYWQobV9sb2FkVHlwZSkpCiAgICAgICAgIHR5cGUgPSBtX2xvYWRUeXBlOwot
ICAgIGVsc2UgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0ICYmICFuZXdEb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwo
KS5pc0VtcHR5KCkgJiYgbmV3RG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxp
ZCgpKQorICAgIGVsc2UgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0ICYmICFuZXdEb2N1bWVudExvYWRlci51bnJlYWNoYWJs
ZVVSTCgpLmlzRW1wdHkoKSAmJiBuZXdEb2N1bWVudExvYWRlci5zdWJzdGl0dXRlRGF0YSgpLmlz
VmFsaWQoKSkKICAgICAgICAgdHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tl
ZEJhY2tGb3J3YXJkTGlzdDsKICAgICBlbHNlCiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRUeXBl
OjpTdGFuZGFyZDsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBuZXdEb2N1
bWVudExvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlk
ZUVuY29kaW5nKCkpOworICAgICAgICBuZXdEb2N1bWVudExvYWRlci5zZXRPdmVycmlkZUVuY29k
aW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5jb2RpbmcoKSk7CiAgICAgCiAgICAgLy8g
V2hlbiB3ZSBsb2FkaW5nIGFsdGVybmF0ZSBjb250ZW50IGZvciBhbiB1bnJlYWNoYWJsZSBVUkwg
dGhhdCB3ZSdyZQogICAgIC8vIHZpc2l0aW5nIGluIHRoZSBoaXN0b3J5IGxpc3QsIHdlIHRyZWF0
IGl0IGFzIGEgcmVsb2FkIHNvIHRoZSBoaXN0b3J5IGxpc3QgCkBAIC0xNTE0LDcgKzE1MTQsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuCiAgICAgLy8gc2hvdWxk
bid0IGEgbW9yZSBleHBsaWNpdCB0eXBlIG9mIHJlbG9hZCBiZSBkZWZpbmVkLCB0aGF0IG1lYW5z
IHJvdWdobHkgCiAgICAgLy8gImxvYWQgd2l0aG91dCBhZmZlY3RpbmcgaGlzdG9yeSIgPyAKICAg
ICBpZiAoc2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTChuZXdEb2N1bWVudExvYWRl
cikpIHsKLSAgICAgICAgLy8gc2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTCgpIHJl
dHVybnMgdHJ1ZSBvbmx5IHdoZW4gdGhlIG9yaWdpbmFsIGxvYWQgdHlwZSBpcyBiYWNrLWZvcndh
cmQuCisgICAgICAgIC8vIHNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwgcmV0dXJu
cyB0cnVlIG9ubHkgd2hlbiB0aGUgb3JpZ2luYWwgbG9hZCB0eXBlIGlzIGJhY2stZm9yd2FyZC4K
ICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIHNob3VsZCBzYXZlIHRoZSBkb2N1bWVudCBzdGF0
ZSBub3cuIE90aGVyd2lzZSB0aGUgc3RhdGUgY2FuIGJlIGxvc3QgYmVjYXVzZSBsb2FkIHR5cGUg
aXMKICAgICAgICAgLy8gY2hhbmdlZCBhbmQgdXBkYXRlRm9yQmFja0ZvcndhcmROYXZpZ2F0aW9u
KCkgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4gbG9hZGluZyBpcyBjb21taXR0ZWQuCiAgICAgICAg
IGhpc3RvcnkoKS5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOwpAQCAtMTUyMywxMCArMTUy
MywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBuCiAgICAgICAg
IHR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7CiAgICAgfQogCi0gICAgbG9hZFdpdGhEb2N1
bWVudExvYWRlcihuZXdEb2N1bWVudExvYWRlciwgdHlwZSwgeyB9LCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkw6OlllcywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgW10geyB9
KTsKKyAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKCZuZXdEb2N1bWVudExvYWRlciwgdHlwZSwg
bnVsbHB0ciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgRnJhbWVMb2FkVHlwZSB0eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9h
ZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRyPEZv
cm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgU2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrIHNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFJldGFp
biBiZWNhdXNlIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0IHJl
ZmVyZW5jZSB0byBpdC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjA1
LDcgKzE2MDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyCiAg
ICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3Qo
bG9hZGVyLT5yZXF1ZXN0KCkpLCBSZXNvdXJjZVJlc3BvbnNlIHsgfSAvKiByZWRpcmVjdFJlc3Bv
bnNlICovLCBsb2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1l
ID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBjb21wbGV0
aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHNob3Vs
ZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgIH0pOworICAgIH0sIFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNo
cm9ub3VzLCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2spOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNoZWNrKCkKQEAgLTE2NzAsOSArMTY3
MCw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVIKICAgICByZXR1
cm4gZXJyb3IuaXNOdWxsKCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwoRG9jdW1lbnRMb2FkZXIqIGRvY0xvYWRlcikKK2Jvb2wgRnJh
bWVMb2FkZXI6OnNob3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoRG9jdW1lbnRMb2Fk
ZXImIGRvY0xvYWRlcikKIHsKLSAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVu
cmVhY2hhYmxlVVJMKCk7CisgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gZG9jTG9hZGVyLnVucmVh
Y2hhYmxlVVJMKCk7CiAKICAgICBpZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWRXaXRoT3ZlcnJpZGVFbmNvCiAKICAgICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
ZW5jb2RpbmcpOwogCi0gICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIEZy
YW1lTG9hZFR5cGU6OlJlbG9hZCwgeyB9LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgW10geyB9KTsKKyAgICBsb2FkV2l0
aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCB7IH0s
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6Ok5vKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxv
YWRPcHRpb24+IG9wdGlvbnMpCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hCiAgICAgICAgIHJldHVybiBGcmFtZUxvYWRUeXBlOjpS
ZWxvYWQ7CiAgICAgfTsKICAgICAKLSAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgZnJhbWVMb2FkVHlwZUZvclJlbG9hZE9wdGlvbnMob3B0aW9ucyksIHsgfSwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8sIFtdIHsgfSk7CisgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIucHRyKCksIGZy
YW1lTG9hZFR5cGVGb3JSZWxvYWRPcHRpb25zKG9wdGlvbnMpLCB7IH0sIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Q
b2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCkBAIC0yOTE4LDcgKzI5MTgsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMCiAgICAgaWYgKCFmcmFtZU5h
bWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZSBzZWFyY2ggZm9yIGEgdGFyZ2V0IGZyYW1l
IGlzIGRvbmUgZWFybGllciBpbiB0aGUgY2FzZSBvZiBmb3JtIHN1Ym1pc3Npb24uCiAgICAgICAg
IGlmIChhdXRvKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IG51bGxwdHIgOiBmaW5kRnJhbWVG
b3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2Fk
ZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0
aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
ICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3Zl
KGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgU2hvdWxkU2tpcFNhZmVC
cm93c2luZ0NoZWNrOjpObywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5MzEsNyArMjkzMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUwKIAogICAgIC8vIG11c3QgZ3JhYiB0aGlzIG5v
dywgc2luY2UgdGhpcyBsb2FkIG1heSBzdG9wIHRoZSBwcmV2aW91cyBsb2FkIGFuZCBjbGVhciB0
aGlzIGZsYWcKICAgICBib29sIGlzUmVkaXJlY3QgPSBtX3F1aWNrUmVkaXJlY3RDb21pbmc7Ci0g
ICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlv
biwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCwgW3RoaXMsIGlzUmVkaXJlY3QsIHByb3RlY3RlZEZyYW1lID0gbWFr
ZVJlZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZv
cm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgcmVxdWVzdC5zaG91bGRTa2lw
U2FmZUJyb3dzaW5nQ2hlY2soKSwgW3RoaXMsIGlzUmVkaXJlY3QsIHByb3RlY3RlZEZyYW1lID0g
bWFrZVJlZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CiAgICAgICAg
ICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCkBAIC0zMzkzLDcgKzMzOTMsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpCiAgICAgfQogCiAgICAgTmF2aWdhdGlvbkFj
dGlvbiBuZXdBY3Rpb24geyAqZnJhbWUtPmRvY3VtZW50KCksIHJlcXVlc3QsIEluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duLCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIGFjdGlvbi5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKLSAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBuZXdBY3Rpb24sIExvY2tIaXN0b3J5OjpObywg
RnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBbXSB7IH0pOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKHJlcXVlc3QsIG5ld0FjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRU
eXBlOjpTdGFuZGFyZCwgZm9ybVN0YXRlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgdW5zaWduZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCkBAIC0zNTg5LDcgKzM1ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50
RG9jdW1lbnRJCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKFdU
Rk1vdmUoYWN0aW9uKSk7CiAKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2Vk
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgICAgIGxvYWRXaXRoRG9jdW1lbnRMb2Fk
ZXIoZG9jdW1lbnRMb2FkZXIsIGxvYWRUeXBlLCB7IH0sIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6WWVzLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFtdIHsgfSk7CisgICAgICAg
IGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIsIGxvYWRUeXBlLCB7IH0sIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjc3LDcgKzM2NzcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJCiAKICAgICBhY3Rpb24uc2V0VGFy
Z2V0QmFja0ZvcndhcmRJdGVtKGl0ZW0pOwogCi0gICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBsb2FkVHlwZSwgeyB9LCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgW10geyB9KTsKKyAgICBsb2FkV2l0aE5hdmlnYXRp
b25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBMb2NrSGlzdG9yeTo6Tm8sIGxvYWRUeXBlLCB7IH0s
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKIH0KIAogLy8gTG9hZHMgY29udGVu
dCBpbnRvIHRoaXMgZnJhbWUsIGFzIHNwZWNpZmllZCBieSBoaXN0b3J5IGl0ZW0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
MTAgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCisjaW5jbHVk
ZSAiU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNjEsMTYgKzM2MywxNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VPbGREYXRhU291cmNlcygpOwogICAgIHZvaWQgd2ls
bFJlc3RvcmVGcm9tQ2FjaGVkUGFnZSgpOwogCi0gICAgYm9vbCBzaG91bGRSZWxvYWRUb0hhbmRs
ZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKik7CisgICAgYm9vbCBzaG91bGRSZWxvYWRU
b0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyJik7CiAKICAgICB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlh
bEhhc0luc2VjdXJlQ29udGVudCk7CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJl
cXVlc3QmJiwgRXZlbnQqKTsKIAotICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1
bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRp
b25Qb2xpY3kKLSAgICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsgLy8gQ2FsbHMgbG9hZFdp
dGhEb2N1bWVudExvYWRlcgorICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciosIEZyYW1lTG9hZFR5cGUsIFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBTaG91bGRTa2lw
U2FmZUJyb3dzaW5nQ2hlY2sgPSBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s6Ok5vLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOyAvLyBDYWxscyBjb250aW51ZUxvYWRB
ZnRlck5hdmlnYXRpb25Qb2xpY3kKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXImLCBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2spOyAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVy
CiAKLSAgICB2b2lkIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUs
IFJlZlB0cjxGb3JtU3RhdGU+JiYsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsgLy8gQ2FsbHMgbG9hZFdpdGhEb2N1bWVudExvYWRlcgor
ICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBMb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgUmVm
UHRyPEZvcm1TdGF0ZT4mJiwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBTaG91bGRTa2lw
U2FmZUJyb3dzaW5nQ2hlY2sgPSBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s6Ok5vLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBbXSB7IH0pOyAvLyBDYWxscyBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyCiAKICAgICB2b2lkIGxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUsIEV2ZW50KiwgUmVmUHRyPEZv
cm1TdGF0ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxvYWRV
UkwoRnJhbWVMb2FkUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRU
eXBlLCBFdmVudCosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsOCBAQCBjbGFzcyBVUkw7CiBjbGFz
cyBXaWRnZXQ7CiAKIGVudW0gY2xhc3MgUG9saWN5RGVjaXNpb25Nb2RlOworZW51bSBjbGFzcyBT
aG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2s7CisKIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9u
OwogCiB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9uKT4gRnJhbWVQb2xp
Y3lGdW5jdGlvbjsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNp
b25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIFNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjaywgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDIzNDkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTgsNyArOTgsNyBAQCBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBQb2xp
Y3lDaGVjCiAgICAgfSk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3Rh
dGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0
aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlKQordm9pZCBQb2xpY3lD
aGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lEZWNp
c2lvbk1vZGUsIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJyb3dz
aW5nQ2hlY2spCiB7CiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24gPSBsb2FkZXItPnRyaWdn
ZXJpbmdBY3Rpb24oKTsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewpAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKIAogICAgIG1f
ZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAgICAgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0eSgpID8g
bnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwotICAgIG1fZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFj
dGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lE
ZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0
ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JV
UkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9u
LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGljeURlY2lz
aW9uTW9kZSwgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBbdGhpcywgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgZm9y
bVN0YXRlID0gV1RGTW92ZShmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1vdmUo
c3VnZ2VzdGVkRmlsZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJs
b2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFi
bGUgewogICAgICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSBmYWxz
ZTsKIAogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgiCiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NjksNyArNzAsNyBAQCBjbGFzcyBQb2xpY3lDaGVja2VyIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBQb2xpY3lDaGVja2VyKEZyYW1lJik7CiAKLSAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgRG9jdW1lbnRMb2FkZXIqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb25GdW5jdGlvbiYmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lv
bk1vZGU6OkFzeW5jaHJvbm91cyk7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IERvY3VtZW50TG9hZGVyKiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24mJiwgUG9saWN5RGVjaXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2Rl
OjpBc3luY2hyb25vdXMsIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayA9IFNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjazo6Tm8pOwogICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKICAgICB2b2lkIGNoZWNrTmV3
V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlZlB0
cjxGb3JtU3RhdGU+JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uJiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Nob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrIHsgTm8sIFllcyB9OworCit9CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNob3Vs
ZFNraXBTYWZlQnJvd3NpbmdDaGVjaz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywKKyAgICAgICAg
V2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpObywKKyAgICAgICAgV2ViQ29y
ZTo6U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpZZXMKKyAgICA+OworfTsKKworfQpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIzNDk5NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMDgtMTcgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgc29tZSBwbHVtYmlu
ZyBmb3Igc2FmZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwor
ICAgICAgICBBbHNvIGFkZGluZyBhIFVSTCB0byBTYWZlQnJvd3NpbmdSZXN1bHQgYmVjYXVzZSB3
ZSdsbCBuZWVkIGl0LgorICAgICAgICBBbHNvIGFkZGluZyBhIGJvb2wgdG8gTG9hZFBhcmFtZXRl
cnMgYmVjYXVzZSB3ZSB3aWxsIG5lZWQgdG8gZG8gc3BlY2lhbCB0aGluZ3MKKyAgICAgICAgd2hl
biBsb2FkaW5nIHRoZSBzYWZlIGJyb3dzaW5nIHdhcm5pbmcsIGxpa2UgYWRkaW5nIGEgd2F5IHRv
IHNraXAgdGhlIHNhZmUgYnJvd3NpbmcgY2hlY2suCisKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Nh
ZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdS
ZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3VsdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJlZ2lu
U2FmZUJyb3dzaW5nQ2hlY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1
bHQuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojp1cmwgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDE4LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgY2FuQnViYmxlIGFuZCBjYW5jZWxhYmxlIGJvb2xl
YW5zIGluIEV2ZW50IGJ5IGVudW0gY2xhc3NlcwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjM0OTg1KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHZv
aWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIKICAgICBlbmNvZGVyIDw8IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgZW5jb2RlciA8PCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ7CiAgICAgZW5jb2RlciA8PCB1c2VyRGF0YTsKKyAgICBlbmNvZGVyIDw8
IGZvclNhZmVCcm93c2luZzsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIpOwogfQpAQCAt
MTA1LDYgKzEwNiw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudXNlckRhdGEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZm9yU2FmZUJyb3dzaW5nKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIGlmICghcGxhdGZvcm1EZWNvZGUoZGVj
b2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzQ5ODUpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBA
IHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgdWludDY0X3Qgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsKICAgICBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCB7IGZhbHNl
IH07CiAgICAgVXNlckRhdGEgdXNlckRhdGE7CisgICAgYm9vbCBmb3JTYWZlQnJvd3NpbmcgeyBm
YWxzZSB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFy
eT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
YWZlQnJvd3NpbmdSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TYWZlQnJvd3NpbmdSZXN1bHQuaAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIFNTQlNlcnZpY2VMb29r
dXBSZXN1bHQ7CkBAIC0zNCwxMCArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBT
YWZlQnJvd3NpbmdSZXN1bHQgewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAg
ICBTYWZlQnJvd3NpbmdSZXN1bHQoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKKyAgICBTYWZl
QnJvd3NpbmdSZXN1bHQoV2ViQ29yZTo6VVJMJiYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7
CiAjZW5kaWYKICAgICBTYWZlQnJvd3NpbmdSZXN1bHQoKSA9IGRlZmF1bHQ7CiAKKyAgICBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXI7IH0KICAgICBib29s
IGlzUGhpc2hpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGhpc2hpbmc7IH0KICAgICBib29sIGlz
TWFsd2FyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWx3YXJlOyB9CkBAIC00NSw2ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzS25vd25Ub0JlVW5zYWZlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0tub3duVG9CZVVuc2FmZTsgfQogCiBwcml2YXRlOgorICAgIFdlYkNvcmU6OlVSTCBtX3VybDsK
ICAgICBTdHJpbmcgbV9wcm92aWRlcjsKICAgICBib29sIG1faXNQaGlzaGluZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzTWFsd2FyZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNDk4NSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsx
NDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1NMS2V5R2VuZXJhdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hl
Y2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4KQEAgLTEwNzksNyArMTA4MCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sIGZvclNhZmVCcm93c2luZykK
IHsKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxp
bmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8g
c3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50
IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwpAQCAtMTExMCw2ICsxMTExLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbgogICAgIGxvYWRQYXJhbWV0ZXJz
LnVucmVhY2hhYmxlVVJMU3RyaW5nID0gdW5yZWFjaGFibGVVUkw7CiAgICAgbG9hZFBhcmFtZXRl
cnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcgPSBtX2ZhaWxpbmdQcm92aXNpb25hbExv
YWRVUkw7CiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOworICAgIGxvYWRQYXJh
bWV0ZXJzLmZvclNhZmVCcm93c2luZyA9IGZvclNhZmVCcm93c2luZzsKICAgICBhZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1l
UmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJMKTsKQEAgLTM5NjgsMTQgKzM5NzAsMTQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlYwogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
V2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrIHNob3VsZFNraXBTYWZlQnJvd3Np
bmdDaGVjaywgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChh
dXRvLi4uIGFyZ3MpIHsKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1l
SUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJl
cXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJE
YXRhLCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0gKGF1dG8uLi4gYXJncykgewogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklE
LCBhcmdzLi4uKSwgbV9wYWdlSUQpOwogICAgIH0pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQordm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxk
U2tpcFNhZmVCcm93c2luZ0NoZWNrLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVy
KQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBv
cmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNDA1Miw4ICs0MDU0LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAgICB9CiAKICAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdU
Rk1vdmUoZGF0YSksIFdURk1vdmUoc2VuZGVyKSk7Ci0gICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJy
b3dzaW5nUmVzdWx0OjpZZXMpKTsKLSAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3Qu
dXJsKCksIGxpc3RlbmVyKTsKKyAgICB9LCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgPT0g
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrOjpZZXMgPyBTaG91bGRFeHBlY3RTYWZlQnJvd3Np
bmdSZXN1bHQ6Ok5vIDogU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpZZXMpKTsKKyAg
ICBpZiAoc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrID09IFNob3VsZFNraXBTYWZlQnJvd3Np
bmdDaGVjazo6Tm8pCisgICAgICAgIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2socmVxdWVzdC51cmwo
KSwgbGlzdGVuZXIpOwogCiAgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9u
ID0gZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKICAg
ICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7CkBAIC00MDgxLDExICs0MDg0LDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBtX3Nob3VsZFN1
cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2sgc2hvdWxkU2tp
cFNhZmVCcm93c2luZ0NoZWNrLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgYXV0
byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFdURk1vdmUocmVwbHkpKTsK
ICAgICAKLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1lSUQsIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5k
ZXIuY29weVJlZigpKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1l
SUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJl
cXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJE
YXRhLCBzaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIHNlbmRlci5jb3B5UmVmKCkpOwogCiAg
ICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2Vl
ZCB3aXRoIHRoZSBsb2FkLgogICAgIHNlbmRlci0+c2VuZChQb2xpY3lBY3Rpb246OlVzZSwgbmF2
aWdhdGlvbklELCBEb3dubG9hZElEKCksIHN0ZDo6bnVsbG9wdCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM0OTg1KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Nyw3ICs0
NTcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRB
bGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAg
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSA9IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBi
YXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7
CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2lu
dCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xNDI1LDkgKzE0MjUsOSBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZp
Z2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKLSAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3Qg
RnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVs
YXllZFJlcGx5JiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdD
aGVjaywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFdlYkNv
cmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgdWludDY0X3QgbGlzdGVuZXJJRCk7Cisg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3Qg
RnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNDkz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEwNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVj
dFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklE
KQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0
YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCBl
bnVtIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjayBzaG91bGRTa2lwU2FmZUJy
b3dzaW5nQ2hlY2ssIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEsIGVudW0gV2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrIHNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjaykgLT4gKGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQ
b2xpY2llcykgRGVsYXllZAogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
ICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdS
ZXN1bHRDb2NvYS5tbQkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgSEFWRShTQUZFX0JST1dTSU5H
KQotU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoU1NCU2VydmljZUxvb2t1
cFJlc3VsdCAqcmVzdWx0KQotICAgIDogbV9wcm92aWRlcihbcmVzdWx0IHByb3ZpZGVyXSkKK1Nh
ZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmIHVybCwg
U1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIDogbV91cmwoV1RGTW92ZSh1cmwp
KQorICAgICwgbV9wcm92aWRlcihbcmVzdWx0IHByb3ZpZGVyXSkKICAgICAsIG1faXNQaGlzaGlu
ZyhbcmVzdWx0IGlzUGhpc2hpbmddKQogICAgICwgbV9pc01hbHdhcmUoW3Jlc3VsdCBpc01hbHdh
cmVdKQogICAgICwgbV9pc1Vud2FudGVkU29mdHdhcmUoW3Jlc3VsdCBpc1Vud2FudGVkU29mdHdh
cmVdKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3
Nyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWMKICAgICBTU0JM
b29rdXBDb250ZXh0ICpjb250ZXh0ID0gW1NTQkxvb2t1cENvbnRleHQgc2hhcmVkTG9va3VwQ29u
dGV4dF07CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbGlzdGVuZXIuZGlkUmVj
ZWl2ZVNhZmVCcm93c2luZ1Jlc3VsdHMoeyB9KTsKLSAgICBbY29udGV4dCBsb29rVXBVUkw6dXJs
IGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQoU1NCTG9va3VwUmVzdWx0ICosIE5TRXJy
b3IgKik+Ojpmcm9tQ2FsbGFibGUoW2xpc3RlbmVyID0gbWFrZVJlZihsaXN0ZW5lcildIChTU0JM
b29rdXBSZXN1bHQgKnJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2xpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lciksIHJl
c3VsdCA9IHJldGFpblB0cihyZXN1bHQpLCBlcnJvciA9IHJldGFpblB0cihlcnJvcildIHsKKyAg
ICBbY29udGV4dCBsb29rVXBVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOkJsb2NrUHRyPHZvaWQo
U1NCTG9va3VwUmVzdWx0ICosIE5TRXJyb3IgKik+Ojpmcm9tQ2FsbGFibGUoW2xpc3RlbmVyID0g
bWFrZVJlZihsaXN0ZW5lciksIHVybCA9IHVybF0gKFNTQkxvb2t1cFJlc3VsdCAqcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgcmVzdWx0ID0gcmV0YWluUHRyKHJlc3Vs
dCksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgdXJsID0gV1RGTW92ZSh1cmwpXSB7CiAgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2
ZVNhZmVCcm93c2luZ1Jlc3VsdHMoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWMKICAg
ICAgICAgICAgIFZlY3RvcjxTYWZlQnJvd3NpbmdSZXN1bHQ+IHJlc3VsdHNWZWN0b3I7CiAgICAg
ICAgICAgICByZXN1bHRzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW3Jlc3VsdHMgY291
bnRdKTsKICAgICAgICAgICAgIGZvciAoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0IGlu
IHJlc3VsdHMpCi0gICAgICAgICAgICAgICAgcmVzdWx0c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
eyByZXN1bHQgfSk7CisgICAgICAgICAgICAgICAgcmVzdWx0c1ZlY3Rvci51bmNoZWNrZWRBcHBl
bmQoeyBVUkwodXJsKSwgcmVzdWx0IH0pOwogICAgICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2Vp
dmVTYWZlQnJvd3NpbmdSZXN1bHRzKFdURk1vdmUocmVzdWx0c1ZlY3RvcikpOwogICAgICAgICB9
KTsKICAgICB9KS5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMyw3ICs4
MTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lCiAgICAgV2Vi
c2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSwgKmRvY3VtZW50TG9hZGVyKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSogZm9ybVN0YXRl
LCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlLCBTaG91bGRTa2lwU2FmZUJy
b3dzaW5nQ2hlY2sgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBtX2Zy
YW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgewpAQCAtODkyLDcgKzg5
Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAgICAg
RG93bmxvYWRJRCBkb3dubG9hZElEOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+IHdlYnNpdGVQb2xpY2llczsKIAotICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUo
Y29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2
aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgbmV3
TmF2aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgeworICAgICAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBzaG91bGRTa2lw
U2FmZUJyb3dzaW5nQ2hlY2spLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9u
SUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHsgfSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTAy
LDcgKzkwMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAg
ICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9k
ZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1l
bnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2Zy
YW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSks
IGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rp
b24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSwgc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBsaXN0ZW5lcklE
KSkpCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklE
LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9y
bVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNp
c2lvbk1vZGUsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaywgV2ViQ29yZTo6
RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNr
KCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDkzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA4LTE3
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QWRkIHNvbWUgcGx1bWJpbmcgZm9yIHNhZmUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODcwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTgtMDgtMTYgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0
aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgZHJhZy1hbmQtZHJvcCBmb3IgaW5wdXRb
dHlwZT1jb2xvcl0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM0
OTMyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRl
KiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25N
b2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3Rh
dGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OlNob3VsZFNraXBTYWZl
QnJvd3NpbmdDaGVjaywgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAg
ICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIzNDkzMikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNp
c2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5p
bCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpT
aG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2ssIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlv
bikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgp
KTsKICAgICBCT09MIHRyeUFwcExpbmsgPSBzaG91bGRUcnlBcHBMaW5rKHdlYlZpZXcsIGFjdGlv
biwgY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMzQ5MzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wOC0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzb21lIHBs
dW1iaW5nIGZvciBzYWZlIGJyb3dzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg3MDkKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9u
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKwogMjAxOC0wOC0wMiAgRGF2aWQgRmVudG9uICA8ZGF2aWRfZmVudG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0NDg5LgpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM0OTMyKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGlj
eUZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFdlYkNvcmU6OlBvbGlj
eURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIFdl
YkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6U2hvdWxkU2tpcFNhZmVCcm93c2lu
Z0NoZWNrLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyog
d2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShtX3dlYkZyYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gMjM0OTMyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
b3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xp
Y3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>