<?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>221138</bug_id>
          
          <creation_ts>2021-01-29 09:06:31 -0800</creation_ts>
          <short_desc>Recover WebRTC codecs in case of GPUProcess crash</short_desc>
          <delta_ts>2021-02-02 03:01:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local 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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723740</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 09:06:31 -0800</bug_when>
    <thetext>Recover WebRTC codecs in case of GPUProcess crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723744</commentid>
    <comment_count>1</comment_count>
      <attachid>418735</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 09:15:37 -0800</bug_when>
    <thetext>Created attachment 418735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723832</commentid>
    <comment_count>2</comment_count>
      <attachid>418757</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 12:42:47 -0800</bug_when>
    <thetext>Created attachment 418757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723851</commentid>
    <comment_count>3</comment_count>
      <attachid>418765</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-29 13:24:50 -0800</bug_when>
    <thetext>Created attachment 418765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724133</commentid>
    <comment_count>4</comment_count>
      <attachid>418840</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-01 00:47:34 -0800</bug_when>
    <thetext>Created attachment 418840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724268</commentid>
    <comment_count>5</comment_count>
      <attachid>418840</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-01 09:00:16 -0800</bug_when>
    <thetext>Comment on attachment 418840
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=418840&amp;action=review

``

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:473
&gt; +    m_queue-&gt;dispatch([this, connection = makeRef(gpuConnection.connection())] {

Nit: why not `dispatchToThread` as you do elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724574</commentid>
    <comment_count>6</comment_count>
      <attachid>418975</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-02 02:08:29 -0800</bug_when>
    <thetext>Created attachment 418975
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724596</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-02 03:00:19 -0800</bug_when>
    <thetext>Committed r272202: &lt;https://trac.webkit.org/changeset/272202&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418975.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724597</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-02 03:01:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/73872551&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418735</attachid>
            <date>2021-01-29 09:15:37 -0800</date>
            <delta_ts>2021-01-29 13:24:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221138-20210129181533.patch</filename>
            <type>text/plain</type>
            <size>26190</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2ZWUwZDE5ZDA2M2FjM2Ni
YmUxN2Q1ZjllMjc3YTA2OTRjZjg0NTguLjgzMTc5ZWUwZTkwZWVkZGY3NDA3MmIxYzJkZGFiZTll
MDVlNzZjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgTGliV2ViUlRDQ29kZWNzIGxpc3RlbiB0byBHUFVQ
cm9jZXNzIGNyYXNoIG9uIGNyZWF0aW9uIG9mIExpYldlYlJUQ0NvZGVjLgorICAgICAgICBTZXQg
dGhlIGNvbm5lY3Rpb24gYWxzbyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICBUaGlzIGFsbG93
cyB0byByZW1vdmUgdGhlIGhvcCB0byBtYWluIHRocmVhZCB3aGVuIGNyZWF0aW5nL3JlbGVhc2lu
ZyBlbmNvZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEV2ZXJ5dGhpbmcgbm93IGhhcHBlbnMg
aW4gdGhlIGRlZGljYXRlZCBxdWV1ZSwgaW4gcGFydGljdWxhciB1cGRhdGluZyBvZiBtX2Nvbm5l
Y3Rpb24sIGVuY29kZXIgYW5kIGRlY29kZXIgY29ubmVjdGlvbnMsCisgICAgICAgIGFzIHdlbGwg
YXMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIG1hcHMuCisgICAgICAgIFdoZW4gdXNpbmcgZW5jb2Rl
ci9kZWNvZGVyIGNvbm5lY3Rpb24gb3V0c2lkZSBvZiB0aGUgZGVkaWNhdGVkIHF1ZXVlLCBhIGxv
Y2sgaXMgbmVlZGVkLgorCisgICAgICAgIEluIGNhc2Ugb2YgcHJvY2VzcyBjcmFzaCwgd2UgZG8g
c29tZSBzZXR1cCBpbiBtYWluIHRocmVhZCAobGlzdGVuaW5nIHRvIElQQyBtZXNzYWdlcyBmb3Ig
aW5zdGFuY2UpLgorICAgICAgICBCdXQgbW9zdCBvZiB0aGUgd29yayBpcyBkb25lIGluIGEgdGFz
ayBydW4gaW4gdGhlIGRlZGljYXRlZCBxdWV1ZS4KKyAgICAgICAgSW4gdGhpcyB0YXNrLCB3ZSBz
ZXQgdGhlIG5ldyBJUEMgY29ubmVjdGlvbiBvZiBhbGwgcnVubmluZyBkZWNvZGVycyBhbmQgZW5j
b2RlcnMuCisgICAgICAgIFdlIGFsc28gc2VuZCBJUEMgbWVzc2FnZSB0byByZWNyZWF0ZSBlbmNv
ZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEZvciB0aGF0IHB1cnBvc2UsIHdlIHN0b3JlIHNv
bWUgc3RhdGVzIGluIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KKworICAgICAgICBDb3ZlcmVkIGJ5
IEFQSSB0ZXN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUmVtb3RlRGVjb2Rlcik6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ0NvZGVjczo6TGliV2ViUlRDQ29kZWNzKToKKyAgICAgICAgKFdlYktpdDo6
TGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDQ29kZWNzOjpyZWxlYXNlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNy
ZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VF
bmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5j
b2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldEVuY29kZVJhdGVzKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpzZXRDb25uZWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6
CisKIDIwMjEtMDEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlY292ZXIgTWVkaWFTdHJlYW1UcmFjayBhdWRpbyByZW5kZXJpbmcgZnJvbSBHUFVQcm9j
ZXNzIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCAxNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBh
NDdhZWQ2MTZkZTA1Li5lOWY3MWNkY2YwOGFlOGE1OGExYTM3ZjNjZDE0NjdhN2E4NmNiNTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKQEAgLTExNSw2ICsxMTUsMzYgQEAgc3RhdGljIGlubGluZSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbih3ZWJydGM6OlZp
ZGUKICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6
VmlkZW9Db2RlY1R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHdl
YnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0OgorICAgICAgICByZXR1cm4gIkgyNjQiX3M7CisgICAgY2Fz
ZSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NToKKyAgICAgICAgcmV0dXJuICJIMjY1Il9zOworICAg
IGNhc2Ugd2VicnRjOjprVmlkZW9Db2RlY1ZQOToKKyAgICAgICAgcmV0dXJuICJWUDkiX3M7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAiSDI2NCI7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjcmVhdGVSZW1vdGVEZWNvZGVyKExp
YldlYlJUQ0NvZGVjczo6RGVjb2RlciYgZGVjb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIHN3aXRjaCAoZGVjb2Rlci50eXBlKSB7CisgICAgY2FzZSBMaWJXZWJSVEND
b2RlY3M6OlR5cGU6OkgyNjQ6CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjREZWNvZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVy
IH0sIDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6
SDI2NToKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Q3JlYXRlSDI2NURlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpWUDk6CisgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZVZQ
OURlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwogc3RhdGljIGludDMyX3QgZW5jb2RlVmlkZW9GcmFtZSh3ZWJydGM6OldlYktpdFZp
ZGVvRW5jb2RlciBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBib29s
IHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVuY29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJXZWJS
VENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgZnJhbWUsIHNob3VsZEVuY29kZUFzS2V5RnJh
bWUpOwpAQCAtMTM2LDYgKzE2NiwxMSBAQCBzdGF0aWMgdm9pZCBzZXRFbmNvZGVSYXRlc0NhbGxi
YWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYgogTGliV2Vi
UlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MoKQogICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiTGliV2ViUlRDQ29kZWNzIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1
ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQogeworICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAg
IGdwdUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKKworICAgIG1fY29ubmVjdGlvbiA9IG1h
a2VSZWYoZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOworICAgIG1fY29ubmVjdGlvbi0+YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CiAKIExpYldlYlJUQ0NvZGVjczo6fkxpYldlYlJUQ0Nv
ZGVjcygpCkBAIC0xNjcsMTggKzIwMiw2IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxs
YmFja3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIHdlYnJ0Yzo6c2V0VmlkZW9FbmNvZGVyQ2Fs
bGJhY2tzKGNyZWF0ZVZpZGVvRW5jb2RlciwgcmVsZWFzZVZpZGVvRW5jb2RlciwgaW5pdGlhbGl6
ZVZpZGVvRW5jb2RlciwgZW5jb2RlVmlkZW9GcmFtZSwgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNh
bGxiYWNrLCBzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2Rl
Y3M6OnNldENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGlm
IChtX2Nvbm5lY3Rpb24uZ2V0KCkgPT0gJmNvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlVGhyZWFk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24gPSAmY29ubmVjdGlvbjsKLSAgICBtX2Nvbm5l
Y3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwotfQotCiBMaWJXZWJSVENDb2RlY3M6OkRl
Y29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUpCiB7CiAgICAg
YXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPigpOwpAQCAtMTg2LDI5ICsyMDksMTMg
QEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29k
ZXIoVHlwZSB0eXBlKQogICAgIGRlY29kZXItPmlkZW50aWZpZXIgPSBSVENEZWNvZGVySWRlbnRp
Zmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CiAgICAgZGVjb2Rlci0+dHlwZSA9IHR5cGU7CiAK
LSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlciks
IHR5cGVdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
LSAgICAgICAgc2V0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICBkaXNwYXRjaFRvVGhyZWFk
KFt0aGlzLCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ZGVjb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKKyAgICAgICAgY3JlYXRlUmVtb3Rl
RGVjb2RlcigqZGVjb2RlciwgKm1fY29ubmVjdGlvbik7CiAKLSAgICAgICAgZGVjb2Rlci0+Y29u
bmVjdGlvbiA9ICZjb25uZWN0aW9uOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAg
ICBjYXNlIFR5cGU6OkgyNjQ6Ci0gICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NERlY29kZXIgeyBkZWNv
ZGVyLT5pZGVudGlmaWVyIH0sIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VHlwZTo6SDI2NToKLSAgICAgICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1RGVjb2RlciB7IGRlY29kZXItPmlk
ZW50aWZpZXIgfSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpW
UDk6Ci0gICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXItPmlkZW50aWZpZXIg
fSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgYXV0byBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXItPmlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZp
ZXIpKTsKLSAgICAgICAgICAgIG1fZGVjb2RlcnMuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBXVEZN
b3ZlKGRlY29kZXIpKTsKLSAgICAgICAgfSk7CisgICAgICAgIGF1dG8gZGVjb2RlcklkZW50aWZp
ZXIgPSBkZWNvZGVyLT5pZGVudGlmaWVyOworICAgICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29u
dGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgbV9kZWNvZGVycy5hZGQoZGVjb2Rl
cklkZW50aWZpZXIsIFdURk1vdmUoZGVjb2RlcikpOwogICAgIH0pOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0yMTgsMTkgKzIyNSwxNyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVs
ZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBMb2NrSG9sZGVyIGhvbGRlcihkZWNv
ZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrTG9jayk7CiAgICAgZGVjb2Rlci5kZWNvZGVkSW1hZ2VD
YWxsYmFjayA9IG51bGxwdHI7CiAKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVjb2Rl
cklkZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZpZXJdIHsKLSAgICAgICAgZGlzcGF0Y2hUb1Ro
cmVhZChbdGhpcywgZGVjb2RlcklkZW50aWZpZXJdIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2Rl
Y29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7Ci0gICAgICAgICAgICBtX2RlY29k
ZXJzLnJlbW92ZShkZWNvZGVySWRlbnRpZmllcik7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRGVjb2Rl
ciB7IGRlY29kZXJJZGVudGlmaWVyIH0sIDApOworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMs
IGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci5pZGVudGlmaWVyXSB7CisgICAgICAgIEFTU0VS
VChtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgIGlmIChh
dXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRha2UoZGVjb2RlcklkZW50aWZpZXIpKQorICAgICAg
ICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjpkZWNvZGVGcmFt
ZShEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0KQogeworICAg
IExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOwogICAgIGlmICghZGVjb2Rlci5j
b25uZWN0aW9uIHx8IGRlY29kZXIuaGFzRXJyb3IpIHsKICAgICAgICAgZGVjb2Rlci5oYXNFcnJv
ciA9IGZhbHNlOwogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwpAQCAt
MzI1LDE0ICszMzAsMTUgQEAgTGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKiBMaWJXZWJSVENDb2Rl
Y3M6OmNyZWF0ZUVuY29kZXIoVHlwZSB0eXBlLCBjb25zdCBzdGQ6Om0KICAgICBmb3IgKGF1dG8m
IGtleVZhbHVlIDogZm9ybWF0UGFyYW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQo
c3RkOjptYWtlX3BhaXIoU3RyaW5nOjpmcm9tVVRGOChrZXlWYWx1ZS5maXJzdC5kYXRhKCksIGtl
eVZhbHVlLmZpcnN0Lmxlbmd0aCgpKSwgU3RyaW5nOjpmcm9tVVRGOChrZXlWYWx1ZS5zZWNvbmQu
ZGF0YSgpLCBrZXlWYWx1ZS5zZWNvbmQubGVuZ3RoKCkpKSk7CiAKLSAgICBjYWxsT25NYWluUnVu
TG9vcChbdGhpcywgZW5jb2RlciA9IFdURk1vdmUoZW5jb2RlciksIHR5cGUsIHBhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpXSgpIG11dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXIt
PmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tQ29kZWNUeXBlKHR5cGUpLCBwYXJhbWV0ZXJzLCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRl
bmN5RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsKKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBl
bmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwgdHlwZSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFy
YW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVj
dGlvbkxvY2spOworICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0gbV9jb25uZWN0aW9uOwor
ICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVG
cm9tQ29kZWNUeXBlKHR5cGUpLCBwYXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRlbmN5RW5jb2RlckVuYWJsZWQoKSB9LCAw
KTsKKyAgICAgICAgZW5jb2Rlci0+cGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyk7CiAK
LSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlciA9IFdURk1vdmUoZW5jb2Rl
cildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGVuY29kZXJJZGVudGlmaWVyID0gZW5j
b2Rlci0+aWRlbnRpZmllcjsKLSAgICAgICAgICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlu
cyhlbmNvZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9lbmNvZGVycy5hZGQoZW5jb2Rl
cklkZW50aWZpZXIsIFdURk1vdmUoZW5jb2RlcikpOwotICAgICAgICB9KTsKKyAgICAgICAgYXV0
byBlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXItPmlkZW50aWZpZXI7CisgICAgICAgIEFTU0VS
VCghbV9lbmNvZGVycy5jb250YWlucyhlbmNvZGVySWRlbnRpZmllcikpOworICAgICAgICBtX2Vu
Y29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmllciwgV1RGTW92ZShlbmNvZGVyKSk7CiAgICAgfSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM0MiwzNiArMzQ4LDI4IEBAIGludDMyX3QgTGli
V2ViUlRDQ29kZWNzOjpyZWxlYXNlRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyKQogICAgIExvY2tI
b2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKICAgICBlbmNv
ZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0cjsKIAotICAgIGNhbGxPbk1haW5SdW5M
b29wKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllcl0gewotICAg
ICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllcl0gewotICAgICAg
ICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKLSAg
ICAgICAgICAgIG1fZW5jb2RlcnMucmVtb3ZlKGVuY29kZXJJZGVudGlmaWVyKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpSZWxlYXNlRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyIH0sIDApOworICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7
CisgICAgICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7
CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShlbmNvZGVySWRlbnRpZmll
cik7CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyIH0sIDApOwog
ICAgIH0pOwogICAgIHJldHVybiAwOwogfQogCiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5p
dGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRSYXRlLCB1bnNpZ25lZCBtYXhCaXRSYXRlLCB1bnNp
Z25lZCBtaW5CaXRSYXRlLCB1aW50MzJfdCBtYXhGcmFtZVJhdGUpCiB7Ci0gICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCB3
aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZy
YW1lUmF0ZV0gewotICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgICAg
IHNldENvbm5lY3Rpb24oY29ubmVjdGlvbik7Ci0KLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVy
SWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5C
aXRSYXRlLCBtYXhGcmFtZVJhdGUgfSwgMCk7Ci0KLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChb
dGhpcywgZW5jb2RlcklkZW50aWZpZXIsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24p
XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGF1dG8qIGVuY29kZXIgPSBtX2VuY29kZXJz
LmdldChlbmNvZGVySWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzZXQgZW5j
b2Rlci0+Y29ubmVjdGlvbiBoZXJlIHNvIHRoYXQgSW5pdGlhbGl6ZUVuY29kZXIgaXMgc2VudCBi
ZWZvcmUgYW55IEVuY29kZUZyYW1lIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgZW5jb2Rlci0+
Y29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0pOworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5j
b2Rlci5pZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUs
IG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogZW5j
b2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJZGVudGlmaWVyKTsKKyAgICAgICAgZW5jb2Rl
ci0+aW5pdGlhbGl6YXRpb25EYXRhID0gRW5jb2RlckluaXRpYWxpemF0aW9uRGF0YSB7IHdpZHRo
LCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVS
YXRlIH07CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXplRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3
aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZy
YW1lUmF0ZSB9LCAwKTsKICAgICB9KTsKICAgICByZXR1cm4gMDsKIH0KIAogaW50MzJfdCBMaWJX
ZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6
VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKKyAgICBM
b2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKwogICAgIGlmICghZW5jb2Rlci5j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCkBA
IC00MTAsMTEgKzQwOCwxNCBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogdm9pZCBMaWJXZWJS
VENDb2RlY3M6OnJlZ2lzdGVyRW5jb2RlRnJhbWVDYWxsYmFjayhFbmNvZGVyJiBlbmNvZGVyLCB2
b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjaykKIHsKICAgICBMb2NrSG9sZGVyIGhvbGRlcihlbmNv
ZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrTG9jayk7CisKICAgICBlbmNvZGVyLmVuY29kZWRJbWFn
ZUNhbGxiYWNrID0gZW5jb2RlZEltYWdlQ2FsbGJhY2s7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29k
ZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1
aW50MzJfdCBmcmFtZVJhdGUpCiB7CisgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9u
TG9jayk7CisKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikgewogICAgICAgICBjYWxsT25N
YWluUnVuTG9vcChbZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIGJpdFJh
dGUsIGZyYW1lUmF0ZV0gewogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29kZVJhdGVzIHsgZW5jb2RlcklkZW50aWZpZXIsIGJp
dFJhdGUsIGZyYW1lUmF0ZSB9LCAwKTsKQEAgLTQ1OCw2ICs0NTksMzYgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3M6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBMaWJX
ZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKQoreworICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworCisg
ICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKKworICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGdwdUNvbm5lY3Rpb24uYWRk
Q2xpZW50KCp0aGlzKTsKKyAgICBncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCB0aGlzKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb25uZWN0aW9u
ID0gbWFrZVJlZihncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSldIHsKKyAgICAgICAgLy8gTG9j
ayBldmVyeXRoaW5nIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSBlbmNvZGVyL2RlY29kZXIgY29ubmVj
dGlvbi4KKyAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisKKyAg
ICAgICAgbV9jb25uZWN0aW9uID0gY29ubmVjdGlvbi5wdHIoKTsKKyAgICAgICAgLy8gUmVjcmVh
dGUgZW5jb2RlcnMgYW5kIGluaXRpYWxpemUgdGhlbSwgcmVjcmVhdGUgZGVjb2RlcnMuCisgICAg
ICAgIGZvciAoYXV0byYgZW5jb2RlciA6IG1fZW5jb2RlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwgZm9ybWF0TmFtZUZyb21XZWJSVENDb2Rl
Y1R5cGUoZW5jb2Rlci0+Y29kZWNUeXBlKSwgZW5jb2Rlci0+cGFyYW1ldGVycywgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENIMjY0TG93TGF0ZW5jeUVuY29k
ZXJFbmFibGVkKCkgfSwgMCk7CisgICAgICAgICAgICBpZiAoZW5jb2Rlci0+aW5pdGlhbGl6YXRp
b25EYXRhKQorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXplRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIs
IGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+d2lkdGgsIGVuY29kZXItPmluaXRpYWxpemF0
aW9uRGF0YS0+aGVpZ2h0LCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPnN0YXJ0Qml0UmF0
ZSwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5tYXhCaXRSYXRlLCBlbmNvZGVyLT5pbml0
aWFsaXphdGlvbkRhdGEtPm1pbkJpdFJhdGUsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+
bWF4RnJhbWVSYXRlIH0sIDApOworICAgICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9IGNv
bm5lY3Rpb24ucHRyKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBkZWNvZGVyIDog
bV9kZWNvZGVycy52YWx1ZXMoKSkgeworICAgICAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2Rlcigq
ZGVjb2RlciwgY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0
aW9uID0gY29ubmVjdGlvbi5wdHIoKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaAppbmRleCA0YmVhZTA2MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNh
YTdkLi4xY2U2ZTFhOGY5YmFiMzA2ZmMzYTY1NGU5OTA2Yzc4NWNlODZkODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKQEAgLTU4LDcgKzU5LDcgQEAg
c3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUluZm87CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1j
bGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNz
YWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKK2NsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHB1YmxpYyBJ
UEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQsIHB1YmxpYyBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENDb2RlY3MoKTsKQEAgLTgzLDExICs4NCwyMSBAQCBw
dWJsaWM6CiAgICAgaW50MzJfdCBkZWNvZGVGcmFtZShEZWNvZGVyJiwgdWludDMyX3QgdGltZVN0
YW1wLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVp
Z2h0KTsKICAgICB2b2lkIHJlZ2lzdGVyRGVjb2RlRnJhbWVDYWxsYmFjayhEZWNvZGVyJiwgdm9p
ZCogZGVjb2RlZEltYWdlQ2FsbGJhY2spOwogCisgICAgc3RydWN0IEVuY29kZXJJbml0aWFsaXph
dGlvbkRhdGEgeworICAgICAgICB1aW50MTZfdCB3aWR0aDsKKyAgICAgICAgdWludDE2X3QgaGVp
Z2h0OworICAgICAgICB1bnNpZ25lZCBzdGFydEJpdFJhdGU7CisgICAgICAgIHVuc2lnbmVkIG1h
eEJpdFJhdGU7CisgICAgICAgIHVuc2lnbmVkIG1pbkJpdFJhdGU7CisgICAgICAgIHVpbnQzMl90
IG1heEZyYW1lUmF0ZTsKKyAgICB9OwogICAgIHN0cnVjdCBFbmNvZGVyIHsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBSVENFbmNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyOwogICAgICAgICB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIGNvZGVj
VHlwZSB7IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNHZW5lcmljIH07CisgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzOworICAgICAgICBPcHRpb25hbDxFbmNv
ZGVySW5pdGlhbGl6YXRpb25EYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIHZvaWQq
IGVuY29kZWRJbWFnZUNhbGxiYWNrIHsgbnVsbHB0ciB9OwogICAgICAgICBMb2NrIGVuY29kZWRJ
bWFnZUNhbGxiYWNrTG9jazsKICAgICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVj
dGlvbjsKQEAgLTExMywxNyArMTI0LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wbGV0ZWRF
bmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0
IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYpOwogICAgIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBjb252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYpOwogCi0gICAgdm9pZCBz
ZXRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKIAorICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGll
bnQKKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mKTsKKwogcHJpdmF0ZToKICAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fZGVjb2RlcnM7CiAgICAgSGFzaFNldDxSVENEZWNv
ZGVySWRlbnRpZmllcj4gbV9kZWNvZGluZ0Vycm9yczsKIAogICAgIEhhc2hNYXA8UlRDRW5jb2Rl
cklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPj4gbV9lbmNvZGVyczsKIAorICAg
IExvY2sgbV9jb25uZWN0aW9uTG9jazsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAy
MmM0YjhjNTQ2OTUxMjFkZmM2YjUyZjhkNDU1MDVjYjI2NWMwMmI2Li4xMTNlM2I1OTM4MTRmMDVk
ZmU5NmJkMmJiOWQ4ODM4NDVjNDQyZjMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNl
ck1lZGlhLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWw6CisKIDIwMjEtMDEtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSB3ZWJy
dGMgdmlkZW8gY2FwdHVyZSBpbiBHUFVQcm9jZXNzIFdlYktpdFRlc3RSdW5uZXIgKGlPUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQppbmRl
eCA0ODQwNGIzNjViYmQ3YjY4OTBjYmYzMTRmMDI0NjRlNzk1YjY3NzgwLi4zN2FlYzY0ODEyOTM0
MGRkNjNlN2Q0N2EyY2M4M2NhZmE2ZjRhNzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTQ0OSw3ICs0NTAsODMgQEAgVEVTVChXZWJLaXQyLCBDcmFz
aEdQVVByb2Nlc3NXaGlsZUNhcHR1cmluZykKICAgICBFWFBFQ1RfRVEoZ3B1UHJvY2Vzc1BJRCwg
W3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOwogICAgIEVYUEVDVF9FUSh3ZWJW
aWV3UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KLSNlbmRpZgorCitU
RVNUKFdlYktpdDIsIENyYXNoR1BVUHJvY2Vzc1doaWxlQ2FwdHVyaW5nQW5kQ2FsbGluZykKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc107CisKKyAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJl
IGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7CisgICAgICAgIGlm
IChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNz
RW5hYmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JJ
bnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBp
c0VxdWFsVG9TdHJpbmc6QCJDYXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAg
ICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpOTyBmb3JJbnRlcm5hbERlYnVnRmVhdHVy
ZTpmZWF0dXJlXTsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJD
YXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NFbmFibGVkIl0pCisgICAgICAgICAgICBbcHJlZmVyZW5j
ZXMgX3NldEVuYWJsZWQ6WUVTIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOworICAg
IH0KKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVy
ZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5
IGlzRXF1YWxUb1N0cmluZzpAIldlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxl
ZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJl
OmZlYXR1cmVdOworICAgIH0KKworICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJl
c1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNh
cHR1cmVFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkID0gWUVTOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1N
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJndW0iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tHZXRVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKKyAgICBFWFBFQ1RfVFJV
RSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3Rh
dGVBY3RpdmVDYW1lcmEpKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8odHJ1ZSkiXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjcmVhdGVDb25u
ZWN0aW9uKCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAg
YXV0byB3ZWJWaWV3UElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAg
IC8vIFRoZSBHUFUgcHJvY2VzcyBzaG91bGQgZ2V0IGxhdW5jaGVkLgorICAgIGF1dG8qIHByb2Nl
c3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbDsKKyAgICB1bnNpZ25lZCB0
aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZp
ZXJdICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xl
ZXAoMC4xKTsKKworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlm
aWVyXSwgMCk7CisgICAgaWYgKCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSkK
KyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtwcm9jZXNzUG9vbCBf
Z3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gS2lsbCB0aGUgR1BVIFByb2Nlc3MuCisg
ICAga2lsbChncHVQcm9jZXNzUElELCA5KTsKKworICAgIC8vIEdQVSBQcm9jZXNzIHNob3VsZCBn
ZXQgcmVsYXVuY2hlZC4KKyAgICB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoKCFbcHJvY2Vzc1Bv
b2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSB8fCBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVu
dGlmaWVyXSA9PSBncHVQcm9jZXNzUElEKSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX05FKFtwcm9jZXNzUG9v
bCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdLCAwKTsKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQb29s
IF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIGdwdVByb2Nlc3NQSUQpOworICAgIGdwdVByb2Nlc3NQ
SUQgPSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIE1ha2Ug
c3VyZSB0aGUgV2ViUHJvY2VzcyBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9FUSh3ZWJWaWV3
UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2hlY2tEZWNv
ZGluZ1ZpZGVvKCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisg
ICAgRVhQRUNUX0VRKGdwdVByb2Nlc3NQSUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWwKaW5kZXggODk1NjgwMzlmZDE1NWM5OTVlNTc0Yjk4
ZWQ0NjU2ZjlkMDY3NDYzZi4uMTYzNzZiY2UyNzc3MGY2Y2ZlMTllMmM3ZmQwNDY2NGMzMzQ4MzJi
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1l
ZGlhLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1l
ZGlhLmh0bWwKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ZnVuY3Rpb24gY2hlY2tHZXRDYXBhYmlsaXRpZXMoKSB7Ci0gICAgICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKFJUQ1J0cFNlbmRlci5nZXRD
YXBhYmlsaXRpZXMoJ3ZpZGVvJykgIT0gbnVsbCA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAgICAg
ICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKFJU
Q1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ3ZpZGVvJykgIT0gbnVsbCA/ICJQQVNTIiA6ICJG
QUlMIGNoZWNrR2V0Q2FwYWJpbGl0aWVzIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIGdldFN0YXRzKGNvbm5lY3Rpb24sIHR5cGUsIGtpbmQpCkBAIC0xMzQsNyArMTM0
LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgICAgICAgICAgICAg
IGNvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPiAxMDApIHsK
LSAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBv
c3RNZXNzYWdlKCJGQUlMIik7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCBjaGVja1ZpZGVvU3RhdHVzIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgZ2V0U3RhdHMocGMxLCAib3V0Ym91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3RhdHMp
ID0+IHsKQEAgLTE0NiwxMSArMTQ2LDQzIEBACiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRGVjb2RpbmdWaWRlb0NvdW50ZXJJ
bmNyZWFzZXMoY291bnRlciwgZnJhbWVzRGVjb2RlZCkgeworICAgICAgICAgICAgICAgIGlmICgh
Y291bnRlcikKKyAgICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7CisgICAgICAgICAgICAg
ICAgZ2V0U3RhdHMocGMyLCAiaW5ib3VuZC1ydHAiLCAidmlkZW8iKS50aGVuKChzdGF0cykgPT4g
eworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMgJiYgc3RhdHMuZnJhbWVzRGVjb2RlZCA+
IGZyYW1lc0RlY29kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb3VudGVyID4gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tEZWNvZGlu
Z1ZpZGVvQ291bnRlckluY3JlYXNlcyAiICsgZnJhbWVzRGVjb2RlZCArICIgIiArIEpTT04uc3Ry
aW5naWZ5KHN0YXRzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBjaGVj
a0RlY29kaW5nVmlkZW9Db3VudGVySW5jcmVhc2VzKCsrY291bnRlciwgZnJhbWVzRGVjb2RlZCks
IDUwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gY2hlY2tEZWNvZGluZ1ZpZGVvKGNvdW50ZXIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIWNvdW50ZXIpCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwOworICAgICAgICAg
ICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3RhdHMp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRzLmZyYW1lc0RlY29k
ZWQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0RlY29kaW5nVmlkZW9Db3Vu
dGVySW5jcmVhc2VzKGNvdW50ZXIsIHN0YXRzLmZyYW1lc0RlY29kZWQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGlmIChjb3VudGVyID4gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tEZWNv
ZGluZ1ZpZGVvICIgKyBKU09OLnN0cmluZ2lmeShzdGF0cykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gY2hlY2tEZWNvZGluZ1ZpZGVvKCsrY291bnRlciksIDUwKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rpb24g
Y2hlY2tBdWRpb1N0YXR1cyhjb3VudGVyKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb3VudGVy
KQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChjb3VudGVyID4gMTAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCIpOworICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwg
Y2hlY2tBdWRpb1N0YXR1cyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwg
ImF1ZGlvIikudGhlbigoc3RhdHMpID0+IHsK
</data>
<flag name="commit-queue"
          id="436820"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418757</attachid>
            <date>2021-01-29 12:42:47 -0800</date>
            <delta_ts>2021-01-29 13:24:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221138-20210129214245.patch</filename>
            <type>text/plain</type>
            <size>28359</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2ZWUwZDE5ZDA2M2FjM2Ni
YmUxN2Q1ZjllMjc3YTA2OTRjZjg0NTguLmE5YmMzMWY3MDU4Yzk0MGRlYTQ3NWViYWE4OWFkN2Ew
MTU2NGUzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgTGliV2ViUlRDQ29kZWNzIGxpc3RlbiB0byBHUFVQ
cm9jZXNzIGNyYXNoIG9uIGNyZWF0aW9uIG9mIExpYldlYlJUQ0NvZGVjLgorICAgICAgICBTZXQg
dGhlIGNvbm5lY3Rpb24gYWxzbyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICBUaGlzIGFsbG93
cyB0byByZW1vdmUgdGhlIGhvcCB0byBtYWluIHRocmVhZCB3aGVuIGNyZWF0aW5nL3JlbGVhc2lu
ZyBlbmNvZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEV2ZXJ5dGhpbmcgbm93IGhhcHBlbnMg
aW4gdGhlIGRlZGljYXRlZCBxdWV1ZSwgaW4gcGFydGljdWxhciB1cGRhdGluZyBvZiBtX2Nvbm5l
Y3Rpb24sIGVuY29kZXIgYW5kIGRlY29kZXIgY29ubmVjdGlvbnMsCisgICAgICAgIGFzIHdlbGwg
YXMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIG1hcHMuCisgICAgICAgIFdoZW4gdXNpbmcgZW5jb2Rl
ci9kZWNvZGVyIGNvbm5lY3Rpb24gb3V0c2lkZSBvZiB0aGUgZGVkaWNhdGVkIHF1ZXVlLCBhIGxv
Y2sgaXMgbmVlZGVkLgorCisgICAgICAgIFVwZGF0ZSBMaWJXZWJSVENDb2RlY3MgdXNlIG9mIGdw
dSBwcm9jZXNzIHdoZW4gY3JlYXRpbmcgYSBwZWVyIGNvbm5lY3Rpb24gc28gdGhhdCB0aGlzIGhh
cHBlbnMgaW4gbWFpbiB0aHJlYWQuCisKKyAgICAgICAgSW4gY2FzZSBvZiBwcm9jZXNzIGNyYXNo
LCB3ZSBkbyBzb21lIHNldHVwIGluIG1haW4gdGhyZWFkIChsaXN0ZW5pbmcgdG8gSVBDIG1lc3Nh
Z2VzIGZvciBpbnN0YW5jZSkuCisgICAgICAgIEJ1dCBtb3N0IG9mIHRoZSB3b3JrIGlzIGRvbmUg
aW4gYSB0YXNrIHJ1biBpbiB0aGUgZGVkaWNhdGVkIHF1ZXVlLgorICAgICAgICBJbiB0aGlzIHRh
c2ssIHdlIHNldCB0aGUgbmV3IElQQyBjb25uZWN0aW9uIG9mIGFsbCBydW5uaW5nIGRlY29kZXJz
IGFuZCBlbmNvZGVycy4KKyAgICAgICAgV2UgYWxzbyBzZW5kIElQQyBtZXNzYWdlIHRvIHJlY3Jl
YXRlIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2Ug
c3RvcmUgc29tZSBzdGF0ZXMgaW4gZW5jb2RlcnMgYW5kIGRlY29kZXJzLgorCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVEND
b2RlY1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVSZW1vdGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MpOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpkZWNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6
cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmluaXRp
YWxpemVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0RW5jb2RlUmF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldENvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZUVuY29kZXJGYWN0b3J5KToKKwogMjAyMS0wMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjb3ZlciBNZWRpYVN0cmVhbVRyYWNrIGF1ZGlvIHJl
bmRlcmluZyBmcm9tIEdQVVByb2Nlc3MgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDE2OGVmNDM1
ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUuLmU5ZjcxY2RjZjA4YWU4YTU4YTFhMzdm
M2NkMTQ2N2E3YTg2Y2I1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTE1LDYgKzExNSwzNiBAQCBz
dGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHRvTWVkaWFTYW1wbGVWaWRl
b1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZQogICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZTsKIH0KIAorc3RhdGljIGlubGluZSBTdHJpbmcgZm9ybWF0TmFtZUZyb21XZWJS
VENDb2RlY1R5cGUod2VicnRjOjpWaWRlb0NvZGVjVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Db2RlY0gyNjQ6CisgICAgICAgIHJldHVy
biAiSDI2NCJfczsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY1OgorICAgICAgICBy
ZXR1cm4gIkgyNjUiX3M7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb0NvZGVjVlA5OgorICAgICAg
ICByZXR1cm4gIlZQOSJfczsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuICJIMjY0IjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNy
ZWF0ZVJlbW90ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyJiBkZWNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgc3dpdGNoIChkZWNvZGVyLnR5cGUpIHsK
KyAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NDoKKyAgICAgICAgY29ubmVjdGlv
bi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NERlY29kZXIg
eyBkZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGli
V2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1OgorICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2Fn
ZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1RGVjb2RlciB7IGRlY29kZXIuaWRl
bnRpZmllciB9LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWJXZWJSVENDb2RlY3M6
OlR5cGU6OlZQOToKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmllciB9LCAwKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgaW50MzJfdCBlbmNvZGVWaWRlb0Zy
YW1lKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKICAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZW5jb2RlRnJhbWUo
KnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBmcmFtZSwg
c2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CkBAIC0xMzYsNiArMTY2LDExIEBAIHN0YXRpYyB2b2lk
IHNldEVuY29kZVJhdGVzQ2FsbGJhY2sod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2Rl
ciwgY29uc3Qgd2ViCiBMaWJXZWJSVENDb2RlY3M6OkxpYldlYlJUQ0NvZGVjcygpCiAgICAgOiBt
X3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJMaWJXZWJSVENDb2RlY3MiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiB7CisgICAgYXV0
byYgZ3B1Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCk7CisgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworCisg
ICAgbV9jb25uZWN0aW9uID0gbWFrZVJlZihncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogTGliV2ViUlRD
Q29kZWNzOjp+TGliV2ViUlRDQ29kZWNzKCkKQEAgLTE2NywxOCArMjAyLDYgQEAgdm9pZCBMaWJX
ZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgd2VicnRj
OjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9FbmNvZGVyLCByZWxlYXNlVmlk
ZW9FbmNvZGVyLCBpbml0aWFsaXplVmlkZW9FbmNvZGVyLCBlbmNvZGVWaWRlb0ZyYW1lLCByZWdp
c3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIHNldEVuY29kZVJhdGVzQ2FsbGJhY2spOwogfQog
Ci12b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlvbi5nZXQoKSA9PSAmY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQotICAgIG1fY29ubmVjdGlvbiA9ICZjb25u
ZWN0aW9uOwotICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7Ci19Ci0K
IExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVy
KFR5cGUgdHlwZSkKIHsKICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KCk7
CkBAIC0xODYsMjkgKzIwOSwxMyBAQCBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJU
Q0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUpCiAgICAgZGVjb2Rlci0+aWRlbnRpZmll
ciA9IFJUQ0RlY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBkZWNv
ZGVyLT50eXBlID0gdHlwZTsKIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWNvZGVy
ID0gV1RGTW92ZShkZWNvZGVyKSwgdHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwotICAgICAgICBzZXRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgp
IG11dGFibGUgeworICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gbV9jb25uZWN0aW9uOwor
ICAgICAgICBjcmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqbV9jb25uZWN0aW9uKTsKIAot
ICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gJmNvbm5lY3Rpb247Ci0KLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SDI2NDoKLSAgICAgICAgICAgIGRlY29k
ZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVIMjY0RGVjb2RlciB7IGRlY29kZXItPmlkZW50aWZpZXIgfSwgMCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpIMjY1OgotICAgICAgICAgICAgZGVjb2Rlci0+Y29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjVE
ZWNvZGVyIHsgZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFR5cGU6OlZQOToKLSAgICAgICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVWUDlEZWNvZGVyIHsg
ZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlciA9IFdURk1vdmUoZGVj
b2RlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0g
ZGVjb2Rlci0+aWRlbnRpZmllcjsKLSAgICAgICAgICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250
YWlucyhkZWNvZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9kZWNvZGVycy5hZGQoZGVj
b2RlcklkZW50aWZpZXIsIFdURk1vdmUoZGVjb2RlcikpOwotICAgICAgICB9KTsKKyAgICAgICAg
YXV0byBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXItPmlkZW50aWZpZXI7CisgICAgICAgIEFT
U0VSVCghbV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOworICAgICAgICBt
X2RlY29kZXJzLmFkZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIxOCwxOSArMjI1LDE3IEBAIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihEZWNvZGVyJiBkZWNvZGVyKQogICAgIExv
Y2tIb2xkZXIgaG9sZGVyKGRlY29kZXIuZGVjb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKICAgICBk
ZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0cjsKIAotICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0gewot
ICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllcl0gewotICAg
ICAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsK
LSAgICAgICAgICAgIG1fZGVjb2RlcnMucmVtb3ZlKGRlY29kZXJJZGVudGlmaWVyKTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CisgICAgZGlz
cGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZp
ZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZp
ZXIpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMudGFrZShkZWNvZGVy
SWRlbnRpZmllcikpCisgICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6UmVsZWFzZURlY29kZXIgeyBkZWNvZGVySWRlbnRp
ZmllciB9LCAwKTsKICAgICB9KTsKICAgICByZXR1cm4gMDsKIH0KIAogaW50MzJfdCBMaWJXZWJS
VENDb2RlY3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IHRpbWVTdGFt
cCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQpCiB7CisgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7
CiAgICAgaWYgKCFkZWNvZGVyLmNvbm5lY3Rpb24gfHwgZGVjb2Rlci5oYXNFcnJvcikgewogICAg
ICAgICBkZWNvZGVyLmhhc0Vycm9yID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBXRUJSVENfVklE
RU9fQ09ERUNfRVJST1I7CkBAIC0zMjUsMTQgKzMzMCwxNSBAQCBMaWJXZWJSVENDb2RlY3M6OkVu
Y29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0
ZDo6bQogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0ZXJzKQogICAgICAg
ICBwYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZh
bHVlLmZpcnN0LmRhdGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21V
VEY4KGtleVZhbHVlLnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsK
IAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVy
KSwgdHlwZSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUo
dHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxlZCgpIH0sIDApOworICAgIGRpc3Bh
dGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIpLCB0eXBlLCBwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgTG9ja0hv
bGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb247CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRl
bnRpZmllciwgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUodHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lF
bmNvZGVyRW5hYmxlZCgpIH0sIDApOworICAgICAgICBlbmNvZGVyLT5wYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKTsKIAotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNv
ZGVyID0gV1RGTW92ZShlbmNvZGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gZW5j
b2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLT5pZGVudGlmaWVyOwotICAgICAgICAgICAgQVNTRVJU
KCFtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7Ci0gICAgICAgICAgICBt
X2VuY29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmllciwgV1RGTW92ZShlbmNvZGVyKSk7Ci0gICAg
ICAgIH0pOworICAgICAgICBhdXRvIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci0+aWRlbnRp
ZmllcjsKKyAgICAgICAgQVNTRVJUKCFtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlm
aWVyKSk7CisgICAgICAgIG1fZW5jb2RlcnMuYWRkKGVuY29kZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KGVuY29kZXIpKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzQyLDM2ICsz
NDgsMjggQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXIm
IGVuY29kZXIpCiAgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxs
YmFja0xvY2spOwogICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRyOwog
Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rl
ci5pZGVudGlmaWVyXSB7Ci0gICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJ
ZGVudGlmaWVyXSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhlbmNv
ZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9lbmNvZGVycy5yZW1vdmUoZW5jb2Rlcklk
ZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIg
fSwgMCk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBl
bmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMo
ZW5jb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50
YWtlKGVuY29kZXJJZGVudGlmaWVyKTsKKyAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNvZGVyIHsgZW5jb2Rl
cklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyLCB1aW50
MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdFJhdGUsIHVuc2ln
bmVkIG1heEJpdFJhdGUsIHVuc2lnbmVkIG1pbkJpdFJhdGUsIHVpbnQzMl90IG1heEZyYW1lUmF0
ZSkKIHsKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBl
bmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0
ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSB7Ci0gICAgICAgIGF1dG8mIGNvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsKLSAgICAgICAgc2V0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKLQotICAgICAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFs
aXplRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJh
dGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZSB9LCAwKTsKLQotICAgICAg
ICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciwgY29ubmVjdGlvbiA9
IG1ha2VSZWYoY29ubmVjdGlvbildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoYXV0byog
ZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJZGVudGlmaWVyKSkgewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNldCBlbmNvZGVyLT5jb25uZWN0aW9uIGhlcmUgc28gdGhhdCBJbml0aWFs
aXplRW5jb2RlciBpcyBzZW50IGJlZm9yZSBhbnkgRW5jb2RlRnJhbWUgbWVzc2FnZS4KLSAgICAg
ICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5j
b2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0
Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSgpIG11dGFibGUg
eworICAgICAgICBhdXRvKiBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZp
ZXIpOworICAgICAgICBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEgPSBFbmNvZGVySW5pdGlh
bGl6YXRpb25EYXRhIHsgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBt
aW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUgfTsKKyAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsg
ZW5jb2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0
ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDApOwogICAgIH0pOwogICAgIHJldHVybiAw
OwogfQogCiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVB
c0tleUZyYW1lKQogeworICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOwor
CiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJSVENfVklE
RU9fQ09ERUNfRVJST1I7CiAKQEAgLTQxMCwxMSArNDA4LDE0IEBAIGludDMyX3QgTGliV2ViUlRD
Q29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVv
RnJhbWUmCiB2b2lkIExpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxiYWNr
KEVuY29kZXImIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrKQogewogICAgIExv
Y2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKKwogICAg
IGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBlbmNvZGVkSW1hZ2VDYWxsYmFjazsKIH0K
IAogdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldEVuY29kZVJhdGVzKEVuY29kZXImIGVuY29kZXIs
IHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKKyAgICBMb2NrSG9sZGVy
IGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKwogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9u
KSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtlbmNvZGVySWRlbnRpZmllciA9IGVuY29k
ZXIuaWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlXSB7CiAgICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0RW5jb2RlUmF0ZXMgeyBl
bmNvZGVySWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlIH0sIDApOwpAQCAtNDU4LDYgKzQ1
OSwzNiBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCit2b2lkIExpYldlYlJUQ0NvZGVjczo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIobV9j
b25uZWN0aW9uTG9jayk7CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgYXV0byYgZ3B1Q29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cisg
ICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworICAgIGdwdUNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGdwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigp
KV0geworICAgICAgICAvLyBMb2NrIGV2ZXJ5dGhpbmcgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIGVu
Y29kZXIvZGVjb2RlciBjb25uZWN0aW9uLgorICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nv
bm5lY3Rpb25Mb2NrKTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigp
OworICAgICAgICAvLyBSZWNyZWF0ZSBlbmNvZGVycyBhbmQgaW5pdGlhbGl6ZSB0aGVtLCByZWNy
ZWF0ZSBkZWNvZGVycy4KKyAgICAgICAgZm9yIChhdXRvJiBlbmNvZGVyIDogbV9lbmNvZGVycy52
YWx1ZXMoKSkgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3Jt
YXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZShlbmNvZGVyLT5jb2RlY1R5cGUpLCBlbmNvZGVyLT5w
YXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJU
Q0gyNjRMb3dMYXRlbmN5RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsKKyAgICAgICAgICAgIGlmIChl
bmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEpCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsg
ZW5jb2Rlci0+aWRlbnRpZmllciwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT53aWR0aCwg
ZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5oZWlnaHQsIGVuY29kZXItPmluaXRpYWxpemF0
aW9uRGF0YS0+c3RhcnRCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1heEJp
dFJhdGUsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWluQml0UmF0ZSwgZW5jb2Rlci0+
aW5pdGlhbGl6YXRpb25EYXRhLT5tYXhGcmFtZVJhdGUgfSwgMCk7CisgICAgICAgICAgICBlbmNv
ZGVyLT5jb25uZWN0aW9uID0gY29ubmVjdGlvbi5wdHIoKTsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKGF1dG8mIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBj
cmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCBjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgIGRlY29kZXItPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigpOworICAgICAgICB9Cisg
ICAgfSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDRiZWFlMDYyMzE3YmEyNmE2
MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QuLjFjZTZlMWE4ZjliYWIzMDZmYzNhNjU0ZTk5MDZjNzg1
Y2U4NmQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5o
IgpAQCAtNTgsNyArNTksNyBAQCBzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHB1YmxpYyBJUEM6OkNv
bm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgTGliV2Vi
UlRDQ29kZWNzIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
UmVmQ291bnRlZCwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ0NvZGVjcygpOwpA
QCAtODMsMTEgKzg0LDIxIEBAIHB1YmxpYzoKICAgICBpbnQzMl90IGRlY29kZUZyYW1lKERlY29k
ZXImLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpOwogICAgIHZvaWQgcmVnaXN0ZXJEZWNvZGVGcmFtZUNh
bGxiYWNrKERlY29kZXImLCB2b2lkKiBkZWNvZGVkSW1hZ2VDYWxsYmFjayk7CiAKKyAgICBzdHJ1
Y3QgRW5jb2RlckluaXRpYWxpemF0aW9uRGF0YSB7CisgICAgICAgIHVpbnQxNl90IHdpZHRoOwor
ICAgICAgICB1aW50MTZfdCBoZWlnaHQ7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZTsK
KyAgICAgICAgdW5zaWduZWQgbWF4Qml0UmF0ZTsKKyAgICAgICAgdW5zaWduZWQgbWluQml0UmF0
ZTsKKyAgICAgICAgdWludDMyX3QgbWF4RnJhbWVSYXRlOworICAgIH07CiAgICAgc3RydWN0IEVu
Y29kZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgICAgIHdlYnJ0Yzo6
VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlIHsgd2VicnRjOjprVmlkZW9Db2RlY0dlbmVyaWMgfTsK
KyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnM7Cisg
ICAgICAgIE9wdGlvbmFsPEVuY29kZXJJbml0aWFsaXphdGlvbkRhdGE+IGluaXRpYWxpemF0aW9u
RGF0YTsKICAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2sgeyBudWxscHRyIH07CiAg
ICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwogICAgICAgICBSZWZQdHI8SVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpAQCAtMTEzLDE3ICsxMjQsMTkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZl
clJlZik7CiAKLSAgICB2b2lkIHNldENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7Ci0KICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCisgICAgLy8gR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UlRD
RGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsK
ICAgICBIYXNoU2V0PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwogCiAg
ICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+
PiBtX2VuY29kZXJzOwogCisgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBt
X2ltYWdlVHJhbnNmZXJTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMzEw
NGY1NTQxMDc0OWI1ZmZjOGRiYWRhNWRkOWYxMDQ1Y2YyNmQ4OS4uZGZjYTRhZjEzNWRjZjQ4NDgz
ODA3ZjBhYjgwNzVmOWIxMDRiYmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC01
Miw2ICs1Miw5IEBAIHByaXZhdGU6CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRT
b2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBMaWJXZWJSVENDb2RlY3M6
OnNldENhbGxiYWNrcyhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpKTsKKyNlbmRpZgogICAgIHJl
dHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2Jz
ZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9y
KCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFz
eW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIApAQCAtMTQ1LDE3ICsxNDgsMTEgQEAgc3RkOjp1
bmlxdWVfcHRyPExpYldlYlJUQ1Byb3ZpZGVyOjpTdXNwZW5kYWJsZVNvY2tldEZhY3Rvcnk+IExp
YldlYlJUQ1Byb3ZpZGVyOjoKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVy
RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KCkKIHsKLSNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBMaWJX
ZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpKTsKLSNl
bmRpZgogICAgIHJldHVybiBMaWJXZWJSVENQcm92aWRlckNvY29hOjpjcmVhdGVEZWNvZGVyRmFj
dG9yeSgpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5
PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIExpYldlYlJUQ0Nv
ZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkKCkpOwotI2VuZGlmCiAg
ICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAyMmM0YjhjNTQ2OTUxMjFkZmM2YjUyZjhkNDU1MDVjYjI2NWMwMmI2Li4xMTNlM2I1OTM4MTRm
MDVkZmU5NmJkMmJiOWQ4ODM4NDVjNDQyZjMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDEtMjkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNv
ZGVjcyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWw6CisKIDIwMjEtMDEt
MjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSB3
ZWJydGMgdmlkZW8gY2FwdHVyZSBpbiBHUFVQcm9jZXNzIFdlYktpdFRlc3RSdW5uZXIgKGlPUykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRp
YS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQpp
bmRleCA0ODQwNGIzNjViYmQ3YjY4OTBjYmYzMTRmMDI0NjRlNzk1YjY3NzgwLi4zN2FlYzY0ODEy
OTM0MGRkNjNlN2Q0N2EyY2M4M2NhZmE2ZjRhNzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0
dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTQ0OSw3ICs0NTAsODMgQEAgVEVTVChXZWJLaXQyLCBD
cmFzaEdQVVByb2Nlc3NXaGlsZUNhcHR1cmluZykKICAgICBFWFBFQ1RfRVEoZ3B1UHJvY2Vzc1BJ
RCwgW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOwogICAgIEVYUEVDVF9FUSh3
ZWJWaWV3UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KLSNlbmRpZgor
CitURVNUKFdlYktpdDIsIENyYXNoR1BVUHJvY2Vzc1doaWxlQ2FwdHVyaW5nQW5kQ2FsbGluZykK
K3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc107CisKKyAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0
dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7CisgICAgICAg
IGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQ2FwdHVyZUF1ZGlvSW5HUFVQcm9j
ZXNzRW5hYmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBm
b3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtl
eSBpc0VxdWFsVG9TdHJpbmc6QCJDYXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQiXSkKKyAg
ICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxlZDpOTyBmb3JJbnRlcm5hbERlYnVnRmVh
dHVyZTpmZWF0dXJlXTsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6
QCJDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NFbmFibGVkIl0pCisgICAgICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldEVuYWJsZWQ6WUVTIGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOwor
ICAgIH0KKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJl
ZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUu
a2V5IGlzRXF1YWxUb1N0cmluZzpAIldlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5h
YmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0
dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1
aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRp
YUNhcHR1cmVFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkID0gWUVTOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tH
VU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJndW0iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tHZXRVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIHdlYlZpZXcuZ2V0KCkuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKKyAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJl
U3RhdGVBY3RpdmVDYW1lcmEpKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8odHJ1ZSki
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjcmVhdGVD
b25uZWN0aW9uKCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisg
ICAgYXV0byB3ZWJWaWV3UElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKwor
ICAgIC8vIFRoZSBHUFUgcHJvY2VzcyBzaG91bGQgZ2V0IGxhdW5jaGVkLgorICAgIGF1dG8qIHBy
b2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbDsKKyAgICB1bnNpZ25l
ZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c2xlZXAoMC4xKTsKKworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVu
dGlmaWVyXSwgMCk7CisgICAgaWYgKCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVy
XSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtwcm9jZXNzUG9v
bCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gS2lsbCB0aGUgR1BVIFByb2Nlc3Mu
CisgICAga2lsbChncHVQcm9jZXNzUElELCA5KTsKKworICAgIC8vIEdQVSBQcm9jZXNzIHNob3Vs
ZCBnZXQgcmVsYXVuY2hlZC4KKyAgICB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoKCFbcHJvY2Vz
c1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSB8fCBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJ
ZGVudGlmaWVyXSA9PSBncHVQcm9jZXNzUElEKSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX05FKFtwcm9jZXNz
UG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdLCAwKTsKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQ
b29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIGdwdVByb2Nlc3NQSUQpOworICAgIGdwdVByb2Nl
c3NQSUQgPSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIE1h
a2Ugc3VyZSB0aGUgV2ViUHJvY2VzcyBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9FUSh3ZWJW
aWV3UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2hlY2tE
ZWNvZGluZ1ZpZGVvKCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgRVhQRUNUX0VRKGdwdVByb2Nlc3NQSUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lk
ZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWwKaW5kZXggODk1NjgwMzlmZDE1NWM5OTVlNTc0
Yjk4ZWQ0NjU2ZjlkMDY3NDYzZi4uMTYzNzZiY2UyNzc3MGY2Y2ZlMTllMmM3ZmQwNDY2NGMzMzQ4
MzJiOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNl
ck1lZGlhLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNl
ck1lZGlhLmh0bWwKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gY2hlY2tHZXRDYXBhYmlsaXRpZXMoKSB7Ci0gICAgICAgICAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKFJUQ1J0cFNlbmRlci5n
ZXRDYXBhYmlsaXRpZXMoJ3ZpZGVvJykgIT0gbnVsbCA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAg
ICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdl
KFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ3ZpZGVvJykgIT0gbnVsbCA/ICJQQVNTIiA6
ICJGQUlMIGNoZWNrR2V0Q2FwYWJpbGl0aWVzIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGdldFN0YXRzKGNvbm5lY3Rpb24sIHR5cGUsIGtpbmQpCkBAIC0xMzQsNyAr
MTM0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPiAxMDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3Vt
LnBvc3RNZXNzYWdlKCJGQUlMIik7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCBjaGVja1ZpZGVvU3RhdHVzIik7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZ2V0U3RhdHMocGMxLCAib3V0Ym91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3Rh
dHMpID0+IHsKQEAgLTE0NiwxMSArMTQ2LDQzIEBACiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9CiAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRGVjb2RpbmdWaWRlb0NvdW50
ZXJJbmNyZWFzZXMoY291bnRlciwgZnJhbWVzRGVjb2RlZCkgeworICAgICAgICAgICAgICAgIGlm
ICghY291bnRlcikKKyAgICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7CisgICAgICAgICAg
ICAgICAgZ2V0U3RhdHMocGMyLCAiaW5ib3VuZC1ydHAiLCAidmlkZW8iKS50aGVuKChzdGF0cykg
PT4geworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMgJiYgc3RhdHMuZnJhbWVzRGVjb2Rl
ZCA+IGZyYW1lc0RlY29kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGlmIChjb3VudGVyID4gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tEZWNv
ZGluZ1ZpZGVvQ291bnRlckluY3JlYXNlcyAiICsgZnJhbWVzRGVjb2RlZCArICIgIiArIEpTT04u
c3RyaW5naWZ5KHN0YXRzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBj
aGVja0RlY29kaW5nVmlkZW9Db3VudGVySW5jcmVhc2VzKCsrY291bnRlciwgZnJhbWVzRGVjb2Rl
ZCksIDUwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gY2hlY2tEZWNvZGluZ1ZpZGVvKGNvdW50ZXIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWNvdW50ZXIpCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwOworICAgICAg
ICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3Rh
dHMpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRzLmZyYW1lc0Rl
Y29kZWQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0RlY29kaW5nVmlkZW9D
b3VudGVySW5jcmVhc2VzKGNvdW50ZXIsIHN0YXRzLmZyYW1lc0RlY29kZWQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb3VudGVyID4gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tE
ZWNvZGluZ1ZpZGVvICIgKyBKU09OLnN0cmluZ2lmeShzdGF0cykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4gY2hlY2tEZWNvZGluZ1ZpZGVvKCsrY291bnRlciksIDUwKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rp
b24gY2hlY2tBdWRpb1N0YXR1cyhjb3VudGVyKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb3Vu
dGVyKQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChjb3VudGVyID4gMTAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCIpOworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZB
SUwgY2hlY2tBdWRpb1N0YXR1cyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRw
IiwgImF1ZGlvIikudGhlbigoc3RhdHMpID0+IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418765</attachid>
            <date>2021-01-29 13:24:50 -0800</date>
            <delta_ts>2021-02-01 00:47:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221138-20210129222448.patch</filename>
            <type>text/plain</type>
            <size>29398</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY2ZWUwZDE5ZDA2M2FjM2Ni
YmUxN2Q1ZjllMjc3YTA2OTRjZjg0NTguLmE5YmMzMWY3MDU4Yzk0MGRlYTQ3NWViYWE4OWFkN2Ew
MTU2NGUzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgTGliV2ViUlRDQ29kZWNzIGxpc3RlbiB0byBHUFVQ
cm9jZXNzIGNyYXNoIG9uIGNyZWF0aW9uIG9mIExpYldlYlJUQ0NvZGVjLgorICAgICAgICBTZXQg
dGhlIGNvbm5lY3Rpb24gYWxzbyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICBUaGlzIGFsbG93
cyB0byByZW1vdmUgdGhlIGhvcCB0byBtYWluIHRocmVhZCB3aGVuIGNyZWF0aW5nL3JlbGVhc2lu
ZyBlbmNvZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEV2ZXJ5dGhpbmcgbm93IGhhcHBlbnMg
aW4gdGhlIGRlZGljYXRlZCBxdWV1ZSwgaW4gcGFydGljdWxhciB1cGRhdGluZyBvZiBtX2Nvbm5l
Y3Rpb24sIGVuY29kZXIgYW5kIGRlY29kZXIgY29ubmVjdGlvbnMsCisgICAgICAgIGFzIHdlbGwg
YXMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIG1hcHMuCisgICAgICAgIFdoZW4gdXNpbmcgZW5jb2Rl
ci9kZWNvZGVyIGNvbm5lY3Rpb24gb3V0c2lkZSBvZiB0aGUgZGVkaWNhdGVkIHF1ZXVlLCBhIGxv
Y2sgaXMgbmVlZGVkLgorCisgICAgICAgIFVwZGF0ZSBMaWJXZWJSVENDb2RlY3MgdXNlIG9mIGdw
dSBwcm9jZXNzIHdoZW4gY3JlYXRpbmcgYSBwZWVyIGNvbm5lY3Rpb24gc28gdGhhdCB0aGlzIGhh
cHBlbnMgaW4gbWFpbiB0aHJlYWQuCisKKyAgICAgICAgSW4gY2FzZSBvZiBwcm9jZXNzIGNyYXNo
LCB3ZSBkbyBzb21lIHNldHVwIGluIG1haW4gdGhyZWFkIChsaXN0ZW5pbmcgdG8gSVBDIG1lc3Nh
Z2VzIGZvciBpbnN0YW5jZSkuCisgICAgICAgIEJ1dCBtb3N0IG9mIHRoZSB3b3JrIGlzIGRvbmUg
aW4gYSB0YXNrIHJ1biBpbiB0aGUgZGVkaWNhdGVkIHF1ZXVlLgorICAgICAgICBJbiB0aGlzIHRh
c2ssIHdlIHNldCB0aGUgbmV3IElQQyBjb25uZWN0aW9uIG9mIGFsbCBydW5uaW5nIGRlY29kZXJz
IGFuZCBlbmNvZGVycy4KKyAgICAgICAgV2UgYWxzbyBzZW5kIElQQyBtZXNzYWdlIHRvIHJlY3Jl
YXRlIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2Ug
c3RvcmUgc29tZSBzdGF0ZXMgaW4gZW5jb2RlcnMgYW5kIGRlY29kZXJzLgorCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVEND
b2RlY1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVSZW1vdGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MpOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpkZWNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6
cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmluaXRp
YWxpemVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0RW5jb2RlUmF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldENvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZUVuY29kZXJGYWN0b3J5KToKKwogMjAyMS0wMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVjb3ZlciBNZWRpYVN0cmVhbVRyYWNrIGF1ZGlvIHJl
bmRlcmluZyBmcm9tIEdQVVByb2Nlc3MgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDE2OGVmNDM1
ZGRlNTYxNGQzMGYzYmUyODY3MGE0N2FlZDYxNmRlMDUuLmU5ZjcxY2RjZjA4YWU4YTU4YTFhMzdm
M2NkMTQ2N2E3YTg2Y2I1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTE1LDYgKzExNSwzNiBAQCBz
dGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHRvTWVkaWFTYW1wbGVWaWRl
b1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZQogICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZTsKIH0KIAorc3RhdGljIGlubGluZSBTdHJpbmcgZm9ybWF0TmFtZUZyb21XZWJS
VENDb2RlY1R5cGUod2VicnRjOjpWaWRlb0NvZGVjVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Db2RlY0gyNjQ6CisgICAgICAgIHJldHVy
biAiSDI2NCJfczsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY1OgorICAgICAgICBy
ZXR1cm4gIkgyNjUiX3M7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb0NvZGVjVlA5OgorICAgICAg
ICByZXR1cm4gIlZQOSJfczsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuICJIMjY0IjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNy
ZWF0ZVJlbW90ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyJiBkZWNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgc3dpdGNoIChkZWNvZGVyLnR5cGUpIHsK
KyAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NDoKKyAgICAgICAgY29ubmVjdGlv
bi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NERlY29kZXIg
eyBkZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGli
V2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1OgorICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2Fn
ZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY1RGVjb2RlciB7IGRlY29kZXIuaWRl
bnRpZmllciB9LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWJXZWJSVENDb2RlY3M6
OlR5cGU6OlZQOToKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6Q3JlYXRlVlA5RGVjb2RlciB7IGRlY29kZXIuaWRlbnRpZmllciB9LCAwKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgaW50MzJfdCBlbmNvZGVWaWRlb0Zy
YW1lKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKICAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZW5jb2RlRnJhbWUo
KnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBmcmFtZSwg
c2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CkBAIC0xMzYsNiArMTY2LDExIEBAIHN0YXRpYyB2b2lk
IHNldEVuY29kZVJhdGVzQ2FsbGJhY2sod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2Rl
ciwgY29uc3Qgd2ViCiBMaWJXZWJSVENDb2RlY3M6OkxpYldlYlJUQ0NvZGVjcygpCiAgICAgOiBt
X3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJMaWJXZWJSVENDb2RlY3MiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiB7CisgICAgYXV0
byYgZ3B1Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCk7CisgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworCisg
ICAgbV9jb25uZWN0aW9uID0gbWFrZVJlZihncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogTGliV2ViUlRD
Q29kZWNzOjp+TGliV2ViUlRDQ29kZWNzKCkKQEAgLTE2NywxOCArMjAyLDYgQEAgdm9pZCBMaWJX
ZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgd2VicnRj
OjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9FbmNvZGVyLCByZWxlYXNlVmlk
ZW9FbmNvZGVyLCBpbml0aWFsaXplVmlkZW9FbmNvZGVyLCBlbmNvZGVWaWRlb0ZyYW1lLCByZWdp
c3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIHNldEVuY29kZVJhdGVzQ2FsbGJhY2spOwogfQog
Ci12b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlvbi5nZXQoKSA9PSAmY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQotICAgIG1fY29ubmVjdGlvbiA9ICZjb25u
ZWN0aW9uOwotICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7Ci19Ci0K
IExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVy
KFR5cGUgdHlwZSkKIHsKICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KCk7
CkBAIC0xODYsMjkgKzIwOSwxMyBAQCBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJU
Q0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUpCiAgICAgZGVjb2Rlci0+aWRlbnRpZmll
ciA9IFJUQ0RlY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBkZWNv
ZGVyLT50eXBlID0gdHlwZTsKIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWNvZGVy
ID0gV1RGTW92ZShkZWNvZGVyKSwgdHlwZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwotICAgICAgICBzZXRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpXSgp
IG11dGFibGUgeworICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gbV9jb25uZWN0aW9uOwor
ICAgICAgICBjcmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCAqbV9jb25uZWN0aW9uKTsKIAot
ICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gJmNvbm5lY3Rpb247Ci0KLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SDI2NDoKLSAgICAgICAgICAgIGRlY29k
ZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVIMjY0RGVjb2RlciB7IGRlY29kZXItPmlkZW50aWZpZXIgfSwgMCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpIMjY1OgotICAgICAgICAgICAgZGVjb2Rlci0+Y29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjVE
ZWNvZGVyIHsgZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFR5cGU6OlZQOToKLSAgICAgICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVWUDlEZWNvZGVyIHsg
ZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlciA9IFdURk1vdmUoZGVj
b2RlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXJJZGVudGlmaWVyID0g
ZGVjb2Rlci0+aWRlbnRpZmllcjsKLSAgICAgICAgICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250
YWlucyhkZWNvZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9kZWNvZGVycy5hZGQoZGVj
b2RlcklkZW50aWZpZXIsIFdURk1vdmUoZGVjb2RlcikpOwotICAgICAgICB9KTsKKyAgICAgICAg
YXV0byBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXItPmlkZW50aWZpZXI7CisgICAgICAgIEFT
U0VSVCghbV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOworICAgICAgICBt
X2RlY29kZXJzLmFkZChkZWNvZGVySWRlbnRpZmllciwgV1RGTW92ZShkZWNvZGVyKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIxOCwxOSArMjI1LDE3IEBAIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihEZWNvZGVyJiBkZWNvZGVyKQogICAgIExv
Y2tIb2xkZXIgaG9sZGVyKGRlY29kZXIuZGVjb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKICAgICBk
ZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrID0gbnVsbHB0cjsKIAotICAgIGNhbGxPbk1haW5S
dW5Mb29wKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0gewot
ICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllcl0gewotICAg
ICAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsK
LSAgICAgICAgICAgIG1fZGVjb2RlcnMucmVtb3ZlKGRlY29kZXJJZGVudGlmaWVyKTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CisgICAgZGlz
cGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZp
ZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZp
ZXIpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2RlciA9IG1fZGVjb2RlcnMudGFrZShkZWNvZGVy
SWRlbnRpZmllcikpCisgICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6UmVsZWFzZURlY29kZXIgeyBkZWNvZGVySWRlbnRp
ZmllciB9LCAwKTsKICAgICB9KTsKICAgICByZXR1cm4gMDsKIH0KIAogaW50MzJfdCBMaWJXZWJS
VENDb2RlY3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IHRpbWVTdGFt
cCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQpCiB7CisgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7
CiAgICAgaWYgKCFkZWNvZGVyLmNvbm5lY3Rpb24gfHwgZGVjb2Rlci5oYXNFcnJvcikgewogICAg
ICAgICBkZWNvZGVyLmhhc0Vycm9yID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBXRUJSVENfVklE
RU9fQ09ERUNfRVJST1I7CkBAIC0zMjUsMTQgKzMzMCwxNSBAQCBMaWJXZWJSVENDb2RlY3M6OkVu
Y29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0
ZDo6bQogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0ZXJzKQogICAgICAg
ICBwYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZh
bHVlLmZpcnN0LmRhdGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21V
VEY4KGtleVZhbHVlLnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsK
IAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVy
KSwgdHlwZSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUo
dHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxlZCgpIH0sIDApOworICAgIGRpc3Bh
dGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIpLCB0eXBlLCBwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgTG9ja0hv
bGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb247CisgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRl
bnRpZmllciwgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUodHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lF
bmNvZGVyRW5hYmxlZCgpIH0sIDApOworICAgICAgICBlbmNvZGVyLT5wYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKTsKIAotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNv
ZGVyID0gV1RGTW92ZShlbmNvZGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gZW5j
b2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLT5pZGVudGlmaWVyOwotICAgICAgICAgICAgQVNTRVJU
KCFtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7Ci0gICAgICAgICAgICBt
X2VuY29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmllciwgV1RGTW92ZShlbmNvZGVyKSk7Ci0gICAg
ICAgIH0pOworICAgICAgICBhdXRvIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci0+aWRlbnRp
ZmllcjsKKyAgICAgICAgQVNTRVJUKCFtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVudGlm
aWVyKSk7CisgICAgICAgIG1fZW5jb2RlcnMuYWRkKGVuY29kZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KGVuY29kZXIpKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzQyLDM2ICsz
NDgsMjggQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXIm
IGVuY29kZXIpCiAgICAgTG9ja0hvbGRlciBob2xkZXIoZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxs
YmFja0xvY2spOwogICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBudWxscHRyOwog
Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rl
ci5pZGVudGlmaWVyXSB7Ci0gICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJ
ZGVudGlmaWVyXSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhlbmNv
ZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9lbmNvZGVycy5yZW1vdmUoZW5jb2Rlcklk
ZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIg
fSwgMCk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBl
bmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMo
ZW5jb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50
YWtlKGVuY29kZXJJZGVudGlmaWVyKTsKKyAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNvZGVyIHsgZW5jb2Rl
cklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyLCB1aW50
MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdFJhdGUsIHVuc2ln
bmVkIG1heEJpdFJhdGUsIHVuc2lnbmVkIG1pbkJpdFJhdGUsIHVpbnQzMl90IG1heEZyYW1lUmF0
ZSkKIHsKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBl
bmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0
ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSB7Ci0gICAgICAgIGF1dG8mIGNvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsKLSAgICAgICAgc2V0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKLQotICAgICAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFs
aXplRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJh
dGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZSB9LCAwKTsKLQotICAgICAg
ICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciwgY29ubmVjdGlvbiA9
IG1ha2VSZWYoY29ubmVjdGlvbildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoYXV0byog
ZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJZGVudGlmaWVyKSkgewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNldCBlbmNvZGVyLT5jb25uZWN0aW9uIGhlcmUgc28gdGhhdCBJbml0aWFs
aXplRW5jb2RlciBpcyBzZW50IGJlZm9yZSBhbnkgRW5jb2RlRnJhbWUgbWVzc2FnZS4KLSAgICAg
ICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0aW9uKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5j
b2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0
Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSgpIG11dGFibGUg
eworICAgICAgICBhdXRvKiBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZp
ZXIpOworICAgICAgICBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEgPSBFbmNvZGVySW5pdGlh
bGl6YXRpb25EYXRhIHsgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBt
aW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUgfTsKKyAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsg
ZW5jb2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0
ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDApOwogICAgIH0pOwogICAgIHJldHVybiAw
OwogfQogCiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVB
c0tleUZyYW1lKQogeworICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOwor
CiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJSVENfVklE
RU9fQ09ERUNfRVJST1I7CiAKQEAgLTQxMCwxMSArNDA4LDE0IEBAIGludDMyX3QgTGliV2ViUlRD
Q29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVv
RnJhbWUmCiB2b2lkIExpYldlYlJUQ0NvZGVjczo6cmVnaXN0ZXJFbmNvZGVGcmFtZUNhbGxiYWNr
KEVuY29kZXImIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrKQogewogICAgIExv
Y2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKTsKKwogICAg
IGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBlbmNvZGVkSW1hZ2VDYWxsYmFjazsKIH0K
IAogdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldEVuY29kZVJhdGVzKEVuY29kZXImIGVuY29kZXIs
IHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKKyAgICBMb2NrSG9sZGVy
IGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKwogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9u
KSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtlbmNvZGVySWRlbnRpZmllciA9IGVuY29k
ZXIuaWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlXSB7CiAgICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0RW5jb2RlUmF0ZXMgeyBl
bmNvZGVySWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlIH0sIDApOwpAQCAtNDU4LDYgKzQ1
OSwzNiBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCit2b2lkIExpYldlYlJUQ0NvZGVjczo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIobV9j
b25uZWN0aW9uTG9jayk7CisKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisgICAgYXV0byYgZ3B1Q29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cisg
ICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOworICAgIGdwdUNvbm5lY3Rpb24uY29u
bmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGdwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigp
KV0geworICAgICAgICAvLyBMb2NrIGV2ZXJ5dGhpbmcgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIGVu
Y29kZXIvZGVjb2RlciBjb25uZWN0aW9uLgorICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nv
bm5lY3Rpb25Mb2NrKTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigp
OworICAgICAgICAvLyBSZWNyZWF0ZSBlbmNvZGVycyBhbmQgaW5pdGlhbGl6ZSB0aGVtLCByZWNy
ZWF0ZSBkZWNvZGVycy4KKyAgICAgICAgZm9yIChhdXRvJiBlbmNvZGVyIDogbV9lbmNvZGVycy52
YWx1ZXMoKSkgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3Jt
YXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZShlbmNvZGVyLT5jb2RlY1R5cGUpLCBlbmNvZGVyLT5w
YXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJU
Q0gyNjRMb3dMYXRlbmN5RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsKKyAgICAgICAgICAgIGlmIChl
bmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEpCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsg
ZW5jb2Rlci0+aWRlbnRpZmllciwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT53aWR0aCwg
ZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5oZWlnaHQsIGVuY29kZXItPmluaXRpYWxpemF0
aW9uRGF0YS0+c3RhcnRCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1heEJp
dFJhdGUsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWluQml0UmF0ZSwgZW5jb2Rlci0+
aW5pdGlhbGl6YXRpb25EYXRhLT5tYXhGcmFtZVJhdGUgfSwgMCk7CisgICAgICAgICAgICBlbmNv
ZGVyLT5jb25uZWN0aW9uID0gY29ubmVjdGlvbi5wdHIoKTsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKGF1dG8mIGRlY29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBj
cmVhdGVSZW1vdGVEZWNvZGVyKCpkZWNvZGVyLCBjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgIGRlY29kZXItPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigpOworICAgICAgICB9Cisg
ICAgfSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDRiZWFlMDYyMzE3YmEyNmE2
MDY4M2YxZjQ1MTIzM2ViMTA3M2FhN2QuLjFjZTZlMWE4ZjliYWIzMDZmYzNhNjU0ZTk5MDZjNzg1
Y2U4NmQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5o
IgpAQCAtNTgsNyArNTksNyBAQCBzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExpYldlYlJUQ0NvZGVjcyA6IHB1YmxpYyBJUEM6OkNv
bm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlclJlZkNvdW50ZWQgeworY2xhc3MgTGliV2Vi
UlRDQ29kZWNzIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
UmVmQ291bnRlZCwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ0NvZGVjcygpOwpA
QCAtODMsMTEgKzg0LDIxIEBAIHB1YmxpYzoKICAgICBpbnQzMl90IGRlY29kZUZyYW1lKERlY29k
ZXImLCB1aW50MzJfdCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpOwogICAgIHZvaWQgcmVnaXN0ZXJEZWNvZGVGcmFtZUNh
bGxiYWNrKERlY29kZXImLCB2b2lkKiBkZWNvZGVkSW1hZ2VDYWxsYmFjayk7CiAKKyAgICBzdHJ1
Y3QgRW5jb2RlckluaXRpYWxpemF0aW9uRGF0YSB7CisgICAgICAgIHVpbnQxNl90IHdpZHRoOwor
ICAgICAgICB1aW50MTZfdCBoZWlnaHQ7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZTsK
KyAgICAgICAgdW5zaWduZWQgbWF4Qml0UmF0ZTsKKyAgICAgICAgdW5zaWduZWQgbWluQml0UmF0
ZTsKKyAgICAgICAgdWludDMyX3QgbWF4RnJhbWVSYXRlOworICAgIH07CiAgICAgc3RydWN0IEVu
Y29kZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgICAgIHdlYnJ0Yzo6
VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlIHsgd2VicnRjOjprVmlkZW9Db2RlY0dlbmVyaWMgfTsK
KyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnM7Cisg
ICAgICAgIE9wdGlvbmFsPEVuY29kZXJJbml0aWFsaXphdGlvbkRhdGE+IGluaXRpYWxpemF0aW9u
RGF0YTsKICAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2sgeyBudWxscHRyIH07CiAg
ICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwogICAgICAgICBSZWZQdHI8SVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpAQCAtMTEzLDE3ICsxMjQsMTkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBsZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJik7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1ZmZl
clJlZik7CiAKLSAgICB2b2lkIHNldENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7Ci0KICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCisgICAgLy8gR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRD
bG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOworCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UlRD
RGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsK
ICAgICBIYXNoU2V0PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwogCiAg
ICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+
PiBtX2VuY29kZXJzOwogCisgICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBt
X2ltYWdlVHJhbnNmZXJTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMzEw
NGY1NTQxMDc0OWI1ZmZjOGRiYWRhNWRkOWYxMDQ1Y2YyNmQ4OS4uNTEzYjc3ZmM1ZDNhNWU3NzQ2
YjI4MjI5NWIzMjM2YmNiM2I2MzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC01
Miw2ICs1Miw5IEBAIHByaXZhdGU6CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRT
b2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisg
ICAgTGliV2ViUlRDQ29kZWNzOjpzZXRDYWxsYmFja3MoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENQbGF0Zm9ybUNvZGVjc0luR1BVUHJvY2Vzc0VuYWJsZWQo
KSk7CisjZW5kaWYKICAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKQEAgLTE0MSwy
NiArMTQ0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1Byb3ZpZGVyOjpTdXNwZW5kYWJs
ZVNvY2tldEZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyOjoKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSVENTb2NrZXRGYWN0b3J5PihXVEZNb3ZlKHVzZXJBZ2VudCkpOwogfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0KLXN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCi17Ci0jaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgTGliV2ViUlRDQ29k
ZWNzOjpzZXRDYWxsYmFja3MoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJSVENQbGF0Zm9ybUNvZGVjc0luR1BVUHJvY2Vzc0VuYWJsZWQoKSk7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gTGliV2ViUlRDUHJvdmlkZXJDb2NvYTo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKTsK
LX0KLQotc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KCkKLXsKLSNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBMaWJXZWJSVENDb2RlY3M6OnNl
dENhbGxiYWNrcyhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJU
Q1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpKTsKLSNlbmRpZgotICAgIHJldHVy
biBMaWJXZWJSVENQcm92aWRlckNvY29hOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpOwotfQotCi0j
ZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAwZjEyYjEwZTNhOTk3MTI5ZDQxZjRhZTU4YWY4
NTE0OTZkYjkxNmM3Li5iYTJiNWE1MTYyZmEwZjBkZjhlODZhZThiYTkyOTRjZmFmMDU5NDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtNTgsMTEgKzU4LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZ2lzdGVyTUROU05hbWUoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGlwQWRkcmVzcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNRE5TTmFtZU9yRXJyb3Im
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkg
ZmluYWw7CiAgICAgdm9pZCBzdGFydGVkTmV0d29ya1RocmVhZCgpIGZpbmFsOwotCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFj
dG9yeT4gY3JlYXRlRGVjb2RlckZhY3RvcnkoKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBjcmVhdGVFbmNvZGVyRmFjdG9yeSgpIGZpbmFs
OwotI2VuZGlmCiB9OwogI2Vsc2UKIHVzaW5nIExpYldlYlJUQ1Byb3ZpZGVyID0gV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMjJjNGI4YzU0Njk1MTIxZGZjNmI1MmY4ZDQ1NTA1Y2IyNjVjMDJiNi4u
MTEzZTNiNTkzODE0ZjA1ZGZlOTZiZDJiYjlkODgzODQ1YzQ0MmYzMiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWNv
dmVyIFdlYlJUQyBjb2RlY3MgaW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNyYXNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1s
OgorCiAyMDIxLTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbmFibGUgd2VicnRjIHZpZGVvIGNhcHR1cmUgaW4gR1BVUHJvY2VzcyBXZWJLaXRUZXN0
UnVubmVyIChpT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRV
c2VyTWVkaWEubW0KaW5kZXggNDg0MDRiMzY1YmJkN2I2ODkwY2JmMzE0ZjAyNDY0ZTc5NWI2Nzc4
MC4uMzdhZWM2NDgxMjkzNDBkZDYzZTdkNDdhMmNjODNjYWZhNmY0YTc4ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQpAQCAtMzgsNiAr
MzgsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXhw
ZXJpbWVudGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ludGVybmFsRGVidWdGZWF0
dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC00NDksNyArNDUwLDgzIEBAIFRF
U1QoV2ViS2l0MiwgQ3Jhc2hHUFVQcm9jZXNzV2hpbGVDYXB0dXJpbmcpCiAgICAgRVhQRUNUX0VR
KGdwdVByb2Nlc3NQSUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKICAg
ICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7
CiB9Ci0jZW5kaWYKKworVEVTVChXZWJLaXQyLCBDcmFzaEdQVVByb2Nlc3NXaGlsZUNhcHR1cmlu
Z0FuZENhbGxpbmcpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0g
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworCisgICAgZm9yIChfV0tJbnRlcm5hbERlYnVn
RmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
XSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkNhcHR1cmVB
dWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
RW5hYmxlZDpZRVMgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGlm
IChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NF
bmFibGVkIl0pCisgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6Tk8gZm9ySW50
ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNF
cXVhbFRvU3RyaW5nOkAiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCJdKQorICAgICAg
ICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JJbnRlcm5hbERlYnVnRmVhdHVy
ZTpmZWF0dXJlXTsKKyAgICB9CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0
dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAg
aWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJXZWJSVENQbGF0Zm9ybUNvZGVjc0lu
R1BVUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RW5hYmxl
ZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBwcmVmZXJlbmNlcy5fbWVk
aWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CisgICAgY29uZmlndXJhdGlv
bi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fbW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbR2V0VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKKworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07
CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9X
S01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNhcHR1cmVBdWRpb0Fu
ZFZpZGVvKHRydWUpIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY3JlYXRlQ29ubmVjdGlvbigpIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKworICAgIGF1dG8gd2ViVmlld1BJRCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisKKyAgICAvLyBUaGUgR1BVIHByb2Nlc3Mgc2hvdWxkIGdldCBsYXVuY2hlZC4K
KyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7
CisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbcHJvY2Vzc1Bvb2wgX2dw
dVByb2Nlc3NJZGVudGlmaWVyXSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQb29sIF9n
cHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIGlmICghW3Byb2Nlc3NQb29sIF9ncHVQcm9j
ZXNzSWRlbnRpZmllcl0pCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGdwdVByb2Nlc3NQSUQg
PSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIEtpbGwgdGhl
IEdQVSBQcm9jZXNzLgorICAgIGtpbGwoZ3B1UHJvY2Vzc1BJRCwgOSk7CisKKyAgICAvLyBHUFUg
UHJvY2VzcyBzaG91bGQgZ2V0IHJlbGF1bmNoZWQuCisgICAgdGltZW91dCA9IDA7CisgICAgd2hp
bGUgKCghW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0gfHwgW3Byb2Nlc3NQb29s
IF9ncHVQcm9jZXNzSWRlbnRpZmllcl0gPT0gZ3B1UHJvY2Vzc1BJRCkgJiYgdGltZW91dCsrIDwg
MTAwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVD
VF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgRVhQRUNU
X05FKFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdLCBncHVQcm9jZXNzUElEKTsK
KyAgICBncHVQcm9jZXNzUElEID0gW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl07
CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3MgZGlkIG5vdCBjcmFzaC4KKyAgICBF
WFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImNoZWNrRGVjb2RpbmdWaWRlbygpIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBbcHJvY2Vzc1Bvb2wg
X2dwdVByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX0VRKHdlYlZpZXdQSUQsIFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworfQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9nZXRVc2VyTWVkaWEuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCmluZGV4IDg5NTY4MDM5
ZmQxNTVjOTk1ZTU3NGI5OGVkNDY1NmY5ZDA2NzQ2M2YuLjE2Mzc2YmNlMjc3NzBmNmNmZTE5ZTJj
N2ZkMDQ2NjRjMzM0ODMyYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrR2V0Q2FwYWJpbGl0aWVzKCkgewotICAgICAg
ICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZShS
VENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycpICE9IG51bGwgPyAiUEFTUyIgOiAi
RkFJTCIpOworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1
bS5wb3N0TWVzc2FnZShSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycpICE9IG51
bGwgPyAiUEFTUyIgOiAiRkFJTCBjaGVja0dldENhcGFiaWxpdGllcyIpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnZXRTdGF0cyhjb25uZWN0aW9uLCB0eXBlLCBraW5k
KQpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFjb3VudGVyKQogICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChj
b3VudGVyID4gMTAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCIpOworICAgICAgICAgICAgICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tW
aWRlb1N0YXR1cyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMSwgIm91dGJvdW5kLXJ0cCIsICJ2aWRl
byIpLnRoZW4oKHN0YXRzKSA9PiB7CkBAIC0xNDYsMTEgKzE0Niw0MyBAQAogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0RlY29k
aW5nVmlkZW9Db3VudGVySW5jcmVhc2VzKGNvdW50ZXIsIGZyYW1lc0RlY29kZWQpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAw
OworICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwgInZpZGVvIiku
dGhlbigoc3RhdHMpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRz
LmZyYW1lc0RlY29kZWQgPiBmcmFtZXNEZWNvZGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIlBBU1MiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA+IDEwMCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKCJG
QUlMIGNoZWNrRGVjb2RpbmdWaWRlb0NvdW50ZXJJbmNyZWFzZXMgIiArIGZyYW1lc0RlY29kZWQg
KyAiICIgKyBKU09OLnN0cmluZ2lmeShzdGF0cykpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gY2hlY2tEZWNvZGluZ1ZpZGVvQ291bnRlckluY3JlYXNlcygrK2NvdW50ZXIs
IGZyYW1lc0RlY29kZWQpLCA1MCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRGVjb2RpbmdWaWRlbyhjb3VudGVyKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb3VudGVyKQorICAgICAgICAgICAgICAgICAgICBjb3VudGVy
ID0gMDsKKyAgICAgICAgICAgICAgICBnZXRTdGF0cyhwYzIsICJpbmJvdW5kLXJ0cCIsICJ2aWRl
byIpLnRoZW4oKHN0YXRzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0cyAmJiBz
dGF0cy5mcmFtZXNEZWNvZGVkID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tE
ZWNvZGluZ1ZpZGVvQ291bnRlckluY3JlYXNlcyhjb3VudGVyLCBzdGF0cy5mcmFtZXNEZWNvZGVk
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA+IDEwMCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdl
KCJGQUlMIGNoZWNrRGVjb2RpbmdWaWRlbyAiICsgSlNPTi5zdHJpbmdpZnkoc3RhdHMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNoZWNrRGVjb2RpbmdWaWRlbygrK2Nv
dW50ZXIpLCA1MCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrQXVkaW9TdGF0dXMoY291bnRlcikgewogICAgICAgICAgICAg
ICAgIGlmICghY291bnRlcikKICAgICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoY291bnRlciA+IDEwMCkgewotICAgICAgICAgICAgICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwiKTsK
KyAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBv
c3RNZXNzYWdlKCJGQUlMIGNoZWNrQXVkaW9TdGF0dXMiKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBnZXRTdGF0cyhwYzIs
ICJpbmJvdW5kLXJ0cCIsICJhdWRpbyIpLnRoZW4oKHN0YXRzKSA9PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418840</attachid>
            <date>2021-02-01 00:47:34 -0800</date>
            <delta_ts>2021-02-02 02:08:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221138-20210201094733.patch</filename>
            <type>text/plain</type>
            <size>30316</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4ZjQ1YTNkYWZlNWJhMGQx
ZjQ4ZDlkNmY2OWQ5NWRlZTFiOTQwYzYuLmZiNDgxNGI4ZjM1MTY2NDQwMGIzMDVmNDllZjgxMjdk
MjBlOTRkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDItMDEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgTGliV2ViUlRDQ29kZWNzIGxpc3RlbiB0byBHUFVQ
cm9jZXNzIGNyYXNoIG9uIGNyZWF0aW9uIG9mIExpYldlYlJUQ0NvZGVjLgorICAgICAgICBTZXQg
dGhlIGNvbm5lY3Rpb24gYWxzbyBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICBUaGlzIGFsbG93
cyB0byByZW1vdmUgdGhlIGhvcCB0byBtYWluIHRocmVhZCB3aGVuIGNyZWF0aW5nL3JlbGVhc2lu
ZyBlbmNvZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEV2ZXJ5dGhpbmcgbm93IGhhcHBlbnMg
aW4gdGhlIGRlZGljYXRlZCBxdWV1ZSwgaW4gcGFydGljdWxhciB1cGRhdGluZyBvZiBtX2Nvbm5l
Y3Rpb24sIGVuY29kZXIgYW5kIGRlY29kZXIgY29ubmVjdGlvbnMsCisgICAgICAgIGFzIHdlbGwg
YXMgZW5jb2RlcnMgYW5kIGRlY29kZXJzIG1hcHMuCisgICAgICAgIFdoZW4gdXNpbmcgZW5jb2Rl
ci9kZWNvZGVyIGNvbm5lY3Rpb24gb3V0c2lkZSBvZiB0aGUgZGVkaWNhdGVkIHF1ZXVlLCBhIGxv
Y2sgaXMgbmVlZGVkLgorCisgICAgICAgIFVwZGF0ZSBMaWJXZWJSVENDb2RlY3MgdXNlIG9mIGdw
dSBwcm9jZXNzIHdoZW4gY3JlYXRpbmcgYSBwZWVyIGNvbm5lY3Rpb24gc28gdGhhdCB0aGlzIGhh
cHBlbnMgaW4gbWFpbiB0aHJlYWQuCisKKyAgICAgICAgSW4gY2FzZSBvZiBwcm9jZXNzIGNyYXNo
LCB3ZSBkbyBzb21lIHNldHVwIGluIG1haW4gdGhyZWFkIChsaXN0ZW5pbmcgdG8gSVBDIG1lc3Nh
Z2VzIGZvciBpbnN0YW5jZSkuCisgICAgICAgIEJ1dCBtb3N0IG9mIHRoZSB3b3JrIGlzIGRvbmUg
aW4gYSB0YXNrIHJ1biBpbiB0aGUgZGVkaWNhdGVkIHF1ZXVlLgorICAgICAgICBJbiB0aGlzIHRh
c2ssIHdlIHNldCB0aGUgbmV3IElQQyBjb25uZWN0aW9uIG9mIGFsbCBydW5uaW5nIGRlY29kZXJz
IGFuZCBlbmNvZGVycy4KKyAgICAgICAgV2UgYWxzbyBzZW5kIElQQyBtZXNzYWdlIHRvIHJlY3Jl
YXRlIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSwgd2Ug
c3RvcmUgc29tZSBzdGF0ZXMgaW4gZW5jb2RlcnMgYW5kIGRlY29kZXJzLgorCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zm9ybWF0TmFtZUZyb21XZWJSVEND
b2RlY1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVSZW1vdGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MpOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpkZWNvZGVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6
cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmluaXRp
YWxpemVFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0RW5jb2RlUmF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldENvbm5lY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZUVuY29kZXJGYWN0b3J5KToKKwogMjAyMS0wMS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2hlY2sgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBmb3IgbnVs
bCBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMTY4ZWY0MzVkZGU1
NjE0ZDMwZjNiZTI4NjcwYTQ3YWVkNjE2ZGUwNS4uNjI2YjNhNGRkNGM2OWQxZDY2OGVjMzAxM2Mz
YTEwNzlhMTM4YjI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xMTUsNiArMTE1LDM2IEBAIHN0YXRp
YyBpbmxpbmUgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gdG9NZWRpYVNhbXBsZVZpZGVvUm90
YXRpb24od2VicnRjOjpWaWRlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpOb25lOwogfQogCitzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbVdlYlJUQ0Nv
ZGVjVHlwZSh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDoKKyAgICAgICAgcmV0dXJuICJI
MjY0Il9zOworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Db2RlY0gyNjU6CisgICAgICAgIHJldHVy
biAiSDI2NSJfczsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvQ29kZWNWUDk6CisgICAgICAgIHJl
dHVybiAiVlA5Il9zOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gIkgyNjQiOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3JlYXRl
UmVtb3RlRGVjb2RlcihMaWJXZWJSVENDb2RlY3M6OkRlY29kZXImIGRlY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRlY29kZXIudHlwZSkgeworICAg
IGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY0OgorICAgICAgICBjb25uZWN0aW9uLnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVIMjY0RGVjb2RlciB7IGRl
Y29kZXIuaWRlbnRpZmllciB9LCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWJXZWJS
VENDb2RlY3M6OlR5cGU6OkgyNjU6CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjVEZWNvZGVyIHsgZGVjb2Rlci5pZGVudGlm
aWVyIH0sIDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlw
ZTo6VlA5OgorICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
c1Byb3h5OjpDcmVhdGVWUDlEZWNvZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVyIH0sIDApOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIHN0YXRpYyBpbnQzMl90IGVuY29kZVZpZGVvRnJhbWUo
d2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogewogICAgIHJldHVybiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5lbmNvZGVGcmFtZSgqc3Rh
dGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2RlciksIGZyYW1lLCBzaG91
bGRFbmNvZGVBc0tleUZyYW1lKTsKQEAgLTEzNiw2ICsxNjYsMTEgQEAgc3RhdGljIHZvaWQgc2V0
RW5jb2RlUmF0ZXNDYWxsYmFjayh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCBj
b25zdCB3ZWIKIExpYldlYlJUQ0NvZGVjczo6TGliV2ViUlRDQ29kZWNzKCkKICAgICA6IG1fcXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkxpYldlYlJUQ0NvZGVjcyIsIFdvcmtRdWV1ZTo6VHlwZTo6
U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVyYWN0aXZlKSkKIHsKKyAgICBhdXRvJiBn
cHVDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKKyAgICBncHVDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CisKKyAgICBt
X2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGdwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBMaWJXZWJSVENDb2Rl
Y3M6On5MaWJXZWJSVENDb2RlY3MoKQpAQCAtMTU0LDMxICsxODksMTkgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3M6OnNldENhbGxiYWNrcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSNpZiBFTkFCTEUoVlA5KQogICAgIC8vIExldCdzIGNyZWF0ZSBXZWJQcm9j
ZXNzIGxpYldlYlJUQ0NvZGVjcyBzaW5jZSBpdCBtYXkgYmUgY2FsbGVkIGZyb20gdmFyaW91cyB0
aHJlYWRzLgotICAgIGF1dG8mIGNvZGVjcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ0NvZGVjcygpOwotICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpOwogCisjaWYgRU5BQkxFKFZQOSkKKyAgICBhdXRv
JiBncHVDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKICAgICAvLyBGSU1YRTogV2Ugc2hvdWxkIGRpc2FibGUgVlA5VlRCIGlm
IFZQOSBoYXJkd2FyZSBkZWNvZGluZyBpcyBlbmFibGVkIGJ1dCB0aGVyZSBpcyBubyBzdXBwb3J0
IGZvciBpdC4KLSAgICBjb2RlY3Muc2V0VlA5VlRCU3VwcG9ydChncHVDb25uZWN0aW9uLmlzVlA5
RGVjb2RlckVuYWJsZWQoKSB8fCBncHVDb25uZWN0aW9uLmlzVlBTV0RlY29kZXJFbmFibGVkKCkp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnNldFZQOVZU
QlN1cHBvcnQoZ3B1Q29ubmVjdGlvbi5pc1ZQOURlY29kZXJFbmFibGVkKCkgfHwgZ3B1Q29ubmVj
dGlvbi5pc1ZQU1dEZWNvZGVyRW5hYmxlZCgpKTsKICNlbmRpZgogCiAgICAgd2VicnRjOjpzZXRW
aWRlb0RlY29kZXJDYWxsYmFja3MoY3JlYXRlVmlkZW9EZWNvZGVyLCByZWxlYXNlVmlkZW9EZWNv
ZGVyLCBkZWNvZGVWaWRlb0ZyYW1lLCByZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2spOwog
ICAgIHdlYnJ0Yzo6c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKGNyZWF0ZVZpZGVvRW5jb2Rlciwg
cmVsZWFzZVZpZGVvRW5jb2RlciwgaW5pdGlhbGl6ZVZpZGVvRW5jb2RlciwgZW5jb2RlVmlkZW9G
cmFtZSwgcmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxiYWNrLCBzZXRFbmNvZGVSYXRlc0NhbGxi
YWNrKTsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldENvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGlmIChtX2Nvbm5lY3Rpb24uZ2V0KCkgPT0gJmNv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpM
aWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0KLSAgICBtX2Nvbm5lY3Rp
b24gPSAmY29ubmVjdGlvbjsKLSAgICBtX2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRo
aXMpOwotfQotCiBMaWJXZWJSVENDb2RlY3M6OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3Jl
YXRlRGVjb2RlcihUeXBlIHR5cGUpCiB7CiAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxE
ZWNvZGVyPigpOwpAQCAtMTg2LDI5ICsyMDksMTMgQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVy
KiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIoVHlwZSB0eXBlKQogICAgIGRlY29kZXIt
PmlkZW50aWZpZXIgPSBSVENEZWNvZGVySWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7
CiAgICAgZGVjb2Rlci0+dHlwZSA9IHR5cGU7CiAKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgZGVjb2RlciA9IFdURk1vdmUoZGVjb2RlciksIHR5cGVdKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgc2V0Q29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKLQotICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gJmNvbm5lY3Rpb247Ci0K
LSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SDI2NDoKLSAgICAg
ICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
c1Byb3h5OjpDcmVhdGVIMjY0RGVjb2RlciB7IGRlY29kZXItPmlkZW50aWZpZXIgfSwgMCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpIMjY1OgotICAgICAgICAgICAg
ZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OkNyZWF0ZUgyNjVEZWNvZGVyIHsgZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OlZQOToKLSAgICAgICAgICAgIGRlY29kZXIt
PmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVW
UDlEZWNvZGVyIHsgZGVjb2Rlci0+aWRlbnRpZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlciA9IFdURk1v
dmUoZGVjb2RlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24gPSBt
X2Nvbm5lY3Rpb247CisgICAgICAgIGNyZWF0ZVJlbW90ZURlY29kZXIoKmRlY29kZXIsICptX2Nv
bm5lY3Rpb24pOwogCi0gICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRlY29kZXIgPSBX
VEZNb3ZlKGRlY29kZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBkZWNvZGVySWRl
bnRpZmllciA9IGRlY29kZXItPmlkZW50aWZpZXI7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZGVj
b2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKLSAgICAgICAgICAgIG1fZGVjb2Rl
cnMuYWRkKGRlY29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGRlY29kZXIpKTsKLSAgICAgICAgfSk7
CisgICAgICAgIGF1dG8gZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLT5pZGVudGlmaWVyOwor
ICAgICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsK
KyAgICAgICAgbV9kZWNvZGVycy5hZGQoZGVjb2RlcklkZW50aWZpZXIsIFdURk1vdmUoZGVjb2Rl
cikpOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMTgsMTkgKzIyNSwxNyBA
QCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBMb2NrSG9sZGVyIGhvbGRlcihkZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrTG9j
ayk7CiAgICAgZGVjb2Rlci5kZWNvZGVkSW1hZ2VDYWxsYmFjayA9IG51bGxwdHI7CiAKLSAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpcywgZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50
aWZpZXJdIHsKLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlcklkZW50aWZp
ZXJdIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVu
dGlmaWVyKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJzLnJlbW92ZShkZWNvZGVySWRlbnRpZmll
cik7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRGVjb2RlciB7IGRlY29kZXJJZGVudGlmaWVyIH0sIDAp
OworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rl
ci5pZGVudGlmaWVyXSB7CisgICAgICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGRlY29k
ZXJJZGVudGlmaWVyKSk7CisgICAgICAgIGlmIChhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRh
a2UoZGVjb2RlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVj
b2RlcklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludDMy
X3QgTGliV2ViUlRDQ29kZWNzOjpkZWNvZGVGcmFtZShEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJf
dCB0aW1lU3RhbXAsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCB1aW50MTZfdCB3
aWR0aCwgdWludDE2X3QgaGVpZ2h0KQogeworICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVj
dGlvbkxvY2spOwogICAgIGlmICghZGVjb2Rlci5jb25uZWN0aW9uIHx8IGRlY29kZXIuaGFzRXJy
b3IpIHsKICAgICAgICAgZGVjb2Rlci5oYXNFcnJvciA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
V0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwpAQCAtMzI1LDE0ICszMzAsMTUgQEAgTGliV2ViUlRD
Q29kZWNzOjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZUVuY29kZXIoVHlwZSB0eXBl
LCBjb25zdCBzdGQ6Om0KICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogZm9ybWF0UGFyYW1ldGVy
cykKICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoU3RyaW5nOjpmcm9t
VVRGOChrZXlWYWx1ZS5maXJzdC5kYXRhKCksIGtleVZhbHVlLmZpcnN0Lmxlbmd0aCgpKSwgU3Ry
aW5nOjpmcm9tVVRGOChrZXlWYWx1ZS5zZWNvbmQuZGF0YSgpLCBrZXlWYWx1ZS5zZWNvbmQubGVu
Z3RoKCkpKSk7CiAKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgZW5jb2RlciA9IFdURk1v
dmUoZW5jb2RlciksIHR5cGUsIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpXSgpIG11
dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9t
Q29kZWNUeXBlKHR5cGUpLCBwYXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRlbmN5RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsK
KyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwg
dHlwZSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyldKCkgbXV0YWJsZSB7CisgICAg
ICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworICAgICAgICBlbmNvZGVy
LT5jb25uZWN0aW9uID0gbV9jb25uZWN0aW9uOworICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVu
Y29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tQ29kZWNUeXBlKHR5cGUpLCBwYXJhbWV0
ZXJzLCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRM
b3dMYXRlbmN5RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsKKyAgICAgICAgZW5jb2Rlci0+cGFyYW1l
dGVycyA9IFdURk1vdmUocGFyYW1ldGVycyk7CiAKLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChb
dGhpcywgZW5jb2RlciA9IFdURk1vdmUoZW5jb2RlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBhdXRvIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci0+aWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlucyhlbmNvZGVySWRlbnRpZmllcikpOwotICAg
ICAgICAgICAgbV9lbmNvZGVycy5hZGQoZW5jb2RlcklkZW50aWZpZXIsIFdURk1vdmUoZW5jb2Rl
cikpOwotICAgICAgICB9KTsKKyAgICAgICAgYXV0byBlbmNvZGVySWRlbnRpZmllciA9IGVuY29k
ZXItPmlkZW50aWZpZXI7CisgICAgICAgIEFTU0VSVCghbV9lbmNvZGVycy5jb250YWlucyhlbmNv
ZGVySWRlbnRpZmllcikpOworICAgICAgICBtX2VuY29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmll
ciwgV1RGTW92ZShlbmNvZGVyKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAg
LTM0MiwzNiArMzQ4LDI4IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRW5jb2Rl
cihFbmNvZGVyJiBlbmNvZGVyKQogICAgIExvY2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2Rl
ZEltYWdlQ2FsbGJhY2tMb2NrKTsKICAgICBlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrID0g
bnVsbHB0cjsKIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBlbmNvZGVySWRlbnRpZmll
ciA9IGVuY29kZXIuaWRlbnRpZmllcl0gewotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlz
LCBlbmNvZGVySWRlbnRpZmllcl0gewotICAgICAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29u
dGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKLSAgICAgICAgICAgIG1fZW5jb2RlcnMucmVtb3Zl
KGVuY29kZXJJZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2RlciB7IGVuY29kZXJJ
ZGVudGlmaWVyIH0sIDApOworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVu
dGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7CisgICAgICAgIEFTU0VSVChtX2VuY29kZXJz
LmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1f
ZW5jb2RlcnMudGFrZShlbmNvZGVySWRlbnRpZmllcik7CisgICAgICAgIGVuY29kZXItPmNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2Rl
ciB7IGVuY29kZXJJZGVudGlmaWVyIH0sIDApOwogICAgIH0pOwogICAgIHJldHVybiAwOwogfQog
CiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5pdGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5j
b2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRS
YXRlLCB1bnNpZ25lZCBtYXhCaXRSYXRlLCB1bnNpZ25lZCBtaW5CaXRSYXRlLCB1aW50MzJfdCBt
YXhGcmFtZVJhdGUpCiB7Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVuY29kZXJJZGVu
dGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUs
IG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZV0gewotICAgICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgICAgIHNldENvbm5lY3Rpb24oY29ubmVjdGlvbik7
Ci0KLSAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVySWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwg
c3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUgfSwgMCk7
Ci0KLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIsIGNv
bm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSgpIG11dGFibGUgewotICAgICAgICAgICAg
aWYgKGF1dG8qIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChlbmNvZGVySWRlbnRpZmllcikpIHsK
LSAgICAgICAgICAgICAgICAvLyBXZSBzZXQgZW5jb2Rlci0+Y29ubmVjdGlvbiBoZXJlIHNvIHRo
YXQgSW5pdGlhbGl6ZUVuY29kZXIgaXMgc2VudCBiZWZvcmUgYW55IEVuY29kZUZyYW1lIG1lc3Nh
Z2UuCi0gICAgICAgICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVj
dGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOworICAgIGRpc3BhdGNoVG9UaHJlYWQo
W3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyLCB3aWR0aCwgaGVp
Z2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29k
ZXJJZGVudGlmaWVyKTsKKyAgICAgICAgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhID0gRW5j
b2RlckluaXRpYWxpemF0aW9uRGF0YSB7IHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4
Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH07CisgICAgICAgIGVuY29kZXItPmNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXpl
RW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUs
IG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZSB9LCAwKTsKICAgICB9KTsKICAg
ICByZXR1cm4gMDsKIH0KIAogaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKKyAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rp
b25Mb2NrKTsKKwogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4g
V0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCkBAIC00MTAsMTEgKzQwOCwxNCBAQCBpbnQzMl90
IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2Vi
cnRjOjpWaWRlb0ZyYW1lJgogdm9pZCBMaWJXZWJSVENDb2RlY3M6OnJlZ2lzdGVyRW5jb2RlRnJh
bWVDYWxsYmFjayhFbmNvZGVyJiBlbmNvZGVyLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjaykK
IHsKICAgICBMb2NrSG9sZGVyIGhvbGRlcihlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrTG9j
ayk7CisKICAgICBlbmNvZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrID0gZW5jb2RlZEltYWdlQ2Fs
bGJhY2s7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVy
JiBlbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiB7CisgICAg
TG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisKICAgICBpZiAoIWVuY29kZXIu
Y29ubmVjdGlvbikgewogICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbZW5jb2RlcklkZW50aWZp
ZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZV0gewogICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldEVuY29k
ZVJhdGVzIHsgZW5jb2RlcklkZW50aWZpZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSB9LCAwKTsKQEAg
LTQ1OCw2ICs0NTksMzYgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmRpc3BhdGNoVG9UaHJlYWQo
RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQoreworICAgIExvY2tIb2xkZXIg
aG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworCisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKworICAgIGF1dG8mIGdwdUNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbigpOworICAgIGdwdUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKKyAgICBncHVDb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKKworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBjb25uZWN0aW9uID0gbWFrZVJlZihncHVDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSldIHsKKyAgICAgICAgLy8gTG9jayBldmVyeXRoaW5nIHNvIHRoYXQgd2UgY2Fu
IHVwZGF0ZSBlbmNvZGVyL2RlY29kZXIgY29ubmVjdGlvbi4KKyAgICAgICAgTG9ja0hvbGRlciBo
b2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uID0gY29ubmVj
dGlvbi5wdHIoKTsKKyAgICAgICAgLy8gUmVjcmVhdGUgZW5jb2RlcnMgYW5kIGluaXRpYWxpemUg
dGhlbSwgcmVjcmVhdGUgZGVjb2RlcnMuCisgICAgICAgIGZvciAoYXV0byYgZW5jb2RlciA6IG1f
ZW5jb2RlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRp
ZmllciwgZm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUoZW5jb2Rlci0+Y29kZWNUeXBlKSwg
ZW5jb2Rlci0+cGFyYW1ldGVycywgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS53ZWJSVENIMjY0TG93TGF0ZW5jeUVuY29kZXJFbmFibGVkKCkgfSwgMCk7CisgICAgICAg
ICAgICBpZiAoZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhKQorICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXpl
RW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0
YS0+d2lkdGgsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+aGVpZ2h0LCBlbmNvZGVyLT5p
bml0aWFsaXphdGlvbkRhdGEtPnN0YXJ0Qml0UmF0ZSwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25E
YXRhLT5tYXhCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1pbkJpdFJhdGUs
IGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWF4RnJhbWVSYXRlIH0sIDApOworICAgICAg
ICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb24ucHRyKCk7CisgICAgICAgIH0K
KyAgICAgICAgZm9yIChhdXRvJiBkZWNvZGVyIDogbV9kZWNvZGVycy52YWx1ZXMoKSkgeworICAg
ICAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgY29ubmVjdGlvbi5nZXQoKSk7
CisgICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uID0gY29ubmVjdGlvbi5wdHIoKTsKKyAg
ICAgICAgfQorICAgIH0pOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA0YmVhZTA2
MjMxN2JhMjZhNjA2ODNmMWY0NTEyMzNlYjEwNzNhYTdkLi4xY2U2ZTFhOGY5YmFiMzA2ZmMzYTY1
NGU5OTA2Yzc4NWNlODZkODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2Rlcklk
ZW50aWZpZXIuaCIKQEAgLTU4LDcgKzU5LDcgQEAgc3RydWN0IFdlYktpdEVuY29kZWRGcmFtZUlu
Zm87CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJs
aWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKK2Ns
YXNzIExpYldlYlJUQ0NvZGVjcyA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3Nh
Z2VSZWNlaXZlclJlZkNvdW50ZWQsIHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVEND
b2RlY3MoKTsKQEAgLTgzLDExICs4NCwyMSBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCBkZWNvZGVG
cmFtZShEZWNvZGVyJiwgdWludDMyX3QgdGltZVN0YW1wLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
LCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0KTsKICAgICB2b2lkIHJlZ2lzdGVyRGVj
b2RlRnJhbWVDYWxsYmFjayhEZWNvZGVyJiwgdm9pZCogZGVjb2RlZEltYWdlQ2FsbGJhY2spOwog
CisgICAgc3RydWN0IEVuY29kZXJJbml0aWFsaXphdGlvbkRhdGEgeworICAgICAgICB1aW50MTZf
dCB3aWR0aDsKKyAgICAgICAgdWludDE2X3QgaGVpZ2h0OworICAgICAgICB1bnNpZ25lZCBzdGFy
dEJpdFJhdGU7CisgICAgICAgIHVuc2lnbmVkIG1heEJpdFJhdGU7CisgICAgICAgIHVuc2lnbmVk
IG1pbkJpdFJhdGU7CisgICAgICAgIHVpbnQzMl90IG1heEZyYW1lUmF0ZTsKKyAgICB9OwogICAg
IHN0cnVjdCBFbmNvZGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgICAg
ICB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSB7IHdlYnJ0Yzo6a1ZpZGVvQ29kZWNH
ZW5lcmljIH07CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJh
bWV0ZXJzOworICAgICAgICBPcHRpb25hbDxFbmNvZGVySW5pdGlhbGl6YXRpb25EYXRhPiBpbml0
aWFsaXphdGlvbkRhdGE7CiAgICAgICAgIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNrIHsgbnVs
bHB0ciB9OwogICAgICAgICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKICAgICAgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKQEAgLTExMywxNyArMTI0LDE5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1l
SW5mbyYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0VG9CR1JBKENW
UGl4ZWxCdWZmZXJSZWYpOwogCi0gICAgdm9pZCBzZXRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biYpOwotCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKIAorICAg
IC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKTsKKwogcHJpdmF0ZToKICAgICBI
YXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1f
ZGVjb2RlcnM7CiAgICAgSGFzaFNldDxSVENEZWNvZGVySWRlbnRpZmllcj4gbV9kZWNvZGluZ0Vy
cm9yczsKIAogICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPj4gbV9lbmNvZGVyczsKIAorICAgIExvY2sgbV9jb25uZWN0aW9uTG9jazsKICAg
ICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNl
c3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IDMxMDRmNTU0MTA3NDliNWZmYzhkYmFkYTVkZDlmMTA0NWNmMjZkODkuLjUxM2I3N2Zj
NWQzYTVlNzc0NmIyODIyOTViMzIzNmJjYjNiNjM0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcApAQCAtNTIsNiArNTIsOSBAQCBwcml2YXRlOgogCiBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorICAgIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nl
c3NFbmFibGVkKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUo
Y29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwogfQog
CkBAIC0xNDEsMjYgKzE0NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENQcm92aWRlcjo6
U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UlRDU29ja2V0RmFjdG9yeT4oV1RGTW92ZSh1c2VyQWdlbnQpKTsKIH0KIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29k
ZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKQotewot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIExp
YldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVkKCkpOwot
I2VuZGlmCi0gICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZURlY29kZXJG
YWN0b3J5KCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rv
cnk+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCi17Ci0jaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgTGliV2ViUlRD
Q29kZWNzOjpzZXRDYWxsYmFja3MoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS53ZWJSVENQbGF0Zm9ybUNvZGVjc0luR1BVUHJvY2Vzc0VuYWJsZWQoKSk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gTGliV2ViUlRDUHJvdmlkZXJDb2NvYTo6Y3JlYXRlRW5jb2RlckZhY3Rvcnko
KTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNF
KExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggMGYxMmIxMGUzYTk5NzEyOWQ0
MWY0YWU1OGFmODUxNDk2ZGI5MTZjNy4uYmEyYjVhNTE2MmZhMGYwZGY4ZTg2YWU4YmE5Mjk0Y2Zh
ZjA1OTQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTU4LDExICs1OCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3Rlck1ETlNOYW1lKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTUROU05h
bWVPckVycm9yJiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVOb25Mb2NhbGhvc3RDb25u
ZWN0aW9ucygpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRlZE5ldHdvcmtUaHJlYWQoKSBmaW5hbDsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RGVjb2RlckZhY3Rvcnk+IGNyZWF0ZURlY29kZXJGYWN0b3J5KCkgZmluYWw7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gY3JlYXRlRW5jb2RlckZhY3Rv
cnkoKSBmaW5hbDsKLSNlbmRpZgogfTsKICNlbHNlCiB1c2luZyBMaWJXZWJSVENQcm92aWRlciA9
IFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM2ODQzZGZlZGE4NzAwMDRlOWQzOTJkZTE1NThiZjA5
NmRmM2YwNDUuLjA0NDllMWEzMzA1ZjZlMDliYmVkNDM4MTJkMjQyMjczY2Q1YjIwZDMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVjb3ZlciBXZWJSVEMgY29kZWNzIGluIGNhc2Ugb2YgR1BVUHJvY2VzcyBjcmFzaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9nZXRVc2Vy
TWVkaWEuaHRtbDoKKwogMjAyMS0wMS0yOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV0gVGhyZWFkLmlzQWxpdmUgd2FzIHJlbmFtZWQg
dG8gVGhyZWFkLmlzX2FsaXZlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9HZXRVc2VyTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWEubW0KaW5kZXggNDg0MDRiMzY1YmJkN2I2ODkwY2JmMzE0ZjAyNDY0ZTc5
NWI2Nzc4MC4uMzdhZWM2NDgxMjkzNDBkZDYzZTdkNDdhMmNjODNjYWZhNmY0YTc4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQpAQCAt
MzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ludGVybmFsRGVi
dWdGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC00NDksNyArNDUwLDgz
IEBAIFRFU1QoV2ViS2l0MiwgQ3Jhc2hHUFVQcm9jZXNzV2hpbGVDYXB0dXJpbmcpCiAgICAgRVhQ
RUNUX0VRKGdwdVByb2Nlc3NQSUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJd
KTsKICAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXSk7CiB9Ci0jZW5kaWYKKworVEVTVChXZWJLaXQyLCBDcmFzaEdQVVByb2Nlc3NXaGlsZUNh
cHR1cmluZ0FuZENhbGxpbmcpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworCisgICAgZm9yIChfV0tJbnRlcm5h
bERlYnVnRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfaW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkNh
cHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNl
cyBfc2V0RW5hYmxlZDpZRVMgZm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CisgICAg
ICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQ2FwdHVyZUF1ZGlvSW5VSVBy
b2Nlc3NFbmFibGVkIl0pCisgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6Tk8g
Zm9ySW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGlmIChbZmVhdHVyZS5r
ZXkgaXNFcXVhbFRvU3RyaW5nOkAiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCJdKQor
ICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JJbnRlcm5hbERlYnVn
RmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJl
ICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAg
ICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJXZWJSVENQbGF0Zm9ybUNv
ZGVjc0luR1BVUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBwcmVmZXJlbmNl
cy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CisgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNl
cy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gbWVzc2FnZUhh
bmRsZXIgPSBhZG9wdE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbR2V0VXNlck1lZGlhQ2FwdHVyZVVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LmdldCgpLlVJRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKKworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1l
ZGlhIl07CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0
KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisKKyAgICBkb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNhcHR1cmVB
dWRpb0FuZFZpZGVvKHRydWUpIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiY3JlYXRlQ29ubmVjdGlvbigpIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gd2ViVmlld1BJRCA9IFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBUaGUgR1BVIHByb2Nlc3Mgc2hvdWxkIGdldCBsYXVu
Y2hlZC4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1Bvb2w7CisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbcHJvY2Vzc1Bv
b2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQ
b29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIGlmICghW3Byb2Nlc3NQb29sIF9n
cHVQcm9jZXNzSWRlbnRpZmllcl0pCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGdwdVByb2Nl
c3NQSUQgPSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIEtp
bGwgdGhlIEdQVSBQcm9jZXNzLgorICAgIGtpbGwoZ3B1UHJvY2Vzc1BJRCwgOSk7CisKKyAgICAv
LyBHUFUgUHJvY2VzcyBzaG91bGQgZ2V0IHJlbGF1bmNoZWQuCisgICAgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCghW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0gfHwgW3Byb2Nl
c3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0gPT0gZ3B1UHJvY2Vzc1BJRCkgJiYgdGltZW91
dCsrIDwgMTAwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAg
IEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAg
RVhQRUNUX05FKFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdLCBncHVQcm9jZXNz
UElEKTsKKyAgICBncHVQcm9jZXNzUElEID0gW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRp
Zmllcl07CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3MgZGlkIG5vdCBjcmFzaC4K
KyAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVy
XSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImNoZWNrRGVjb2RpbmdWaWRlbygpIl07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBbcHJvY2Vz
c1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX0VRKHdlYlZpZXdQSUQs
IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworfQorI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9nZXRVc2VyTWVkaWEuaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCmluZGV4IDg5
NTY4MDM5ZmQxNTVjOTk1ZTU3NGI5OGVkNDY1NmY5ZDA2NzQ2M2YuLjE2Mzc2YmNlMjc3NzBmNmNm
ZTE5ZTJjN2ZkMDQ2NjRjMzM0ODMyYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L2dldFVzZXJNZWRpYS5odG1sCkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrR2V0Q2FwYWJpbGl0aWVzKCkgewot
ICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVz
c2FnZShSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycpICE9IG51bGwgPyAiUEFT
UyIgOiAiRkFJTCIpOworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLmd1bS5wb3N0TWVzc2FnZShSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKCd2aWRlbycp
ICE9IG51bGwgPyAiUEFTUyIgOiAiRkFJTCBjaGVja0dldENhcGFiaWxpdGllcyIpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnZXRTdGF0cyhjb25uZWN0aW9uLCB0eXBl
LCBraW5kKQpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFjb3VudGVy
KQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICBlbHNl
IGlmIChjb3VudGVyID4gMTAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLmd1bS5wb3N0TWVzc2FnZSgiRkFJTCIpOworICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwg
Y2hlY2tWaWRlb1N0YXR1cyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMSwgIm91dGJvdW5kLXJ0cCIs
ICJ2aWRlbyIpLnRoZW4oKHN0YXRzKSA9PiB7CkBAIC0xNDYsMTEgKzE0Niw0MyBAQAogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a0RlY29kaW5nVmlkZW9Db3VudGVySW5jcmVhc2VzKGNvdW50ZXIsIGZyYW1lc0RlY29kZWQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXIgPSAwOworICAgICAgICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwgInZp
ZGVvIikudGhlbigoc3RhdHMpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRzICYm
IHN0YXRzLmZyYW1lc0RlY29kZWQgPiBmcmFtZXNEZWNvZGVkKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIlBB
U1MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA+IDEwMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNz
YWdlKCJGQUlMIGNoZWNrRGVjb2RpbmdWaWRlb0NvdW50ZXJJbmNyZWFzZXMgIiArIGZyYW1lc0Rl
Y29kZWQgKyAiICIgKyBKU09OLnN0cmluZ2lmeShzdGF0cykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gY2hlY2tEZWNvZGluZ1ZpZGVvQ291bnRlckluY3JlYXNlcygrK2Nv
dW50ZXIsIGZyYW1lc0RlY29kZWQpLCA1MCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRGVjb2RpbmdWaWRlbyhjb3VudGVy
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb3VudGVyKQorICAgICAgICAgICAgICAgICAgICBj
b3VudGVyID0gMDsKKyAgICAgICAgICAgICAgICBnZXRTdGF0cyhwYzIsICJpbmJvdW5kLXJ0cCIs
ICJ2aWRlbyIpLnRoZW4oKHN0YXRzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0
cyAmJiBzdGF0cy5mcmFtZXNEZWNvZGVkID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tEZWNvZGluZ1ZpZGVvQ291bnRlckluY3JlYXNlcyhjb3VudGVyLCBzdGF0cy5mcmFtZXNE
ZWNvZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA+IDEwMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RN
ZXNzYWdlKCJGQUlMIGNoZWNrRGVjb2RpbmdWaWRlbyAiICsgSlNPTi5zdHJpbmdpZnkoc3RhdHMp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNoZWNrRGVjb2RpbmdWaWRl
bygrK2NvdW50ZXIpLCA1MCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrQXVkaW9TdGF0dXMoY291bnRlcikgewogICAgICAg
ICAgICAgICAgIGlmICghY291bnRlcikKICAgICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY291bnRlciA+IDEwMCkgewotICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZB
SUwiKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
Z3VtLnBvc3RNZXNzYWdlKCJGQUlMIGNoZWNrQXVkaW9TdGF0dXMiKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBnZXRTdGF0
cyhwYzIsICJpbmJvdW5kLXJ0cCIsICJhdWRpbyIpLnRoZW4oKHN0YXRzKSA9PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418975</attachid>
            <date>2021-02-02 02:08:29 -0800</date>
            <delta_ts>2021-02-02 03:00:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221138-20210202110828.patch</filename>
            <type>text/plain</type>
            <size>30333</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YTI2NDUzZDYyYTBjOTUz
YjY1YjU3YmZhMWU2NDJhODU0Y2Q3ZTUuLjI2NDI0YWY2NmI4Yjc3ZTExY2MwZjBkYjU5MDEzMWYy
NDcxZTRkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDItMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVj
cyBpbiBjYXNlIG9mIEdQVVByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICBNYWtlIExpYldlYlJUQ0NvZGVjcyBsaXN0ZW4gdG8gR1BVUHJv
Y2VzcyBjcmFzaCBvbiBjcmVhdGlvbiBvZiBMaWJXZWJSVENDb2RlYy4KKyAgICAgICAgU2V0IHRo
ZSBjb25uZWN0aW9uIGFsc28gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgVGhpcyBhbGxvd3Mg
dG8gcmVtb3ZlIHRoZSBob3AgdG8gbWFpbiB0aHJlYWQgd2hlbiBjcmVhdGluZy9yZWxlYXNpbmcg
ZW5jb2RlcnMgYW5kIGRlY29kZXJzLgorICAgICAgICBFdmVyeXRoaW5nIG5vdyBoYXBwZW5zIGlu
IHRoZSBkZWRpY2F0ZWQgcXVldWUsIGluIHBhcnRpY3VsYXIgdXBkYXRpbmcgb2YgbV9jb25uZWN0
aW9uLCBlbmNvZGVyIGFuZCBkZWNvZGVyIGNvbm5lY3Rpb25zLAorICAgICAgICBhcyB3ZWxsIGFz
IGVuY29kZXJzIGFuZCBkZWNvZGVycyBtYXBzLgorICAgICAgICBXaGVuIHVzaW5nIGVuY29kZXIv
ZGVjb2RlciBjb25uZWN0aW9uIG91dHNpZGUgb2YgdGhlIGRlZGljYXRlZCBxdWV1ZSwgYSBsb2Nr
IGlzIG5lZWRlZC4KKworICAgICAgICBVcGRhdGUgTGliV2ViUlRDQ29kZWNzIHVzZSBvZiBncHUg
cHJvY2VzcyB3aGVuIGNyZWF0aW5nIGEgcGVlciBjb25uZWN0aW9uIHNvIHRoYXQgdGhpcyBoYXBw
ZW5zIGluIG1haW4gdGhyZWFkLgorCisgICAgICAgIEluIGNhc2Ugb2YgcHJvY2VzcyBjcmFzaCwg
d2UgZG8gc29tZSBzZXR1cCBpbiBtYWluIHRocmVhZCAobGlzdGVuaW5nIHRvIElQQyBtZXNzYWdl
cyBmb3IgaW5zdGFuY2UpLgorICAgICAgICBCdXQgbW9zdCBvZiB0aGUgd29yayBpcyBkb25lIGlu
IGEgdGFzayBydW4gaW4gdGhlIGRlZGljYXRlZCBxdWV1ZS4KKyAgICAgICAgSW4gdGhpcyB0YXNr
LCB3ZSBzZXQgdGhlIG5ldyBJUEMgY29ubmVjdGlvbiBvZiBhbGwgcnVubmluZyBkZWNvZGVycyBh
bmQgZW5jb2RlcnMuCisgICAgICAgIFdlIGFsc28gc2VuZCBJUEMgbWVzc2FnZSB0byByZWNyZWF0
ZSBlbmNvZGVycyBhbmQgZGVjb2RlcnMuCisgICAgICAgIEZvciB0aGF0IHB1cnBvc2UsIHdlIHN0
b3JlIHNvbWUgc3RhdGVzIGluIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KKworICAgICAgICBDb3Zl
cmVkIGJ5IEFQSSB0ZXN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZvcm1hdE5hbWVGcm9tV2ViUlRDQ29k
ZWNUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUmVtb3RlRGVjb2Rlcik6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6TGliV2ViUlRDQ29kZWNzKToKKyAgICAgICAgKFdl
YktpdDo6TGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6
TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjczo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2Rl
Y3M6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnJl
bGVhc2VFbmNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjppbml0aWFs
aXplRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OnNldEVuY29kZVJhdGVzKToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpzZXRDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVE
ZWNvZGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisKIDIwMjEtMDItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkgdXBkYXRlIElQQyBjb25uZWN0aW9uIG9mIFJlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIGZvciBhdWRpbyBzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRl
eCAxNjhlZjQzNWRkZTU2MTRkMzBmM2JlMjg2NzBhNDdhZWQ2MTZkZTA1Li4yZGVkNGIwNjFlOTVi
OTZhYzEyNWU1NzhlZDk0Mjg1MzhhMTM4YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTExNSw2ICsx
MTUsMzYgQEAgc3RhdGljIGlubGluZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiB0b01lZGlh
U2FtcGxlVmlkZW9Sb3RhdGlvbih3ZWJydGM6OlZpZGUKICAgICByZXR1cm4gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246Ok5vbmU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5h
bWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0OgorICAg
ICAgICByZXR1cm4gIkgyNjQiX3M7CisgICAgY2FzZSB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NToK
KyAgICAgICAgcmV0dXJuICJIMjY1Il9zOworICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Db2RlY1ZQ
OToKKyAgICAgICAgcmV0dXJuICJWUDkiX3M7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiSDI2NCI7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCBjcmVhdGVSZW1vdGVEZWNvZGVyKExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciYgZGVj
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGVjb2Rl
ci50eXBlKSB7CisgICAgY2FzZSBMaWJXZWJSVENDb2RlY3M6OlR5cGU6OkgyNjQ6CisgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgy
NjREZWNvZGVyIHsgZGVjb2Rlci5pZGVudGlmaWVyIH0sIDApOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NToKKyAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NURlY29kZXIgeyBk
ZWNvZGVyLmlkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGliV2Vi
UlRDQ29kZWNzOjpUeXBlOjpWUDk6CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZVZQOURlY29kZXIgeyBkZWNvZGVyLmlkZW50aWZp
ZXIgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogc3RhdGljIGludDMyX3QgZW5j
b2RlVmlkZW9GcmFtZSh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCBjb25zdCB3
ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7
CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVu
Y29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVy
KSwgZnJhbWUsIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOwpAQCAtMTM2LDYgKzE2NiwxMSBAQCBz
dGF0aWMgdm9pZCBzZXRFbmNvZGVSYXRlc0NhbGxiYWNrKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNv
ZGVyIGVuY29kZXIsIGNvbnN0IHdlYgogTGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3Mo
KQogICAgIDogbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiTGliV2ViUlRDQ29kZWNzIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQog
eworICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGdwdUNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0
aGlzKTsKKworICAgIG1fY29ubmVjdGlvbiA9IG1ha2VSZWYoZ3B1Q29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpOworICAgIG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiB9CiAK
IExpYldlYlJUQ0NvZGVjczo6fkxpYldlYlJUQ0NvZGVjcygpCkBAIC0xNTQsMzEgKzE4OSwxOSBA
QCB2b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKGJvb2wgdXNlR1BVUHJvY2VzcykK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShWUDkpCiAgICAgLy8gTGV0J3Mg
Y3JlYXRlIFdlYlByb2Nlc3MgbGliV2ViUlRDQ29kZWNzIHNpbmNlIGl0IG1heSBiZSBjYWxsZWQg
ZnJvbSB2YXJpb3VzIHRocmVhZHMuCi0gICAgYXV0byYgY29kZWNzID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCk7Ci0gICAgYXV0byYgZ3B1Q29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCk7CiAKKyNpZiBFTkFCTEUo
VlA5KQorICAgIGF1dG8mIGdwdUNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIC8vIEZJTVhFOiBXZSBzaG91bGQgZGlz
YWJsZSBWUDlWVEIgaWYgVlA5IGhhcmR3YXJlIGRlY29kaW5nIGlzIGVuYWJsZWQgYnV0IHRoZXJl
IGlzIG5vIHN1cHBvcnQgZm9yIGl0LgotICAgIGNvZGVjcy5zZXRWUDlWVEJTdXBwb3J0KGdwdUNv
bm5lY3Rpb24uaXNWUDlEZWNvZGVyRW5hYmxlZCgpIHx8IGdwdUNvbm5lY3Rpb24uaXNWUFNXRGVj
b2RlckVuYWJsZWQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29k
ZWNzKCkuc2V0VlA5VlRCU3VwcG9ydChncHVDb25uZWN0aW9uLmlzVlA5RGVjb2RlckVuYWJsZWQo
KSB8fCBncHVDb25uZWN0aW9uLmlzVlBTV0RlY29kZXJFbmFibGVkKCkpOwogI2VuZGlmCiAKICAg
ICB3ZWJydGM6OnNldFZpZGVvRGVjb2RlckNhbGxiYWNrcyhjcmVhdGVWaWRlb0RlY29kZXIsIHJl
bGVhc2VWaWRlb0RlY29kZXIsIGRlY29kZVZpZGVvRnJhbWUsIHJlZ2lzdGVyRGVjb2RlQ29tcGxl
dGVDYWxsYmFjayk7CiAgICAgd2VicnRjOjpzZXRWaWRlb0VuY29kZXJDYWxsYmFja3MoY3JlYXRl
VmlkZW9FbmNvZGVyLCByZWxlYXNlVmlkZW9FbmNvZGVyLCBpbml0aWFsaXplVmlkZW9FbmNvZGVy
LCBlbmNvZGVWaWRlb0ZyYW1lLCByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2ssIHNldEVu
Y29kZVJhdGVzQ2FsbGJhY2spOwogfQogCi12b2lkIExpYldlYlJUQ0NvZGVjczo6c2V0Q29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgaWYgKG1fY29ubmVjdGlv
bi5nZXQoKSA9PSAmY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29u
bmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLQot
ICAgIG1fY29ubmVjdGlvbiA9ICZjb25uZWN0aW9uOwotICAgIG1fY29ubmVjdGlvbi0+YWRkVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgdGhpcyk7Ci19Ci0KIExpYldlYlJUQ0NvZGVjczo6RGVjb2RlciogTGliV2Vi
UlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKFR5cGUgdHlwZSkKIHsKICAgICBhdXRvIGRlY29kZXIg
PSBtYWtlVW5pcXVlPERlY29kZXI+KCk7CkBAIC0xODYsMjkgKzIwOSwxMyBAQCBMaWJXZWJSVEND
b2RlY3M6OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUp
CiAgICAgZGVjb2Rlci0+aWRlbnRpZmllciA9IFJUQ0RlY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0
ZVRocmVhZFNhZmUoKTsKICAgICBkZWNvZGVyLT50eXBlID0gdHlwZTsKIAotICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFt0aGlzLCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKSwgdHlwZV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgICAgICBzZXRD
b25uZWN0aW9uKGNvbm5lY3Rpb24pOwotCi0gICAgICAgIGRlY29kZXItPmNvbm5lY3Rpb24gPSAm
Y29ubmVjdGlvbjsKLQotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBl
OjpIMjY0OgotICAgICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUgyNjREZWNvZGVyIHsgZGVjb2Rlci0+aWRlbnRp
ZmllciB9LCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkgyNjU6
Ci0gICAgICAgICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJS
VENDb2RlY3NQcm94eTo6Q3JlYXRlSDI2NURlY29kZXIgeyBkZWNvZGVyLT5pZGVudGlmaWVyIH0s
IDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6VlA5OgotICAgICAg
ICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OkNyZWF0ZVZQOURlY29kZXIgeyBkZWNvZGVyLT5pZGVudGlmaWVyIH0sIDApOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBk
ZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZGVjb2Rlci0+
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKKyAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2Rlcigq
ZGVjb2RlciwgKm1fY29ubmVjdGlvbik7CiAKLSAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhp
cywgZGVjb2RlciA9IFdURk1vdmUoZGVjb2RlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBh
dXRvIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci0+aWRlbnRpZmllcjsKLSAgICAgICAgICAg
IEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOwotICAgICAg
ICAgICAgbV9kZWNvZGVycy5hZGQoZGVjb2RlcklkZW50aWZpZXIsIFdURk1vdmUoZGVjb2Rlcikp
OwotICAgICAgICB9KTsKKyAgICAgICAgYXV0byBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIt
PmlkZW50aWZpZXI7CisgICAgICAgIEFTU0VSVCghbV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVy
SWRlbnRpZmllcikpOworICAgICAgICBtX2RlY29kZXJzLmFkZChkZWNvZGVySWRlbnRpZmllciwg
V1RGTW92ZShkZWNvZGVyKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIx
OCwxOSArMjI1LDE3IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIExvY2tIb2xkZXIgaG9sZGVyKGRlY29kZXIuZGVjb2RlZElt
YWdlQ2FsbGJhY2tMb2NrKTsKICAgICBkZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrID0gbnVs
bHB0cjsKIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBkZWNvZGVySWRlbnRpZmllciA9
IGRlY29kZXIuaWRlbnRpZmllcl0gewotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBk
ZWNvZGVySWRlbnRpZmllcl0gewotICAgICAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMuY29udGFp
bnMoZGVjb2RlcklkZW50aWZpZXIpKTsKLSAgICAgICAgICAgIG1fZGVjb2RlcnMucmVtb3ZlKGRl
Y29kZXJJZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2Rlcklk
ZW50aWZpZXIgfSwgMCk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2RlcklkZW50
aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAgQVNTRVJUKG1fZGVjb2RlcnMu
Y29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2RlciA9
IG1fZGVjb2RlcnMudGFrZShkZWNvZGVySWRlbnRpZmllcikpCisgICAgICAgICAgICBkZWNvZGVy
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6UmVsZWFz
ZURlY29kZXIgeyBkZWNvZGVySWRlbnRpZmllciB9LCAwKTsKICAgICB9KTsKICAgICByZXR1cm4g
MDsKIH0KIAogaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRl
Y29kZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpCiB7CisgICAgTG9ja0hvbGRlciBo
b2xkZXIobV9jb25uZWN0aW9uTG9jayk7CiAgICAgaWYgKCFkZWNvZGVyLmNvbm5lY3Rpb24gfHwg
ZGVjb2Rlci5oYXNFcnJvcikgewogICAgICAgICBkZWNvZGVyLmhhc0Vycm9yID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CkBAIC0zMjUsMTQgKzMzMCwx
NSBAQCBMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRW5j
b2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6bQogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBm
b3JtYXRQYXJhbWV0ZXJzKQogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0LmRhdGEoKSwga2V5VmFsdWUuZmlyc3Qu
bGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLnNlY29uZC5kYXRhKCksIGtleVZh
bHVlLnNlY29uZC5sZW5ndGgoKSkpKTsKIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBl
bmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKSwgdHlwZSwgcGFyYW1ldGVycyA9IFdURk1vdmUocGFy
YW1ldGVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwg
Zm9ybWF0TmFtZUZyb21Db2RlY1R5cGUodHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5h
YmxlZCgpIH0sIDApOworICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXIgPSBXVEZN
b3ZlKGVuY29kZXIpLCB0eXBlLCBwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7Cisg
ICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb247CisgICAgICAgIGVuY29k
ZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpDcmVh
dGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwgZm9ybWF0TmFtZUZyb21Db2RlY1R5cGUo
dHlwZSksIHBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxlZCgpIH0sIDApOworICAgICAgICBl
bmNvZGVyLT5wYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKTsKIAotICAgICAgICBkaXNw
YXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVyID0gV1RGTW92ZShlbmNvZGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGF1dG8gZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLT5pZGVudGlm
aWVyOwotICAgICAgICAgICAgQVNTRVJUKCFtX2VuY29kZXJzLmNvbnRhaW5zKGVuY29kZXJJZGVu
dGlmaWVyKSk7Ci0gICAgICAgICAgICBtX2VuY29kZXJzLmFkZChlbmNvZGVySWRlbnRpZmllciwg
V1RGTW92ZShlbmNvZGVyKSk7Ci0gICAgICAgIH0pOworICAgICAgICBhdXRvIGVuY29kZXJJZGVu
dGlmaWVyID0gZW5jb2Rlci0+aWRlbnRpZmllcjsKKyAgICAgICAgQVNTRVJUKCFtX2VuY29kZXJz
LmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CisgICAgICAgIG1fZW5jb2RlcnMuYWRkKGVu
Y29kZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGVuY29kZXIpKTsKICAgICB9KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMzQyLDM2ICszNDgsMjggQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6
OnJlbGVhc2VFbmNvZGVyKEVuY29kZXImIGVuY29kZXIpCiAgICAgTG9ja0hvbGRlciBob2xkZXIo
ZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spOwogICAgIGVuY29kZXIuZW5jb2RlZElt
YWdlQ2FsbGJhY2sgPSBudWxscHRyOwogCi0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIGVu
Y29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7Ci0gICAgICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyXSB7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9lbmNvZGVycy5jb250YWlucyhlbmNvZGVySWRlbnRpZmllcikpOwotICAgICAgICAgICAgbV9l
bmNvZGVycy5yZW1vdmUoZW5jb2RlcklkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNv
ZGVyIHsgZW5jb2RlcklkZW50aWZpZXIgfSwgMCk7CisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhp
cywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICAgICAgQVNT
RVJUKG1fZW5jb2RlcnMuY29udGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKKyAgICAgICAgYXV0
byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtlKGVuY29kZXJJZGVudGlmaWVyKTsKKyAgICAgICAg
ZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OlJlbGVhc2VFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIgfSwgMCk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2Rl
cihFbmNvZGVyJiBlbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBzdGFydEJpdFJhdGUsIHVuc2lnbmVkIG1heEJpdFJhdGUsIHVuc2lnbmVkIG1pbkJpdFJh
dGUsIHVpbnQzMl90IG1heEZyYW1lUmF0ZSkKIHsKLSAgICBjYWxsT25NYWluUnVuTG9vcChbdGhp
cywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQs
IHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSB7Ci0g
ICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgc2V0Q29ubmVjdGlv
bihjb25uZWN0aW9uKTsKLQotICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXplRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3
aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZy
YW1lUmF0ZSB9LCAwKTsKLQotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVy
SWRlbnRpZmllciwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJ
ZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNldCBlbmNvZGVyLT5jb25uZWN0
aW9uIGhlcmUgc28gdGhhdCBJbml0aWFsaXplRW5jb2RlciBpcyBzZW50IGJlZm9yZSBhbnkgRW5j
b2RlRnJhbWUgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0g
V1RGTW92ZShjb25uZWN0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgZGlz
cGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZp
ZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwg
bWF4RnJhbWVSYXRlXSgpIG11dGFibGUgeworICAgICAgICBhdXRvKiBlbmNvZGVyID0gbV9lbmNv
ZGVycy5nZXQoZW5jb2RlcklkZW50aWZpZXIpOworICAgICAgICBlbmNvZGVyLT5pbml0aWFsaXph
dGlvbkRhdGEgPSBFbmNvZGVySW5pdGlhbGl6YXRpb25EYXRhIHsgd2lkdGgsIGhlaWdodCwgc3Rh
cnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGUgfTsKKyAgICAg
ICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OkluaXRpYWxpemVFbmNvZGVyIHsgZW5jb2RlcklkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQs
IHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDAp
OwogICAgIH0pOwogICAgIHJldHVybiAwOwogfQogCiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6
ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBm
cmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogeworICAgIExvY2tIb2xkZXIgaG9s
ZGVyKG1fY29ubmVjdGlvbkxvY2spOworCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAKQEAgLTQxMCwxMSArNDA4
LDE0IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiB2b2lkIExpYldlYlJUQ0NvZGVjczo6cmVn
aXN0ZXJFbmNvZGVGcmFtZUNhbGxiYWNrKEVuY29kZXImIGVuY29kZXIsIHZvaWQqIGVuY29kZWRJ
bWFnZUNhbGxiYWNrKQogewogICAgIExvY2tIb2xkZXIgaG9sZGVyKGVuY29kZXIuZW5jb2RlZElt
YWdlQ2FsbGJhY2tMb2NrKTsKKwogICAgIGVuY29kZXIuZW5jb2RlZEltYWdlQ2FsbGJhY2sgPSBl
bmNvZGVkSW1hZ2VDYWxsYmFjazsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3M6OnNldEVuY29k
ZVJhdGVzKEVuY29kZXImIGVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1l
UmF0ZSkKIHsKKyAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKwogICAg
IGlmICghZW5jb2Rlci5jb25uZWN0aW9uKSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtl
bmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRl
XSB7CiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6U2V0RW5jb2RlUmF0ZXMgeyBlbmNvZGVySWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVS
YXRlIH0sIDApOwpAQCAtNDU4LDYgKzQ1OSwzNiBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIExpYldlYlJUQ0NvZGVjczo6
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCit7Cisg
ICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisKKyAgICBpZiAobV9jb25u
ZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworCisg
ICAgYXV0byYgZ3B1Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgZ3B1Q29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMp
OworICAgIGdwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMp
OworCisgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgY29ubmVjdGlvbiA9IG1ha2VSZWYoZ3B1
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkpXSB7CisgICAgICAgIC8vIExvY2sgZXZlcnl0aGluZyBz
byB0aGF0IHdlIGNhbiB1cGRhdGUgZW5jb2Rlci9kZWNvZGVyIGNvbm5lY3Rpb24uCisgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworCisgICAgICAgIG1fY29ubmVj
dGlvbiA9IGNvbm5lY3Rpb24ucHRyKCk7CisgICAgICAgIC8vIFJlY3JlYXRlIGVuY29kZXJzIGFu
ZCBpbml0aWFsaXplIHRoZW0sIHJlY3JlYXRlIGRlY29kZXJzLgorICAgICAgICBmb3IgKGF1dG8m
IGVuY29kZXIgOiBtX2VuY29kZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBjb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVu
Y29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKGVuY29kZXIt
PmNvZGVjVHlwZSksIGVuY29kZXItPnBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxlZCgpIH0s
IDApOworICAgICAgICAgICAgaWYgKGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YSkKKyAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBlbmNvZGVyLT5pbml0
aWFsaXphdGlvbkRhdGEtPndpZHRoLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPmhlaWdo
dCwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5zdGFydEJpdFJhdGUsIGVuY29kZXItPmlu
aXRpYWxpemF0aW9uRGF0YS0+bWF4Qml0UmF0ZSwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRh
LT5taW5CaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1heEZyYW1lUmF0ZSB9
LCAwKTsKKyAgICAgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uLnB0cigp
OworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgZGVjb2RlciA6IG1fZGVjb2RlcnMudmFs
dWVzKCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZVJlbW90ZURlY29kZXIoKmRlY29kZXIsIGNvbm5l
Y3Rpb24uZ2V0KCkpOworICAgICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rp
b24ucHRyKCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgK
aW5kZXggNGJlYWUwNjIzMTdiYTI2YTYwNjgzZjFmNDUxMjMzZWIxMDczYWE3ZC4uMWNlNmUxYThm
OWJhYjMwNmZjM2E2NTRlOTkwNmM3ODVjZTg2ZDgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCkBAIC01OCw3ICs1OSw3IEBAIHN0cnVjdCBXZWJLaXRF
bmNvZGVkRnJhbWVJbmZvOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTGliV2ViUlRD
Q29kZWNzIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVm
Q291bnRlZCB7CitjbGFzcyBMaWJXZWJSVENDb2RlY3MgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9u
OjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTGliV2ViUlRDQ29kZWNzKCk7CkBAIC04MywxMSArODQsMjEgQEAgcHVibGljOgogICAgIGlu
dDMyX3QgZGVjb2RlRnJhbWUoRGVjb2RlciYsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCk7CiAgICAgdm9p
ZCByZWdpc3RlckRlY29kZUZyYW1lQ2FsbGJhY2soRGVjb2RlciYsIHZvaWQqIGRlY29kZWRJbWFn
ZUNhbGxiYWNrKTsKIAorICAgIHN0cnVjdCBFbmNvZGVySW5pdGlhbGl6YXRpb25EYXRhIHsKKyAg
ICAgICAgdWludDE2X3Qgd2lkdGg7CisgICAgICAgIHVpbnQxNl90IGhlaWdodDsKKyAgICAgICAg
dW5zaWduZWQgc3RhcnRCaXRSYXRlOworICAgICAgICB1bnNpZ25lZCBtYXhCaXRSYXRlOworICAg
ICAgICB1bnNpZ25lZCBtaW5CaXRSYXRlOworICAgICAgICB1aW50MzJfdCBtYXhGcmFtZVJhdGU7
CisgICAgfTsKICAgICBzdHJ1Y3QgRW5jb2RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKICAgICAgICAgd2VicnRjOjpWaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUgeyB3ZWJydGM6
OmtWaWRlb0NvZGVjR2VuZXJpYyB9OworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gcGFyYW1ldGVyczsKKyAgICAgICAgT3B0aW9uYWw8RW5jb2RlckluaXRpYWxpemF0
aW9uRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogICAgICAgICB2b2lkKiBlbmNvZGVkSW1hZ2VD
YWxsYmFjayB7IG51bGxwdHIgfTsKICAgICAgICAgTG9jayBlbmNvZGVkSW1hZ2VDYWxsYmFja0xv
Y2s7CiAgICAgICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb247CkBAIC0xMTMs
MTcgKzEyNCwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGxldGVkRW5jb2RpbmcoUlRDRW5j
b2RlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSYmLCBjb25zdCB3ZWJydGM6OldlYktp
dEVuY29kZWRGcmFtZUluZm8mKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29u
dmVydFRvQkdSQShDVlBpeGVsQnVmZmVyUmVmKTsKIAotICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24mKTsKLQogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJikg
ZmluYWw7CiAKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CisKIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+PiBtX2RlY29kZXJzOwogICAgIEhhc2hTZXQ8UlRDRGVjb2RlcklkZW50aWZpZXI+
IG1fZGVjb2RpbmdFcnJvcnM7CiAKICAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4+IG1fZW5jb2RlcnM7CiAKKyAgICBMb2NrIG1fY29ubmVj
dGlvbkxvY2s7CiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Oklt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAppbmRleCAzMTA0ZjU1NDEwNzQ5YjVmZmM4ZGJhZGE1ZGQ5ZjEwNDVjZjI2
ZDg5Li41MTNiNzdmYzVkM2E1ZTc3NDZiMjgyMjk1YjMyMzZiY2IzYjYzNDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgcHJpdmF0ZToKIAogcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQogeworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1BsYXRmb3JtQ29k
ZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCgpKTsKKyNlbmRpZgogICAgIHJldHVybiBXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0
b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0
b3J5PigpKTsKIH0KIApAQCAtMTQxLDI2ICsxNDQsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2Vi
UlRDUHJvdmlkZXI6OlN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6
OgogICAgIHJldHVybiBtYWtlVW5pcXVlPFJUQ1NvY2tldEZhY3Rvcnk+KFdURk1vdmUodXNlckFn
ZW50KSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLQotc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZURlY29kZXJG
YWN0b3J5KCkKLXsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKLSAgICBMaWJXZWJSVENDb2RlY3M6OnNldENhbGxiYWNrcyhSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNz
RW5hYmxlZCgpKTsKLSNlbmRpZgotICAgIHJldHVybiBMaWJXZWJSVENQcm92aWRlckNvY29hOjpj
cmVhdGVEZWNvZGVyRmFjdG9yeSgpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRl
b0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlRW5jb2RlckZhY3Rvcnko
KQotewotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQot
ICAgIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFibGVk
KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZUVu
Y29kZXJGYWN0b3J5KCk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDBmMTJi
MTBlM2E5OTcxMjlkNDFmNGFlNThhZjg1MTQ5NmRiOTE2YzcuLmJhMmI1YTUxNjJmYTBmMGRmOGU4
NmFlOGJhOTI5NGNmYWYwNTk0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC01OCwxMSAr
NTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJNRE5TTmFtZShXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE1ETlNOYW1lT3JFcnJvciYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlTm9u
TG9jYWxob3N0Q29ubmVjdGlvbnMoKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0ZWROZXR3b3JrVGhy
ZWFkKCkgZmluYWw7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVEZWNvZGVyRmFjdG9yeSgpIGZpbmFs
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0
ZUVuY29kZXJGYWN0b3J5KCkgZmluYWw7Ci0jZW5kaWYKIH07CiAjZWxzZQogdXNpbmcgTGliV2Vi
UlRDUHJvdmlkZXIgPSBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNmIyZjA0ZjE5M2IzMGJkMDgw
MjRmZjI1ZGI3OGM5NDRlYjgwNDQyLi4xODAwZTUyOWVmMDlmMmQwMGJkNTYyMGYyY2Q4OTVjMTQ1
MDA5YjE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFJlY292ZXIgV2ViUlRDIGNvZGVjcyBpbiBjYXNlIG9mIEdQVVBy
b2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L2dldFVzZXJNZWRpYS5odG1sOgorCiAyMDIxLTAyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgd2VicnRjIHZpZGVvIGNhcHR1cmUgaW4g
R1BVUHJvY2VzcyBmb3IgaU9TIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQppbmRleCA0ODQwNGIzNjViYmQ3YjY4
OTBjYmYzMTRmMDI0NjRlNzk1YjY3NzgwLi4zN2FlYzY0ODEyOTM0MGRkNjNlN2Q0N2EyY2M4M2Nh
ZmE2ZjRhNzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTQ0OSw3ICs0NTAsODMgQEAgVEVTVChXZWJLaXQyLCBDcmFzaEdQVVByb2Nlc3NXaGlsZUNh
cHR1cmluZykKICAgICBFWFBFQ1RfRVEoZ3B1UHJvY2Vzc1BJRCwgW3Byb2Nlc3NQb29sIF9ncHVQ
cm9jZXNzSWRlbnRpZmllcl0pOwogICAgIEVYUEVDVF9FUSh3ZWJWaWV3UElELCBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIH0KLSNlbmRpZgorCitURVNUKFdlYktpdDIsIENyYXNo
R1BVUHJvY2Vzc1doaWxlQ2FwdHVyaW5nQW5kQ2FsbGluZykKK3sKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisKKyAg
ICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2Vz
IF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNF
cXVhbFRvU3RyaW5nOkAiQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCJdKQorICAgICAg
ICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JJbnRlcm5hbERlYnVnRmVhdHVy
ZTpmZWF0dXJlXTsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJD
YXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNl
cyBfc2V0RW5hYmxlZDpOTyBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAg
ICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJDYXB0dXJlVmlkZW9JbkdQVVBy
b2Nlc3NFbmFibGVkIl0pCisgICAgICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEVuYWJsZWQ6WUVT
IGZvckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKyAgICBmb3IgKF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRh
bEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpA
IldlYlJUQ1BsYXRmb3JtQ29kZWNzSW5HUFVQcm9jZXNzRW5hYmxlZCJdKQorICAgICAgICAgICAg
W3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOworICAgIH0K
KworICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24g
PSBOTzsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVT
OworICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOworCisg
ICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsK
KworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tHZXRVc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHdlYlZpZXcuZ2V0KCku
VUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsK
KworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8odHJ1ZSkiXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjcmVhdGVDb25uZWN0aW9uKCkiXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byB3ZWJWaWV3UElEID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIFRoZSBHUFUgcHJvY2Vz
cyBzaG91bGQgZ2V0IGxhdW5jaGVkLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gY29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzUG9vbDsKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3
aGlsZSAoIVtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdICYmIHRpbWVvdXQrKyA8
IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKworICAgIEVY
UEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgaWYg
KCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZp
ZXJdOworCisgICAgLy8gS2lsbCB0aGUgR1BVIFByb2Nlc3MuCisgICAga2lsbChncHVQcm9jZXNz
UElELCA5KTsKKworICAgIC8vIEdQVSBQcm9jZXNzIHNob3VsZCBnZXQgcmVsYXVuY2hlZC4KKyAg
ICB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoKCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVu
dGlmaWVyXSB8fCBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSA9PSBncHVQcm9j
ZXNzUElEKSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX05FKFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdLCAwKTsKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRp
Zmllcl0sIGdwdVByb2Nlc3NQSUQpOworICAgIGdwdVByb2Nlc3NQSUQgPSBbcHJvY2Vzc1Bvb2wg
X2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgV2ViUHJvY2Vz
cyBkaWQgbm90IGNyYXNoLgorICAgIEVYUEVDVF9FUSh3ZWJWaWV3UElELCBbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2hlY2tEZWNvZGluZ1ZpZGVvKCkiXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0VRKGdwdVBy
b2Nlc3NQSUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBF
Q1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L2dldFVz
ZXJNZWRpYS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1l
ZGlhLmh0bWwKaW5kZXggODk1NjgwMzlmZDE1NWM5OTVlNTc0Yjk4ZWQ0NjU2ZjlkMDY3NDYzZi4u
MTYzNzZiY2UyNzc3MGY2Y2ZlMTllMmM3ZmQwNDY2NGMzMzQ4MzJiOCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTkzLDcg
KzkzLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tHZXRD
YXBhYmlsaXRpZXMoKSB7Ci0gICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoJ3ZpZGVv
JykgIT0gbnVsbCA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAgICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKFJUQ1J0cFNlbmRlci5nZXRDYXBh
YmlsaXRpZXMoJ3ZpZGVvJykgIT0gbnVsbCA/ICJQQVNTIiA6ICJGQUlMIGNoZWNrR2V0Q2FwYWJp
bGl0aWVzIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdldFN0YXRz
KGNvbm5lY3Rpb24sIHR5cGUsIGtpbmQpCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgICAgICAg
ICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPiAxMDApIHsKLSAgICAgICAgICAgICAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZ3VtLnBvc3RNZXNzYWdlKCJGQUlMIik7
CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1bS5w
b3N0TWVzc2FnZSgiRkFJTCBjaGVja1ZpZGVvU3RhdHVzIik7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ2V0U3RhdHMocGMx
LCAib3V0Ym91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3RhdHMpID0+IHsKQEAgLTE0NiwxMSAr
MTQ2LDQzIEBACiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRGVjb2RpbmdWaWRlb0NvdW50ZXJJbmNyZWFzZXMoY291bnRlciwg
ZnJhbWVzRGVjb2RlZCkgeworICAgICAgICAgICAgICAgIGlmICghY291bnRlcikKKyAgICAgICAg
ICAgICAgICAgICAgY291bnRlciA9IDA7CisgICAgICAgICAgICAgICAgZ2V0U3RhdHMocGMyLCAi
aW5ib3VuZC1ydHAiLCAidmlkZW8iKS50aGVuKChzdGF0cykgPT4geworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdHMgJiYgc3RhdHMuZnJhbWVzRGVjb2RlZCA+IGZyYW1lc0RlY29kZWQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1
bS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyID4g
MTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tEZWNvZGluZ1ZpZGVvQ291bnRlckluY3Jl
YXNlcyAiICsgZnJhbWVzRGVjb2RlZCArICIgIiArIEpTT04uc3RyaW5naWZ5KHN0YXRzKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBjaGVja0RlY29kaW5nVmlkZW9Db3Vu
dGVySW5jcmVhc2VzKCsrY291bnRlciwgZnJhbWVzRGVjb2RlZCksIDUwKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tEZWNv
ZGluZ1ZpZGVvKGNvdW50ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvdW50ZXIpCisgICAg
ICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwOworICAgICAgICAgICAgICAgIGdldFN0YXRzKHBj
MiwgImluYm91bmQtcnRwIiwgInZpZGVvIikudGhlbigoc3RhdHMpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXRzICYmIHN0YXRzLmZyYW1lc0RlY29kZWQgPiAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja0RlY29kaW5nVmlkZW9Db3VudGVySW5jcmVhc2VzKGNvdW50
ZXIsIHN0YXRzLmZyYW1lc0RlY29kZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVy
ID4gMTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tEZWNvZGluZ1ZpZGVvICIgKyBKU09O
LnN0cmluZ2lmeShzdGF0cykpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g
Y2hlY2tEZWNvZGluZ1ZpZGVvKCsrY291bnRlciksIDUwKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tBdWRpb1N0YXR1cyhj
b3VudGVyKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICAgICAgICAg
ICAgICBjb3VudGVyID0gMDsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb3VudGVyID4gMTAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmd1
bS5wb3N0TWVzc2FnZSgiRkFJTCIpOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy5ndW0ucG9zdE1lc3NhZ2UoIkZBSUwgY2hlY2tBdWRpb1N0YXR1cyIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGdldFN0YXRzKHBjMiwgImluYm91bmQtcnRwIiwgImF1ZGlvIikudGhlbigoc3Rh
dHMpID0+IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>