<?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>224299</bug_id>
          
          <creation_ts>2021-04-07 12:21:39 -0700</creation_ts>
          <short_desc>Make WebIDBServer not block main thread during initialization</short_desc>
          <delta_ts>2021-04-13 09:55:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748012</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-07 12:21:39 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748053</commentid>
    <comment_count>1</comment_count>
      <attachid>425434</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-07 13:52:22 -0700</bug_when>
    <thetext>Created attachment 425434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748133</commentid>
    <comment_count>2</comment_count>
      <attachid>425434</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-07 16:24:17 -0700</bug_when>
    <thetext>Comment on attachment 425434
Patch

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

&gt; Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:55
&gt;  WebIDBServer::~WebIDBServer()

Does WebIDBServer do something to ensure that its WebCore::IDBServer::IDBServer thread has fully exited before we run this destructor? If not, WebCore::IDBServer::IDBServer may use-after-free m_serverLock.

I see code in close() that will post a task to destroy the WebCore::IDBServer::IDBServer. But I don&apos;t see us waiting on that task. And I don&apos;t know if we guarantee a close() before destruction. (If so, we should probably RELEASE_ASSERT that here.)

&gt; Source/WebKitLegacy/Storage/InProcessIDBServer.h:135
&gt; +    Lock m_serverLock;

This is maybe not correct, or at least it&apos;s a little scary -- because we passed a reference to m_serverLock to m_server, and this C++ declaration order means that m_serverLock&apos;s destructor will run before m_server&apos;s. So, for at least a time, m_server will hold a reference to a destructed m_serverLock.

Let&apos;s change the declaration order so that m_serverLock outlives m_server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748167</commentid>
    <comment_count>3</comment_count>
      <attachid>425434</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-07 17:22:37 -0700</bug_when>
    <thetext>Comment on attachment 425434
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:55
&gt;&gt;  WebIDBServer::~WebIDBServer()
&gt; 
&gt; Does WebIDBServer do something to ensure that its WebCore::IDBServer::IDBServer thread has fully exited before we run this destructor? If not, WebCore::IDBServer::IDBServer may use-after-free m_serverLock.
&gt; 
&gt; I see code in close() that will post a task to destroy the WebCore::IDBServer::IDBServer. But I don&apos;t see us waiting on that task. And I don&apos;t know if we guarantee a close() before destruction. (If so, we should probably RELEASE_ASSERT that here.)

Yes, in close() it sets the callback of CrossThreadHandler, and the callback is the last thing to run before thread exits. 
The callback dispatches a function that should hold the last reference of WebIDBServer to main runloop, so WebIDBServer goes away after thread.

(I think we can simplify close() a bit. Will do a followup.)

&gt;&gt; Source/WebKitLegacy/Storage/InProcessIDBServer.h:135
&gt;&gt; +    Lock m_serverLock;
&gt; 
&gt; This is maybe not correct, or at least it&apos;s a little scary -- because we passed a reference to m_serverLock to m_server, and this C++ declaration order means that m_serverLock&apos;s destructor will run before m_server&apos;s. So, for at least a time, m_server will hold a reference to a destructed m_serverLock.
&gt; 
&gt; Let&apos;s change the declaration order so that m_serverLock outlives m_server.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748173</commentid>
    <comment_count>4</comment_count>
      <attachid>425466</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-07 17:55:59 -0700</bug_when>
    <thetext>Created attachment 425466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748333</commentid>
    <comment_count>5</comment_count>
      <attachid>425466</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-08 10:03:46 -0700</bug_when>
    <thetext>Comment on attachment 425466
Patch

r=me

Would be nice to RELEASE_ASSERT(!m_server) in the WebIDBServer destructor, to prove that we have indeed called close().

Similary, would be nice to move the call to setCompletionCallback() into the WebIDBServer server constructor. That way, the lifetime is more obvious, and we always get object lifetime right even if we forget to call close().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749700</commentid>
    <comment_count>6</comment_count>
      <attachid>425877</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-13 09:26:31 -0700</bug_when>
    <thetext>Created attachment 425877
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749711</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-13 09:53:54 -0700</bug_when>
    <thetext>Committed r275891 (236456@main): &lt;https://commits.webkit.org/236456@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425877.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749716</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-13 09:55:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/76596644&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425434</attachid>
            <date>2021-04-07 13:52:22 -0700</date>
            <delta_ts>2021-04-07 17:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224299-20210407135221.patch</filename>
            <type>text/plain</type>
            <size>37366</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDUwNGFkYjNlMmY0
MTQ3Y2I1YTEwODdmNmUyYTdlNzk1OTUzNC4uYTAxNmI4OWEzYjUzYTIxMDFjMmY1MDRmNzYyZGZk
ZmJjZjcwNTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA0LTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2VydmVy
IG5vdCBibG9jayBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmg6CisKIDIwMjEtMDQtMDcgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBJZ25vcmUgbm9uLW51bGwgbGFzdFF1b3RlIEFTU0VSVCB3aGVuIGNvbnRpbnVhdGlv
biBpcyBicm9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTA4NzgxOTVhOWU1ZjdlMjU0ZThhMGJhZjA2ZjJkMmFk
OWMxZWY2OC4uZDAzNTMyZTY3YTAxZTIwNmFjN2U5YmUyYWZkYzBjZTg1YzUxYTI3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNC0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYklEQlNlcnZlciBub3QgYmxvY2sgbWFpbiB0aHJl
YWQgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIExvY2sgZnJvbSBXZWJDb3JlOjpJREJTZXJ2ZXIgdG8gV2Vi
SURCU2VydmVyIHNvIHdlIGNhbiBibG9jayBiYWNrZ3JvdW5kIHRocmVhZCBpbiBzdXNwZW5kKCkg
d2hlbiBtX3NlcnZlciAKKyAgICAgICAgaXMgdW5pbml0aWFsaXplZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VB
bmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlNlcnZlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldENvdW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5oOgorCiAyMDIxLTA0LTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dUS10gTnVsbCBwb2ludGVyIGRlcmVmZXJl
bmNlIHdoZW4gY2hpbGQgcHJvY2VzcyBleGl0cyBpbW1lZGlhdGVseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCA4YWQwYjc1Y2U0MjZhOGU3MzA0NzYyMWI1ZjcxMWQ4ZDFhYTlhM2MwLi44OWYwYmY5
ODM5OGQwM2U1MmU4ZjMwNzFlZjI3OGI4ZmI3ODIwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTA0LTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2VydmVyIG5vdCBibG9jayBtYWluIHRocmVhZCBk
dXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlv
bik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5h
bWVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dENvdW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRh
dGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAg
ICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwogMjAyMS0wNC0wNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBN
YWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggYmMwY2QxMWY2ODgzZmE5NzNhODM5MjUzMmJh
ODA5YjQ3YjZhNTBjNy4uYjYzYzMzN2NkMjE5NDJiOTYwY2E1MzQ2MTJmM2Q3NjQyNjYxYzY3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5jcHAKQEAgLTQ0LDkgKzQ0LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIAotSURCU2VydmVyOjpJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1
b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgc3BhY2VSZXF1ZXN0ZXIpCitJREJTZXJ2ZXI6OklE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBzcGFjZVJl
cXVlc3RlciwgTG9jayYgbG9jaykKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAs
IG1fc3BhY2VSZXF1ZXN0ZXIoV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpCisgICAgLCBtX2xvY2so
bG9jaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRl
eCBkZTJhZDIwNTk5MTg0M2VhZGY1OWQzNTBjZWQxYTUwOTIyMDBjN2I5Li41ZTUyMTBhZWY3MWQx
MDdhZTgwOTY2YmFlYzFmYjJmOGY0MmE0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01Myw3ICs1Myw3IEBAIGNs
YXNzIElEQlNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyID0gRnVuY3Rpb248U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
c3BhY2VSZXF1ZXN0ZWQpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBJREJTZXJ2ZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFN
YW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+SURCU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyQ29ubmVj
dGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTExMCw4ICsxMTAsNiBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5U
aHJlYWQoKTsKIAotICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH07Ci0KIHByaXZh
dGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKQEAgLTEzMiw3ICsxMzAsNyBAQCBwcml2
YXRlOgogCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIG1fc3BhY2VSZXF1
ZXN0ZXI7CiAKLSAgICBMb2NrIG1fbG9jazsKKyAgICBMb2NrJiBtX2xvY2s7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDU1YmRh
ZTcyOTMzMjEzZWFhNWIxMWFkNDc0YWE4ZTc2NjM2ZTg4MmQuLjljNDUyZjI0NWJiNGQxOTdiOWFj
NzVhYWU5NWM4ODBjMzIwYWMxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTE4
OSw3ICsxMTg5LDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2UoKQog
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fc2VydmVyLmxvY2soKS5pc0hl
bGQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblBy
b2dyZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpIHsKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApp
bmRleCBkMjFlNTcxZWIxN2UxZTczNzM3MmI5NDUzNjBlOTVhNTkzOTA2NWY3Li5mODgwZTkzMjVi
ODRlZGU5MDdkOWIwYjU0M2EyNGZjZGY3MjkxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAgLTQ0LDEy
ICs0NCwxMiBAQCBXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXZQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksICZzZW1hcGhvcmUsIHNl
c3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzcGFjZVJlcXVl
c3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgbV9z
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9u
SUQsIGRpcmVjdG9yeSwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBzZW1hcGhv
cmUuc2lnbmFsKCk7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IHNwYWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3Zl
KHNwYWNlUmVxdWVzdGVyKSwgbV9zZXJ2ZXJMb2NrKTsKICAgICB9KTsKLSAgICBzZW1hcGhvcmUu
d2FpdCgpOwogfQogCiBXZWJJREJTZXJ2ZXI6On5XZWJJREJTZXJ2ZXIoKQpAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0T3JpZ2lucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcgogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFk
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3JpZ2lucyA9IGNyb3NzVGhyZWFk
Q29weShtX3NlcnZlci0+Z2V0T3JpZ2lucygpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUob3JpZ2lucykpOwogICAgICAgICB9KSk7CkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpY2F0aW9uVGltZSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5j
bG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKICAgICBwb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW5EYXRhcyA9IG9yaWdpbkRhdGFzLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMob3JpZ2luRGF0YXMpOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFk
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJl
bmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwg
Y28KICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBv
bGRPcmlnaW4gPSBvbGRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5ld09yaWdpbiA9IG5ld09yaWdp
bi5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+cmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2soV1RG
TW92ZShjYWxsYmFjaykpKTsKICAgICB9KTsKQEAgLTEyMiw4ICsxMjIsOSBAQCB2b2lkIFdlYklE
QlNlcnZlcjo6c3VzcGVuZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQg
PSB0cnVlOwotICAgIG1fc2VydmVyLT5sb2NrKCkubG9jaygpOwotICAgIG1fc2VydmVyLT5zdG9w
RGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgbV9zZXJ2ZXJMb2NrLmxvY2so
KTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5zdG9wRGF0YWJhc2VBY3Rp
dml0aWVzT25NYWluVGhyZWFkKCk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKQpA
QCAtMTM0LDE0ICsxMzUsMTQgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKLSAgICBtX3NlcnZlci0+bG9j
aygpLnVubG9jaygpOworICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKIH0KIAogdm9pZCBXZWJJ
REJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwog
fQogCkBAIC0xNDksNyArMTUwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9z
ZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTU3LDcgKzE1OCw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5hYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE2NSw3ICsxNjYsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUluZm8pOwogfQogCkBAIC0xODksNyArMTkwLDcgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogfQogCkBAIC0xOTcsNyArMTk4LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCkBAIC0yMDUs
NyArMjA2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y2xl
YXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIApA
QCAtMjEzLDcgKzIxNCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+
bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2Vy
dmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKIH0KIApAQCAtMjIxLDcg
KzIyMiw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxl
dGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwog
fQogCkBAIC0yMjksNyArMjMwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDYKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAg
bV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAKQEAgLTIzNyw3ICsyMzgsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBXZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERh
dGEsIGtleURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAtMjQ1LDcgKzI0Niw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRSZWNvcmQo
cmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOwogfQogCkBAIC0yNTMsNyArMjU0LDcgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmdldEFsbFJlY29yZHMocmVx
dWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KIApAQCAtMjYxLDcgKzI2Miw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV2ViSURC
U2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI3Nyw3ICsyNzgsNyBAQCB2b2lkIFdlYklEQlNlcnZl
cjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJ
bmZvKTsKIH0KIApAQCAtMjg1LDcgKzI4Niw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OwogICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vyc29y
RGF0YSk7CiB9CiAKQEAgLTI5Myw3ICsyOTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgYwog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JbmZvKTsKIH0KIApAQCAtMzAxLDcgKzMwMiw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMw
OSw3ICszMTAsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwog
fQogCkBAIC0zMTcsNyArMzE4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVw
Z3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAg
bV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzI1LDcgKzMyNiw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKIH0KIApAQCAtMzMzLDcgKzMzNCw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMzQ0LDcgKzM0NSw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjCiAgICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMod2ViSURCQ29ubmVjdGlvbi0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luKTsKIH0KIApAQCAtMzU5LDcgKzM2MCw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjphZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkCiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsK
IAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlZ2lz
dGVyQ29ubmVjdGlvbihpdGVyLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0p
OwogICAgIG1fY29ubmVjdGlvbnMuYWRkKCZjb25uZWN0aW9uKTsKQEAgLTM3Nyw3ICszNzgsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwogCi0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24o
Y29ubmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0pOwogfQpAQCAtNDA5LDgg
KzQxMCw5IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZSgpCiAKICAgICBwb3N0VGFzayhbdGhp
c10oKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7Ci0gICAgICAg
IG1fc2VydmVyID0gbnVsbHB0cjsKIAorICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgICAgICBtX3NlcnZlciA9IG51bGxwdHI7CiAgICAgICAgIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OmtpbGwoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKaW5kZXggMjU2ZTI5NTY1
MGE2MjBkODNjZjVjYTg3YThiYzBjYzMxMTRhMWQyZS4uNWE1NGQ5Zjk1MTBjMTVjZTBhODU0ODM3
MmMxMDMzMjg3MGI3NGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgTG9j
ayBtX3NlcnZlckxvY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyPiBtX3NlcnZlcjsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCmluZGV4IGUwNTllZjY4ODgzYzVhNzgwMDgyMzc4NDcxNjk2NjlkMGEwNTZiZTcuLjlkNDk0
YzY3ZGExNDQyYjY1MDVjNzZjNjhmZTlmMGY1MjJjNzM3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC05Niw5ICs5Niw5
IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkCiAgICAgbV90aHJlYWQtPnN0YXJ0KCk7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Np
b25JRCwgZGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCBz
cGFjZVJlcXVlc3RlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcyld
ICgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwotICAgICAgICBtX3NlcnZlciA9
IG1ha2VVbmlxdWU8SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBX
VEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7
CisgICAgICAgIG1fc2VydmVyID0gbWFrZVVuaXF1ZTxJREJTZXJ2ZXI6OklEQlNlcnZlcj4oc2Vz
c2lvbklELCBkaXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpLCBtX3NlcnZlckxvY2sp
OwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0Ns
aWVudCk7CiAgICAgfSk7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgSURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkg
Y29uc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVz
dERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRh
YmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5hYm9y
dFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJgogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
cmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIH0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAg
ICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5z
YWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGEKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKSwg
aW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZv
KTsKICAgICB9KTsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlc3Vs
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVj
dFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRl
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgfSk7CiB9CkBA
IC0zMDUsNyArMzA1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXMKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgp
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1f
c2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHko
KSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7
CiAgICAgfSk7CiB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNv
bGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhOYW1l
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5s
b2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAg
ICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkp
OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3Nl
cnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRk
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJl
cXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0YS5pc29sYXRlZENvcHko
KSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0gewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVl
c3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CkBAIC0z
NTMsNyArMzUzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBnZXRSZWNvcmREYXRhID0gZ2V0UmVjb3Jk
RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAg
ICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiAg
ICAgfSk7CiB9CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Z2V0QWxs
UmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pOwogfQpAQCAt
MzY5LDcgKzM2OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEg
PSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0ga2V5UmFuZ2VEYXRh
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5s
b2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAg
ICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7
CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0g
a2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOwogICAgIH0pOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8p
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZv
Lmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAg
ICB9KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3Bl
bkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gZGF0YS5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9j
aygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAg
bV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOwogICAgIH0pOwogfQpA
QCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRy
YW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pOwogICAgIH0pOwog
fQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXJdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5k
YXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygp
KTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9z
ZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
ICAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAg
LTQ2MSw3ICs0NjEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhh
bGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllciA9IHJlcXVlc3RJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBjb25uZWN0aW9uQ2xvc2VkXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAg
ICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7CiAgICAg
fSk7CiB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWQKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+
bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAg
ICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0p
OwogfQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENs
aWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2
ZXItPmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhpZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luKTsKICAgICB9KTsKIH0KQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0
IFdlYkNvcmU6OklEQlJlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lKQogewogICAg
IGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2Rp
ZmljYXRpb25UaW1lXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2Nr
KCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBt
X3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWNhdGlv
blRpbWUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDhjNWJiM2FkYTkxZWMyNDIwNjUxZjU4ODVkYmY1YWNh
ZjRkYTM1YzQuLjIzMmUzNWYwNWUzNWQyYzY3N2ViNWJkODUwYzIzN2NhNDA1YTJiN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAg
LTEzMiw0ICsxMzIsNSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
dG9yYWdlVGhyZWFkPiBtX3RocmVhZDsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luLCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4+IG1fcXVvdGFNYW5hZ2Vy
czsKKyAgICBMb2NrIG1fc2VydmVyTG9jazsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425466</attachid>
            <date>2021-04-07 17:55:59 -0700</date>
            <delta_ts>2021-04-13 09:26:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224299-20210407175558.patch</filename>
            <type>text/plain</type>
            <size>37534</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDUwNGFkYjNlMmY0
MTQ3Y2I1YTEwODdmNmUyYTdlNzk1OTUzNC4uYTAxNmI4OWEzYjUzYTIxMDFjMmY1MDRmNzYyZGZk
ZmJjZjcwNTgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA0LTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2VydmVy
IG5vdCBibG9jayBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmg6CisKIDIwMjEtMDQtMDcgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBJZ25vcmUgbm9uLW51bGwgbGFzdFF1b3RlIEFTU0VSVCB3aGVuIGNvbnRpbnVhdGlv
biBpcyBicm9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTA4NzgxOTVhOWU1ZjdlMjU0ZThhMGJhZjA2ZjJkMmFk
OWMxZWY2OC4uZDAzNTMyZTY3YTAxZTIwNmFjN2U5YmUyYWZkYzBjZTg1YzUxYTI3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNC0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYklEQlNlcnZlciBub3QgYmxvY2sgbWFpbiB0aHJl
YWQgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIExvY2sgZnJvbSBXZWJDb3JlOjpJREJTZXJ2ZXIgdG8gV2Vi
SURCU2VydmVyIHNvIHdlIGNhbiBibG9jayBiYWNrZ3JvdW5kIHRocmVhZCBpbiBzdXNwZW5kKCkg
d2hlbiBtX3NlcnZlciAKKyAgICAgICAgaXMgdW5pbml0aWFsaXplZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Y2xvc2VB
bmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlNlcnZlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lSW5kZXgpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6
OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmdldENvdW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVSZWNvcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5oOgorCiAyMDIxLTA0LTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtXUEVdW0dUS10gTnVsbCBwb2ludGVyIGRlcmVmZXJl
bmNlIHdoZW4gY2hpbGQgcHJvY2VzcyBleGl0cyBpbW1lZGlhdGVseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCA4YWQwYjc1Y2U0MjZhOGU3MzA0NzYyMWI1ZjcxMWQ4ZDFhYTlhM2MwLi44OWYwYmY5
ODM5OGQwM2U1MmU4ZjMwNzFlZjI3OGI4ZmI3ODIwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDIxLTA0LTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2VydmVyIG5vdCBibG9jayBtYWluIHRocmVhZCBk
dXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9j
ZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlv
bik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5h
bWVJbmRleCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dENvdW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAg
ICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nl
c3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVy
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRh
dGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNl
cnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAg
ICogU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwogMjAyMS0wNC0wNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3VycmVjdCBN
YWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggYmMwY2QxMWY2ODgzZmE5NzNhODM5MjUzMmJh
ODA5YjQ3YjZhNTBjNy4uYjYzYzMzN2NkMjE5NDJiOTYwY2E1MzQ2MTJmM2Q3NjQyNjYxYzY3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5jcHAKQEAgLTQ0LDkgKzQ0LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIAotSURCU2VydmVyOjpJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1
b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgc3BhY2VSZXF1ZXN0ZXIpCitJREJTZXJ2ZXI6OklE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBzcGFjZVJl
cXVlc3RlciwgTG9jayYgbG9jaykKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAs
IG1fc3BhY2VSZXF1ZXN0ZXIoV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpCisgICAgLCBtX2xvY2so
bG9jaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRl
eCBkZTJhZDIwNTk5MTg0M2VhZGY1OWQzNTBjZWQxYTUwOTIyMDBjN2I5Li41ZTUyMTBhZWY3MWQx
MDdhZTgwOTY2YmFlYzFmYjJmOGY0MmE0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01Myw3ICs1Myw3IEBAIGNs
YXNzIElEQlNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyID0gRnVuY3Rpb248U3Rv
cmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
c3BhY2VSZXF1ZXN0ZWQpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBJREJTZXJ2ZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFN
YW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFn
ZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+SURCU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyQ29ubmVj
dGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTExMCw4ICsxMTAsNiBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5U
aHJlYWQoKTsKIAotICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH07Ci0KIHByaXZh
dGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKQEAgLTEzMiw3ICsxMzAsNyBAQCBwcml2
YXRlOgogCiAgICAgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIG1fc3BhY2VSZXF1
ZXN0ZXI7CiAKLSAgICBMb2NrIG1fbG9jazsKKyAgICBMb2NrJiBtX2xvY2s7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDU1YmRh
ZTcyOTMzMjEzZWFhNWIxMWFkNDc0YWE4ZTc2NjM2ZTg4MmQuLjljNDUyZjI0NWJiNGQxOTdiOWFj
NzVhYWU5NWM4ODBjMzIwYWMxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTE4
OSw3ICsxMTg5LDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2UoKQog
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRBY3RpdmVUcmFuc2FjdGlvbnMoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fc2VydmVyLmxvY2soKS5pc0hl
bGQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblBy
b2dyZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpIHsKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApp
bmRleCBkMjFlNTcxZWIxN2UxZTczNzM3MmI5NDUzNjBlOTVhNTkzOTA2NWY3Li5mODgwZTkzMjVi
ODRlZGU5MDdkOWIwYjU0M2EyNGZjZGY3MjkxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAgLTQ0LDEy
ICs0NCwxMiBAQCBXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXZQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksICZzZW1hcGhvcmUsIHNl
c3Npb25JRCwgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzcGFjZVJlcXVl
c3RlciA9IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgbV9z
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9u
SUQsIGRpcmVjdG9yeSwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgICAgICBzZW1hcGhv
cmUuc2lnbmFsKCk7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCks
IHNwYWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOworICAgICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3Zl
KHNwYWNlUmVxdWVzdGVyKSwgbV9zZXJ2ZXJMb2NrKTsKICAgICB9KTsKLSAgICBzZW1hcGhvcmUu
d2FpdCgpOwogfQogCiBXZWJJREJTZXJ2ZXI6On5XZWJJREJTZXJ2ZXIoKQpAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Z2V0T3JpZ2lucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcgogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFk
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3JpZ2lucyA9IGNyb3NzVGhyZWFk
Q29weShtX3NlcnZlci0+Z2V0T3JpZ2lucygpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUob3JpZ2lucykpOwogICAgICAgICB9KSk7CkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltCiAgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpY2F0aW9uVGltZSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5j
bG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKICAgICBwb3N0VGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW5EYXRhcyA9IG9yaWdpbkRhdGFzLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMob3JpZ2luRGF0YXMpOwogICAgICAgICBwb3N0VGFza1JlcGx5KENyb3NzVGhyZWFk
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJl
bmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwg
Y28KICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBv
bGRPcmlnaW4gPSBvbGRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5ld09yaWdpbiA9IG5ld09yaWdp
bi5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+cmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2soV1RG
TW92ZShjYWxsYmFjaykpKTsKICAgICB9KTsKQEAgLTEyMiw4ICsxMjIsOSBAQCB2b2lkIFdlYklE
QlNlcnZlcjo6c3VzcGVuZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQg
PSB0cnVlOwotICAgIG1fc2VydmVyLT5sb2NrKCkubG9jaygpOwotICAgIG1fc2VydmVyLT5zdG9w
RGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgbV9zZXJ2ZXJMb2NrLmxvY2so
KTsKKyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5zdG9wRGF0YWJhc2VBY3Rp
dml0aWVzT25NYWluVGhyZWFkKCk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKQpA
QCAtMTM0LDE0ICsxMzUsMTQgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKLSAgICBtX3NlcnZlci0+bG9j
aygpLnVubG9jaygpOworICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKIH0KIAogdm9pZCBXZWJJ
REJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwog
fQogCkBAIC0xNDksNyArMTUwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9z
ZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTU3LDcgKzE1OCw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5hYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE2NSw3ICsxNjYsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZUluZm8pOwogfQogCkBAIC0xODksNyArMTkwLDcgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogfQogCkBAIC0xOTcsNyArMTk4LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCkBAIC0yMDUs
NyArMjA2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y2xl
YXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIApA
QCAtMjEzLDcgKzIxNCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+
bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2Vy
dmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKIH0KIApAQCAtMjIxLDcg
KzIyMiw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxl
dGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwog
fQogCkBAIC0yMjksNyArMjMwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDYKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAg
bV9zZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAKQEAgLTIzNyw3ICsyMzgsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBXZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERh
dGEsIGtleURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAtMjQ1LDcgKzI0Niw3
IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRSZWNvcmQo
cmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEpOwogfQogCkBAIC0yNTMsNyArMjU0LDcgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmdldEFsbFJlY29yZHMocmVx
dWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KIApAQCAtMjYxLDcgKzI2Miw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV2ViSURC
U2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI3Nyw3ICsyNzgsNyBAQCB2b2lkIFdlYklEQlNlcnZl
cjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJ
bmZvKTsKIH0KIApAQCAtMjg1LDcgKzI4Niw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OwogICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vyc29y
RGF0YSk7CiB9CiAKQEAgLTI5Myw3ICsyOTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgYwog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JbmZvKTsKIH0KIApAQCAtMzAxLDcgKzMwMiw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rp
b25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMw
OSw3ICszMTAsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwog
fQogCkBAIC0zMTcsNyArMzE4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVw
Z3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAg
bV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzI1LDcgKzMyNiw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKIH0KIApAQCAtMzMzLDcgKzMzNCw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVl
c3REYXRhJiByZXF1ZXN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVk
KHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMzQ0LDcgKzM0NSw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjCiAgICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQo
Y29ubmVjdGlvbi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMod2ViSURCQ29ubmVjdGlvbi0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luKTsKIH0KIApAQCAtMzU5LDcgKzM2MCw3IEBAIHZvaWQgV2ViSURCU2VydmVy
OjphZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkCiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsK
IAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlZ2lz
dGVyQ29ubmVjdGlvbihpdGVyLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0p
OwogICAgIG1fY29ubmVjdGlvbnMuYWRkKCZjb25uZWN0aW9uKTsKQEAgLTM3Nyw3ICszNzgsNyBA
QCB2b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwogCi0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24o
Y29ubmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0pOwogfQpAQCAtNDA5LDgg
KzQxMCw5IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjbG9zZSgpCiAKICAgICBwb3N0VGFzayhbdGhp
c10oKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7Ci0gICAgICAg
IG1fc2VydmVyID0gbnVsbHB0cjsKIAorICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOworICAgICAgICBtX3NlcnZlciA9IG51bGxwdHI7CiAgICAgICAgIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OmtpbGwoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKaW5kZXggMjU2ZTI5NTY1
MGE2MjBkODNjZjVjYTg3YThiYzBjYzMxMTRhMWQyZS4uNWE1NGQ5Zjk1MTBjMTVjZTBhODU0ODM3
MmMxMDMzMjg3MGI3NGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgTG9j
ayBtX3NlcnZlckxvY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyPiBtX3NlcnZlcjsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCmluZGV4IGUwNTllZjY4ODgzYzVhNzgwMDgyMzc4NDcxNjk2NjlkMGEwNTZiZTcuLjlkNDk0
YzY3ZGExNDQyYjY1MDVjNzZjNjhmZTlmMGY1MjJjNzM3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC05Niw5ICs5Niw5
IEBAIEluUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkCiAgICAgbV90aHJlYWQtPnN0YXJ0KCk7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Np
b25JRCwgZGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpLCBz
cGFjZVJlcXVlc3RlciA9IHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcyld
ICgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwotICAgICAgICBtX3NlcnZlciA9
IG1ha2VVbmlxdWU8SURCU2VydmVyOjpJREJTZXJ2ZXI+KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBX
VEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CiAKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
ZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7
CisgICAgICAgIG1fc2VydmVyID0gbWFrZVVuaXF1ZTxJREJTZXJ2ZXI6OklEQlNlcnZlcj4oc2Vz
c2lvbklELCBkaXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpLCBtX3NlcnZlckxvY2sp
OwogICAgICAgICBtX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0Ns
aWVudCk7CiAgICAgfSk7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgSURCU2VydmVyOjpJREJDb25u
ZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkg
Y29uc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVz
dERhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRh
YmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5hYm9y
dFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJgogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYg
cmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXIgPSByZXNvdXJjZUlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAg
ICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIH0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpj
b21taXRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAg
ICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5z
YWN0aW9uSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGEKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiBpbmZvKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXN1bHREYXRhID0gcmVzdWx0RGF0YS5pc29sYXRlZENvcHkoKSwg
aW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZv
KTsKICAgICB9KTsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlc3Vs
dAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNv
cmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVj
dFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRl
T2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgfSk7CiB9CkBA
IC0zMDUsNyArMzA1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXMKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgp
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2so
KSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1f
c2VydmVyLT5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRD
b3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmIHJlcXVlc3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHko
KSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
TG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7
CiAgICAgfSk7CiB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNv
bGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0gaW5kZXhOYW1l
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5s
b2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAg
ICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkp
OworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3Nl
cnZlci0+cmVuYW1lSW5kZXgocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKICAgICB9KTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRk
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJl
cXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBrZXlEYXRhID0ga2V5RGF0YS5pc29sYXRlZENvcHko
KSwgdmFsdWUgPSB2YWx1ZS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0gewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVl
c3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CkBAIC0z
NTMsNyArMzUzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBnZXRSZWNvcmREYXRhID0gZ2V0UmVjb3Jk
RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAg
ICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiAg
ICAgfSk7CiB9CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Omdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFs
bFJlY29yZHNEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBnZXRBbGxSZWNvcmRzRGF0YSA9IGdldEFsbFJlY29yZHNEYXRhLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Z2V0QWxs
UmVjb3JkcyhyZXF1ZXN0RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwogICAgIH0pOwogfQpAQCAt
MzY5LDcgKzM2OSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxSZWNvcmRzKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKICAgICBkaXNwYXRj
aFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEg
PSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0ga2V5UmFuZ2VEYXRh
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5s
b2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAg
ICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7
CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwga2V5UmFuZ2VEYXRhID0g
a2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxv
Y2spOwogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5n
ZURhdGEpOwogICAgIH0pOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBXZWJDb3Jl
OjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8p
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGluZm8gPSBpbmZv
Lmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAg
ICB9KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3Bl
bkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQog
ewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gZGF0YS5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9j
aygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAg
bV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEpOwogICAgIH0pOwogfQpA
QCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29y
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewogICAgIGRp
c3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRy
YW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pOwogICAgIH0pOwog
fQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGluZ0Nsb3NlKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXJdIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5k
YXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3QKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygp
KTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9z
ZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uSWRl
bnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
ICAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAg
LTQ2MSw3ICs0NjEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSW5kZXhlZERCOjpDb25uZWN0aW9uQ2xvc2VkT25CZWhh
bGZPZlNlcnZlciBjb25uZWN0aW9uQ2xvc2VkKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllciA9IHJlcXVlc3RJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBjb25uZWN0aW9uQ2xvc2VkXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAg
ICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgY29ubmVjdGlvbkNsb3NlZCk7CiAgICAg
fSk7CiB9CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWQKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6
OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+
bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAg
ICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0p
OwogfQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdl
YkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENs
aWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsK
KyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2
ZXItPmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhpZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luKTsKICAgICB9KTsKIH0KQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0
IFdlYkNvcmU6OklEQlJlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBtb2RpZmljYXRpb25UaW1lKQogewogICAg
IGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2Rp
ZmljYXRpb25UaW1lXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2Nr
KCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBt
X3NlcnZlci0+Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWNhdGlv
blRpbWUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDhjNWJiM2FkYTkxZWMyNDIwNjUxZjU4ODVkYmY1YWNh
ZjRkYTM1YzQuLjZjYjhmN2VmOWFmZTU5YmY0ZWU2NGE4NGI0MTEwNjhhODZmYWUwYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAg
LTEyNiw2ICsxMjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluUHJvY2Vzc0lEQlNlcnZl
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSBu
dWxsU3RyaW5nKCkpOwogCisgICAgTG9jayBtX3NlcnZlckxvY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBtX3NlcnZlcjsKICAgICBSZWZQdHI8
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fY29ubmVjdGlvblRv
U2VydmVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudD4gbV9jb25uZWN0aW9uVG9DbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425877</attachid>
            <date>2021-04-13 09:26:31 -0700</date>
            <delta_ts>2021-04-13 09:53:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224299-20210413092630.patch</filename>
            <type>text/plain</type>
            <size>38190</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmZDlhZTUzZTQwZDM1
NmYxMjZjZjI1MjNlNzlhMzUzMWYzZGFhYy4uMzkxYjRmYzZlM2Q3ODc5MDhkMGEwNDczMGRmY2U2
NTA0M2VhNjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTEzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2VydmVy
IG5vdCBibG9jayBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6bG9jayk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmFib3J0QWN0aXZlVHJhbnNhY3Rpb25zKToKKwogMjAyMS0wNC0xMiAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ciBzaG91bGQgdXNlIHdlYWsgcG9pbnRlcnMgdG8gTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMzZhM2MyNDlm
ZDhiZjljYWRkODk3NDNjNjFhZTc4M2M5MGU1OTk3Li41YzZjODdlODdjYTA2YWQxNzMyNTg2NTE3
YjUyZGE0YmZjOTM5MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA0LTEzICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViSURCU2Vy
dmVyIG5vdCBibG9jayBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDI5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIE1vdmUgTG9jayBmcm9tIFdl
YkNvcmU6OklEQlNlcnZlciB0byBXZWJJREJTZXJ2ZXIgc28gd2UgY2FuIGJsb2NrIGJhY2tncm91
bmQgdGhyZWFkIGluIHN1c3BlbmQoKSB3aGVuIG1fc2VydmVyIAorICAgICAgICBpcyB1bmluaXRp
YWxpemVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fY2xvc2VDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCU2VydmVyOjpjbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnJlbmFtZU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQlNlcnZlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlcjo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpvcGVuRGF0YWJh
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2Vy
dmVyOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVuYW1l
SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2
ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpkZWxldGVSZWNv
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNp
b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5oOgorCiAyMDIxLTA0LTEyICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRm9yY2UgdGhlIFdlYkF1dGhuIGNvbXBhdGli
bGUgbW9kZSB0byBhbHdheXMgc2hvdyBVSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBjYThiMDVl
NDA4MGQ3MTYzMTlkYmU3NjEzZjRmNzUxOWEwMTE0OGUxLi44NTg4M2QzYjJkNWY5YjM4Mjg2MzZi
ZjM1ZjY3YjFlZWJhNTQxY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDIxLTA0LTEzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgV2ViSURCU2VydmVyIG5vdCBibG9jayBtYWluIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICog
U3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2Vy
dmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVJbmRleCk6CisgICAg
ICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKToKKyAgICAgICAgKEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxs
UmVjb3Jkcyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAg
ICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKEluUHJvY2Vz
c0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFu
c2FjdGlvbik6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
blBlbmRpbmdDbG9zZSk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFu
ZFVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRCUmVx
dWVzdENhbmNlbGxlZCk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFi
YXNlTmFtZXNBbmRWZXJzaW9ucyk6CisgICAgICAgIChJblByb2Nlc3NJREJTZXJ2ZXI6OmNsb3Nl
QW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICogU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuaDoKKwogMjAyMS0wNC0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbG9nZ2luZyBmb3IgaW52ZXN0aWdhdGluZyBodHRw
L3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdlLWxpbWl0LTEuaHRtbCBmYWlsdXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmlu
ZGV4IDJmODgyYTk0M2E3YTAzMmUxYjgwODgxZTFkMDUyOWU3MWMxNGNjYmMuLmFjNjM4MDVlMjRm
YTU5NzlmYTBmODJmN2I3N2MwYjIzOWZmYjg3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC00NCw5ICs0NCwx
MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLUlEQlNl
cnZlcjo6SURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciYm
IHNwYWNlUmVxdWVzdGVyKQorSURCU2VydmVyOjpJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgc3BhY2VSZXF1ZXN0ZXIsIExvY2smIGxvY2spCiAgICAg
OiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3NwYWNlUmVxdWVzdGVyKFdURk1vdmUo
c3BhY2VSZXF1ZXN0ZXIpKQorICAgICwgbV9sb2NrKGxvY2spCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZmY3ZjU4ODUwZjQzMTExYzg2NGJlZGVk
YzMxN2Y4NmI1YWM1Y2E0Zi4uM2M3OGZiMTY2N2EwZjY0OTJjYjNlMzk4YWExMjBmNTBmZjE5OTcz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBJREJTZXJ2ZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFn
ZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
KGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47Ci0gICAgV0VC
Q09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rl
ciYmLCBMb2NrJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfklEQlNlcnZlcigpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50
Jik7CkBAIC0xMTAsOCArMTEwLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CiAKLSAgICBMb2NrJiBsb2Nr
KCkgeyByZXR1cm4gbV9sb2NrOyB9OwotCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNl
JiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYpOwogCkBAIC0xMzIsNyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0b3JhZ2VRdW90YU1h
bmFnZXJTcGFjZVJlcXVlc3RlciBtX3NwYWNlUmVxdWVzdGVyOwogCi0gICAgTG9jayBtX2xvY2s7
CisgICAgTG9jayYgbV9sb2NrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA1NWJkYWU3MjkzMzIxM2VhYTViMTFhZDQ3NGFhOGU3
NjYzNmU4ODJkLi45YzQ1MmYyNDViYjRkMTk3YjlhYzc1YWFlOTVjODgwYzMyMGFjMTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTExODksNyArMTE4OSw2IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlKCkKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFi
b3J0QWN0aXZlVHJhbnNhY3Rpb25zKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX3NlcnZlci5sb2NrKCkuaXNIZWxkKCkpOwogCiAgICAgZm9yIChhdXRvJiBp
ZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5rZXlzKCkp
KSB7CiAgICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMu
Z2V0KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKaW5kZXggNmFmNTk1ZmZjMTA2NTkwZGE4MTdk
NzE1NDYyNGZiMWZmNmVlNjU5Ny4uMDI4Y2I1Mzc4YWUyNDY3MWNkNjJhNjE0ZWY5NzAzY2M2NjE0
MmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViSURC
U2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgotI2luY2x1ZGUg
PHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDYsMTIgKzQ1LDEyIEBAIFdlYklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdlCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0g
ICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgJnNlbWFw
aG9yZSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNw
YWNlUmVxdWVzdGVyID0gV1RGTW92ZShzcGFjZVJlcXVlc3RlcildICgpIG11dGFibGUgewotICAg
ICAgICBtX3NlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+
KHNlc3Npb25JRCwgZGlyZWN0b3J5LCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgICAg
IHNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIGRpcmVjdG9yeSA9IGRpcmVjdG9yeS5pc29sYXRl
ZENvcHkoKSwgc3BhY2VSZXF1ZXN0ZXIgPSBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CisgICAgICAgIG1fc2VydmVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcj4oc2Vzc2lvbklELCBkaXJlY3Rvcnks
IFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpLCBtX3NlcnZlckxvY2spOwogICAgIH0pOwotICAgIHNl
bWFwaG9yZS53YWl0KCk7CiB9CiAKIFdlYklEQlNlcnZlcjo6fldlYklEQlNlcnZlcigpCkBAIC02
OCw3ICs2Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpnZXRPcmlnaW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yCiAgICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgdG9rZW4gPSBtX2RhdGFUYXNrQ291bnRlci5jb3VudCgpXSgpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gV1RGTW92ZSh0b2tlbiksIG9yaWdpbnMgPSBj
cm9zc1RocmVhZENvcHkobV9zZXJ2ZXItPmdldE9yaWdpbnMoKSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG9yaWdpbnMpKTsKICAgICAgICAgfSkpOwpAQCAtODIs
NyArODEsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2Rp
ZmllZFNpbmNlKFdhbGxUaW1lIG1vZGlmaWNhdGlvblRpbQogICAgIHBvc3RUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWNhdGlvblRpbWUsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHRva2VuID0gbV9kYXRhVGFza0NvdW50ZXIuY291bnQoKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgIHBvc3RU
YXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2so
KTsKQEAgLTk3LDcgKzk2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXIKICAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW5EYXRhcyA9IG9y
aWdpbkRhdGFzLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldICgpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2Nr
KTsKICAgICAgICAgbV9zZXJ2ZXItPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhv
cmlnaW5EYXRhcyk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTExMiw3ICsxMTEsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgb2xkT3JpZ2luLCBjbwogICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG9sZE9yaWdpbiA9IG9sZE9yaWdpbi5pc29sYXRlZENvcHkoKSwgbmV3T3Jp
Z2luID0gbmV3T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0b2tlbiA9IG1fZGF0YVRhc2tDb3VudGVyLmNvdW50KCldICgpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09y
aWdpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCB0b2tlbiA9IFdURk1vdmUodG9rZW4pXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbGJhY2soKTsKQEAgLTEyOCw4ICsxMjcsOSBAQCB2b2lkIFdlYklEQlNl
cnZlcjo6c3VzcGVuZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSB0
cnVlOwotICAgIG1fc2VydmVyLT5sb2NrKCkubG9jaygpOwotICAgIG1fc2VydmVyLT5zdG9wRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgbV9zZXJ2ZXJMb2NrLmxvY2soKTsK
KyAgICBpZiAobV9zZXJ2ZXIpCisgICAgICAgIG1fc2VydmVyLT5zdG9wRGF0YWJhc2VBY3Rpdml0
aWVzT25NYWluVGhyZWFkKCk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKQpAQCAt
MTQwLDE0ICsxNDAsMTQgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKLSAgICBtX3NlcnZlci0+bG9jaygp
LnVubG9jaygpOworICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKIH0KIAogdm9pZCBXZWJJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nl
cnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOwogfQog
CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5s
b2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2
ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lk
IFdlYklEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50
NjRfdCBkYXRhYmFzZUNvCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2Fj
dGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRh
LCBvYmplY3RTdG9yZUluZm8pOwogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZU5hbWUpOwogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJJ
REJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+Y2xlYXJP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9j
aygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVy
LT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5kZXhJbmZvKTsKIH0KIApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxldGVJ
bmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogfQog
CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFtZUluZGV4KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDYKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9z
ZXJ2ZXItPnJlbmFtZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CiB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBXZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEs
IGtleURhdGEsIHZhbHVlLCBvdmVyV3JpdGVNb2RlKTsKIH0KIApAQCAtMjUxLDcgKzI1MSw3IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBXCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVx
dWVzdERhdGEsIGdldFJlY29yZERhdGEpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb24KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9zZXJ2ZXItPmdldEFsbFJlY29yZHMocmVxdWVz
dERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IFdlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKIH0KIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyOjpkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YSk7CiB9CiAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6
b3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZl
ckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBjdXJzb3JJbmZv
KTsKIH0KIApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjppdGVyYXRlQ3Vy
c29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwog
ICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBpdGVyYXRlQ3Vyc29yRGF0
YSk7CiB9CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZXN0YWJsaXNo
VHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgYwogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsK
ICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgdHJhbnNhY3Rpb25JbmZvKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFdlYklEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICBtX3NlcnZlci0+ZGF0
YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogfQog
CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3Jh
ZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgbV9z
ZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMzMxLDcgKzMzMSw3IEBAIHZv
aWQgV2ViSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25uZWN0aW9uQ2xvc2VkKTsKIH0KIApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgV2ViSURC
U2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJl
cXVlc3REYXRhKTsKIH0KIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjpn
ZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjCiAgICAgYXV0byogd2ViSURCQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29u
bmVjdGlvbi51bmlxdWVJRCgpKTsKICAgICBBU1NFUlQod2ViSURCQ29ubmVjdGlvbik7CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgIG1fc2VydmVyLT5nZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMod2ViSURCQ29ubmVjdGlvbi0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRpZmll
ciwgb3JpZ2luKTsKIH0KIApAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgV2ViSURCU2VydmVyOjph
ZGRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UHJvY2Vz
c0lkCiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsKIAot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlZ2lzdGVy
Q29ubmVjdGlvbihpdGVyLT52YWx1ZS0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0pOwog
ICAgIG1fY29ubmVjdGlvbnMuYWRkKCZjb25uZWN0aW9uKTsKQEAgLTM4Niw3ICszODYsNyBAQCB2
b2lkIFdlYklEQlNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiAKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwogCi0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+dW5yZWdpc3RlckNvbm5lY3Rpb24oY29u
bmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkpOwogICAgIH0pOwogCkBAIC00MjIsOCArNDIy
LDkgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OmNsb3NlKCkKIAogICAgIHBvc3RUYXNrKFt0aGlzXSgp
IG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKLSAgICAgICAgbV9z
ZXJ2ZXIgPSBudWxscHRyOwogCisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CisgICAgICAgIG1fc2VydmVyID0gbnVsbHB0cjsKICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNr
SGFuZGxlcjo6a2lsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCmluZGV4IDYyZmU3MDA4YTBjYTlh
YzBjMWYyYmQxZDdhNDkxNzI3NjIzMWVlMzQuLjNmODBhYTIyNGY5N2U1YWNiYWEyOWY4YTg1NjM2
MzVkYzZhMjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5k
ZXhlZERCL1dlYklEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHRyeUNsb3NlKCk7CiAKKyAgICBMb2NrIG1fc2VydmVyTG9jazsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+IG1fc2VydmVyOwogICAgIGJv
b2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggY2IxNGE2OTdmOTYzZWM3MDk3
MDNlY2NhNWJmNGQ4N2I3Y2FhOGY0ZS4uYjIzN2E2Y2M2OWNmZWIzNjUzYzhiYTY1ZGU5ZWNiNDdk
YzQxZmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKQEAgLTk2LDkgKzk2LDkgQEAgSW5Qcm9jZXNzSURCU2VydmVyOjpJblBy
b2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGQK
ICAgICBtX3RocmVhZC0+c3RhcnQoKTsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBkaXJlY3RvcnkgPSBkYXRhYmFzZURp
cmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCksIHNwYWNlUmVxdWVzdGVyID0gc3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyKCp0aGlzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fY29u
bmVjdGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgICAgIG1fc2VydmVyID0gbWFrZVVuaXF1ZTxJREJTZXJ2ZXI6OklEQlNl
cnZlcj4oc2Vzc2lvbklELCBkaXJlY3RvcnksIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKIAot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKKyAgICAgICAgbV9zZXJ2ZXIgPSBtYWtlVW5p
cXVlPElEQlNlcnZlcjo6SURCU2VydmVyPihzZXNzaW9uSUQsIGRpcmVjdG9yeSwgV1RGTW92ZShz
cGFjZVJlcXVlc3RlciksIG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5yZWdpc3Rl
ckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRvQ2xpZW50KTsKICAgICB9KTsKIH0KQEAgLTEyMyw3
ICsxMjMsNyBAQCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgSW5Qcm9jZXNzSURC
U2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFi
YXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIGRpc3BhdGNoVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJl
cXVlc3REYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2sp
OwogICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsK
IH0KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291cmNlSWRlbnRpZmllciA9IHJlc291
cmNlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJM
b2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB9KTsKIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc291
cmNlSWRlbnRpZmllciA9IHJlc291cmNlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNvbW1pdFRyYW5z
YWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CkBAIC0yODEsNyArMjgxLDcg
QEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRG
aW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+
ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTI4
OSw3ICsyODksNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YQogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiBy
ZXN1bHREYXRhLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3VsdERhdGEg
PSByZXN1bHREYXRhLmlzb2xhdGVkQ29weSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHkoKV0g
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0
ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMjk3LDcgKzI5
Nyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVzdWx0CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBkaXNwYXRjaFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1
ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1l
Lmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmIHJlcXVlcwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnJlbmFtZU9iamVjdFN0b3Jl
KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
ID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3
TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPnJlbmFtZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogICAgIH0pOwogfQpA
QCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5hbWVPYmplY3RT
dG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBk
aXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVz
dERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
XSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Y2xl
YXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB9
KTsKIH0KQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJP
YmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewogICAgIGRpc3Bh
dGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0
YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpLCBpbmZvID0gaW5mby5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmNy
ZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KQEAgLTMyOSw3ICszMjks
NyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRl
bGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsK
ICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS5pc29sYXRlZENvcHkoKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1
ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwogfQpA
QCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6cmVuYW1lSW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIGRpc3BhdGNoVGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVl
c3REYXRhLmlzb2xhdGVkQ29weSgpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRp
ZmllciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5yZW5hbWVJbmRleChyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogICAg
IH0pOwogfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpyZW5h
bWVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1
ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3
cml0ZU1vZGUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGtl
eURhdGEgPSBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSA9IHZhbHVlLmlzb2xhdGVkQ29w
eSgpLCBvdmVyd3JpdGVNb2RlXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVy
LT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAg
ICAgICBtX3NlcnZlci0+cHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVy
d3JpdGVNb2RlKTsKICAgICB9KTsKIH0KQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjbwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEm
IGdldFJlY29yZERhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5
KCksIGdldFJlY29yZERhdGEgPSBnZXRSZWNvcmREYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJl
cXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKICAgICB9KTsKIH0KQEAgLTM2MSw3ICszNjEsNyBA
QCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgYwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFs
bFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRh
ID0gcmVxdWVzdERhdGEuaXNvbGF0ZWRDb3B5KCksIGdldEFsbFJlY29yZHNEYXRhID0gZ2V0QWxs
UmVjb3Jkc0RhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9j
ayk7CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxSZWNvcmRzKHJlcXVlc3REYXRhLCBnZXRBbGxS
ZWNvcmRzRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmdldEFsbFJlY29yZHMoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgp
LCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhLCBjbwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29y
ZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlz
b2xhdGVkQ29weSgpLCBrZXlSYW5nZURhdGEgPSBrZXlSYW5nZURhdGEuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5kZWxl
dGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CkBAIC0zODUs
NyArMzg1LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0
YS5pc29sYXRlZENvcHkoKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5D
dXJzb3IocmVxdWVzdERhdGEsIGluZm8pOwogICAgIH0pOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
SURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEu
aXNvbGF0ZWRDb3B5KCksIGRhdGEgPSBkYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1
ZXN0RGF0YSwgZGF0YSk7CiAgICAgfSk7CiB9CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFu
c2FjdGlvbkluZm8mIGluZm8pCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8g
PSBpbmZvLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vy
dmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwog
ICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWQKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
IHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3NlcnZlci0+bG9jaygpKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2
ZXJMb2NrKTsKICAgICAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9z
ZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTQ0NSw3ICs0
NDUsNyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uUGVuZGlu
Z0Nsb3NlKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xv
c2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtNDUzLDcg
KzQ1Myw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9z
ZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcikKIHsKICAgICBkaXNwYXRjaFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+YWJvcnRPcGVu
QW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJbmRl
eGVkREI6OkNvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2VydmVyIGNvbm5lY3Rpb25DbG9zZWQp
CiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyID0gcmVx
dWVzdElkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbm5lY3Rpb25DbG9zZWRdIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25uZWN0aW9uQ2xvc2VkKTsKICAgICB9KTsKIH0KQEAgLTQ2OSw3ICs0NjksNyBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
KQogewogICAgIGRpc3BhdGNoVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3REYXRhLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+b3BlbkRCUmVxdWVzdENh
bmNlbGxlZChyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CkBAIC00NzcsNyArNDc3LDcgQEAgdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQoY29uc3QgV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGEmIHIKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRh
YmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50
aWZpZXIgPSBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+aWRlbnRpZmllcigpLCByZXF1ZXN0SWRlbnRp
Zmllciwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2VydmVyLT5sb2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3NlcnZlckxvY2spOwogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGlkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4pOwogICAgIH0pOwog
fQpAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxU
aW1lIG1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWNhdGlvblRpbWVdIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXJ2ZXItPmxvY2soKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2VydmVyTG9jayk7CiAgICAgICAgIG1fc2VydmVyLT5jbG9zZUFuZERlbGV0ZURhdGFi
YXNlc01vZGlmaWVkU2luY2UobW9kaWZpY2F0aW9uVGltZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXggOGM1
YmIzYWRhOTFlYzI0MjA2NTFmNTg4NWRiZjVhY2FmNGRhMzVjNC4uNmNiOGY3ZWY5YWZlNTliZjRl
ZTY0YTg0YjQxMTA2OGE4NmZhZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtMTI2LDYgKzEyNiw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW5Qcm9jZXNzSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCA9IG51bGxTdHJpbmcoKSk7CiAKKyAgICBMb2NrIG1f
c2VydmVyTG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI+IG1fc2VydmVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50PiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>