<?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>223776</bug_id>
          
          <creation_ts>2021-03-25 16:56:13 -0700</creation_ts>
          <short_desc>Refactor NetworkSessionCocoa to prepare for per-WebPageProxy sessions</short_desc>
          <delta_ts>2021-03-26 15:06:14 -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>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744001</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-25 16:56:13 -0700</bug_when>
    <thetext>Refactor NetworkSessionCocoa to prepare for per-WebPageProxy sessions

For upcoming work, different WKWebViews sharing one logical NetworkSession will need different NSURLSessions to do their networking.

To prepare for that, this patch will do a no-change-in-behavior refactor that accounts for the ability to &quot;look up the set of NSURLSessions by WebPageProxyIdentifier&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744006</commentid>
    <comment_count>1</comment_count>
      <attachid>424300</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-25 17:01:02 -0700</bug_when>
    <thetext>Created attachment 424300
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744023</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-25 17:43:21 -0700</bug_when>
    <thetext>That makes sense, yay EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744024</commentid>
    <comment_count>3</comment_count>
      <attachid>424308</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-25 17:47:21 -0700</bug_when>
    <thetext>Created attachment 424308
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744073</commentid>
    <comment_count>4</comment_count>
      <attachid>424319</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-25 22:59:47 -0700</bug_when>
    <thetext>Created attachment 424319
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744078</commentid>
    <comment_count>5</comment_count>
      <attachid>424319</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-25 23:25:00 -0700</bug_when>
    <thetext>Comment on attachment 424319
Patch for EWS

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:159
&gt; +    HashMap&lt;WebPageProxyIdentifier, RefPtr&lt;SessionSet&gt;&gt; m_perPageSessionSets;

I think the value could be made a Ref

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1298
&gt; +    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=177394

You may as well remove this comment and the 2 lines below.  We know why we can&apos;t do this, and we typically don&apos;t like having commented out code in WebKit.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1307
&gt; +    SessionSet* sessionSet = webPageProxyID ? m_perPageSessionSets.get(webPageProxyID) : nullptr;

If webPageProxyID can be 0 then it should probably be an Optional&lt;WebPageProxyIdentifier&gt;
If you&apos;re protecting against strange things happening to the HashTable, you should probably use decltype(m_perPageSessionSets.get)::isValidKey

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1319
&gt; +    return sessionSetForPage(pageID).initializeEphemeralStatelessSessionIfNeeded(isNavigatingToAppBoundDomain, *this);

You call pageID webPageProxyID everywhere else in this patch.  Why not here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744275</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-26 12:17:32 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 424319 [details]
&gt; Patch for EWS

All suggestions taken except:

&gt; If webPageProxyID can be 0 then it should probably be an
&gt; Optional&lt;WebPageProxyIdentifier&gt;
&gt; If you&apos;re protecting against strange things happening to the HashTable, you
&gt; should probably use decltype(m_perPageSessionSets.get)::isValidKey

In this patch it can be 0 (and in fact PingLoaders do not necessarily have a proper page context, so they are 0)

In the next patch there will be protection against zero.

ObjectIdentifier&lt;&gt; already has established patterns of &quot;0 means no valid ID&quot;, I don&apos;t think we need to explore a new direction on that this time around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744282</commentid>
    <comment_count>7</comment_count>
      <attachid>424391</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-03-26 12:31:51 -0700</bug_when>
    <thetext>Created attachment 424391
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744344</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-26 15:05:40 -0700</bug_when>
    <thetext>Committed r275116: &lt;https://commits.webkit.org/r275116&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424391.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744345</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-26 15:06:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75903385&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424300</attachid>
            <date>2021-03-25 17:01:02 -0700</date>
            <delta_ts>2021-03-25 17:47:21 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>67894</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODBjYTM1ZDZlOGJmLi45ZmVmNjllNTlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTEgQEAKKzIwMjEtMDMtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIE5ldHdvcmtTZXNzaW9uQ29jb2EgdG8gcHJlcGFyZSBmb3IgcGVy
LVdlYlBhZ2VQcm94eSBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UgcmVmYWN0b3Ip
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6CisJCQorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENo
YW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgCisJ
CSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAKKwkJKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVh
dGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlV2ViU29ja2V0VGFz
ayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRXZWJTb2NrZXRUYXNrKToK
KyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5l
bCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAg
ICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaDoKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKToKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omhz
dHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6
TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OmluaXRpYWxpemVTdGFuZGFyZFNlc3Npb25zSW5TZXQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uU2V0Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZv
clRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3Vu
ZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
bGVhckFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OlNlc3Npb25TZXQ6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRTZXNzaW9ucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWxTZXNzaW9u
U2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFu
ZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdl
YlNvY2tldFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRX
ZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6cmVt
b3ZlV2ViU29ja2V0VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3RO
YW1lcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQWx0ZXJu
YXRpdmVTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKTogRGVsZXRlZC4KKworICAgICAgICAq
IFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzczo6aW5pdGlhbGl6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5u
ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTAzLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25s
b2FkQ29jb2EubW0KaW5kZXggOGNjZTI5NTU0YzBiLi4yMTBmNGQ1MTUxYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQpAQCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3Vt
ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGluc3RlYWQgb2YgdXBkYXRlZERhdGEgb25j
ZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2FkIHRvIFdLRG93bmxvYWQKICAgICAvLyBi
ZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJv
bSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCi0gICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRh
c2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CisgICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUoKS5zZXNzaW9uIGRvd25s
b2FkVGFza1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlm
aWVyID0gW21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKLSAgICBBU1NFUlQoIWNvY29h
U2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5z
KHRhc2tJZGVudGlmaWVyKSk7Ci0gICAgY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93
bmxvYWRzKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwor
ICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUo
KS5kb3dubG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOworICAgIGNvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkUmVzdW1lKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJ
ZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwogICAgIG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRo
VG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKIAogICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyODQ2YzZmNGIzYmYuLjM3MWQwMjJk
N2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwNCwxMCArNDA0LDEwIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShV
UkwmJiB1cmwsIFN0cmluZyBjYWNoZVBhCiAgICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5hZGQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgbV9zZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVTb2NrZXRDaGFubmVsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkKIHsKICAgICBBU1NFUlQoIW1fbmV0d29ya1Nv
Y2tldENoYW5uZWxzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBjaGFubmVs
ID0gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVl
c3QsIHByb3RvY29sLCBpZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBjaGFubmVsID0gTmV0d29y
a1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyLCB3ZWJQYWdlUHJveHlJRCkpCiAgICAgICAgIG1fbmV0d29ya1NvY2tl
dENoYW5uZWxzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNoYW5uZWwpKTsKIH0KIApAQCAtMTA5
MiwxMCArMTA5MiwxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3Rh
Ymxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQogICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25ldHdv
cmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIp
OworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgKnNlcnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDljNTI5ZjkyY2FlMi4uMmVjN2QxMWNhMGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVT
b2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3Rp
bmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKLSAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3Nl
U1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA5NDhiY2NhNDNkYTguLmEwOTg0MTJhNWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02MCw3ICs2MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogICAgIENyZWF0ZVNv
Y2tldFN0cmVhbShVUkwgdXJsLCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNv
Y2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6Oldl
YlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlEKQogCiAgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRh
a2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtNZXRyaWNzKSBT
eW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNX
Q29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAo
KSBBc3luYworICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4pIC0+ICgpIEFzeW5jCiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAKaW5kZXggNTNhYjYwZjNlNjNhLi4xZGVlYWM1MzRlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTU0LDcgKzU0LDcg
QEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMucmVxdWVz
dC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBG
SVhNRTogSnVzdCBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIE5ldHdvcmtEYXRhVGFza0NvY29hIGNv
bnN0cnVjdG9yLgotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Np
b24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBh
cmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBw
YXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJz
LmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHBhcmFtZXRlcnMucGNtRGF0YUNhcnJpZWQpOworICAg
IHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFy
YW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFn
ZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMu
Y29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25s
eSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVz
b3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwYXJhbWV0ZXJz
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBwYXJhbWV0ZXJzLnBjbURhdGFD
YXJyaWVkKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggNzFkNzdkNmM4OGIyLi42MmUzMjUzNjNmMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zODMsNyArMzgz
LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKICAgICBtX2tlcHRBbGl2ZUxvYWRzLnJlbW92ZShsb2FkZXIp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb246OmNy
ZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorc3RkOjp1bmlxdWVfcHRy
PFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAppbmRleCAxYjYxMjczMGMxNDEuLjliYTAwY2YzMmNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTM5LDkgKzEzOSw5IEBAIHB1
YmxpYzoKICAgICBQcmVmZXRjaENhY2hlJiBwcmVmZXRjaENhY2hlKCkgeyByZXR1cm4gbV9wcmVm
ZXRjaENhY2hlOyB9CiAgICAgdm9pZCBjbGVhclByZWZldGNoQ2FjaGUoKSB7IG1fcHJlZmV0Y2hD
YWNoZS5jbGVhcigpOyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRU
YXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViU29j
a2V0VGFzayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRhc2smKSB7IH0KIAogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggYzc3ODg4MTFmMDMyLi5lYjI4NWQxOWFkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBA
IC0zNiw5ICszNiw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVy
LCB3ZWJQYWdlUHJveHlJRCk7CiAgICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7CiAgICAgICAg
IHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0IHRhc2siX3Mp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2LDE4ICs0NiwxOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUo
TmV0d29ya0Nvbm5lYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpOZXR3b3JrU29ja2V0Q2hhbm5lbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBp
ZGVudGlmaWVyKQorTmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrU2Vzc2lvbiog
c2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9u
KG1ha2VXZWFrUHRyKHNlc3Npb24pKQogICAgICwgbV9lcnJvclRpbWVyKCp0aGlzLCAmTmV0d29y
a1NvY2tldENoYW5uZWw6OnNlbmREZWxheWVkRXJyb3IpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlE
KHdlYlBhZ2VQcm94eUlEKQogewogICAgIGlmICghbV9zZXNzaW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3NvY2tldCA9IG1fc2Vzc2lvbi0+Y3JlYXRlV2ViU29ja2V0VGFzaygqdGhpcywg
cmVxdWVzdCwgcHJvdG9jb2wpOworICAgIG1fc29ja2V0ID0gbV9zZXNzaW9uLT5jcmVhdGVXZWJT
b2NrZXRUYXNrKHdlYlBhZ2VQcm94eUlELCAqdGhpcywgcmVxdWVzdCwgcHJvdG9jb2wpOwogICAg
IGlmIChtX3NvY2tldCkgewotICAgICAgICBtX3Nlc3Npb24tPmFkZFdlYlNvY2tldFRhc2soKm1f
c29ja2V0KTsKKyAgICAgICAgbV9zZXNzaW9uLT5hZGRXZWJTb2NrZXRUYXNrKHdlYlBhZ2VQcm94
eUlELCAqbV9zb2NrZXQpOwogICAgICAgICBtX3NvY2tldC0+cmVzdW1lKCk7CiAgICAgfQogfQpA
QCAtNjUsNyArNjYsNyBAQCBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6TmV0d29ya1NvY2tldENoYW5u
ZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lYwogTmV0d29ya1NvY2tldENo
YW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5lbCgpCiB7CiAgICAgaWYgKG1fc2Vzc2lvbikKLSAg
ICAgICAgbV9zZXNzaW9uLT5yZW1vdmVXZWJTb2NrZXRUYXNrKCptX3NvY2tldCk7CisgICAgICAg
IG1fc2Vzc2lvbi0+cmVtb3ZlV2ViU29ja2V0VGFzayhtX3dlYlBhZ2VQcm94eUlELCAqbV9zb2Nr
ZXQpOwogCiAgICAgaWYgKG1fc29ja2V0KQogICAgICAgICBtX3NvY2tldC0+Y2FuY2VsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmgKaW5kZXggNDdlMDY1NzM1YWRjLi5kYTQwNWQ5YTU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJTb2NrZXRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpA
QCAtNTQsOSArNTUsOSBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTb2Nr
ZXRDaGFubmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0
Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpOwogCi0gICAgTmV0d29ya1NvY2tldENoYW5uZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwor
ICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
TmV0d29ya1Nlc3Npb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyKTsKICAgICB+TmV0d29ya1NvY2tldENoYW5uZWwoKTsKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC05
NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRpbWVyOwog
ICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dW5zaWdu
ZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xvc2VJbmZvOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgbV93ZWJQYWdlUHJveHlJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2
MzdjOGVkODk1YmMuLjk4ZDkyZDFiNWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQ0LDEwICs0NCwxMSBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCitXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXIm
IHNlcnZlcikKICAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9z
ZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFn
ZVByb3h5SUQpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCAzOTA2YjQzZWRmYWIuLmIzZGJmNGNjMTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZl
ciYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkg
Y29uc3Q7CkBAIC05OSw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViQ29yZTo6
U1dTZXJ2ZXI+IG1fc2VydmVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
LCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAg
IGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
OWQwZDYzOTUwODlkLi41YjU1OGU3ZTJlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tD
b2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hv
dWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRh
c2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24s
IGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHks
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgcGNtRGF0YUNhcnJpZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29y
a0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQs
IHdlYlBhZ2VQcm94eUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNu
aWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcGNtRGF0YUNhcnJpZWQp
KTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHkpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ks
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25p
ZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBO
U1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYpOwpAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVl
blNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQppbmRleCBkMDllYTAxNWIzMDAuLjMzOWUxMGQyMDJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0yOTEsMTEgKzI5MSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4g
c2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQogICAgIDogTmV0d29ya0RhdGFUYXNr
KHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtl
V2Vha1B0cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lv
bldyYXBwZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCisgICAgLCBtX3Nlc3Npb25X
cmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNz
aW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJ
RCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX2lzRm9y
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKHNlc3Npb24pKQogICAgICwgbV9zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggM2U5YTM5OGUzNzNhLi40ZjYwNTNlOTQw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgX05TSFNU
U1N0b3JhZ2U7CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFza0NvY29hLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nl
c3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKLSAgICB2b2lkIGluaXRpYWxp
emVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
KyAgICBTZXNzaW9uV3JhcHBlciYgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25J
Zk5lZWRlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAKICAgICBjb25zdCBTdHJpbmcmIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udGludWVEaWRS
ZWNlaXZlQ2hhbGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7CiAKLSAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lv
bldyYXBwZXJGb3JEb3dubG9hZHMoKSB7IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0
b3JhZ2U7IH0KKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZFJl
c3VtZSgpIHsgcmV0dXJuIG1fZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7IH0KIAogICAgIGJvb2wgZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Zhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOyB9CiAg
ICAgYm9vbCBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7IH0KQEAgLTk2LDExICs5
NywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBib29sIGhhc0FwcEJvdW5k
U2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICEhbV9hcHBCb3VuZFNlc3Npb247IH0K
KyAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJBcHBCb3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU2Vzc2lvbldy
YXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJG
b3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbjsgfQogICAgIAogICAgIF9OU0hTVFNTdG9yYWdlICpoc3RzU3RvcmFnZSgp
IGNvbnN0OwpAQCAtMTA5LDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsgfQotICAgIFNlc3Npb25X
cmFwcGVyJiBpc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBTZXNzaW9uV3JhcHBlciYgYXBwQm91bmRT
ZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTZXNzaW9uV3Jh
cHBlciYgYXBwQm91bmRTZXNzaW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICNlbmRpZgogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTEyMCw5ICsxMjEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJB
bHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoTlNVUkxT
RVNTSU9OX1dFQlNPQ0tFVCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwotICAgIHZvaWQg
YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVX
ZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOworICAgIHZvaWQgYWRkV2ViU29ja2V0VGFz
ayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJTb2NrZXRUYXNrJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRh
c2smKSBmaW5hbDsKICNlbmRpZgogCiAgICAgc3RydWN0IElzb2xhdGVkU2Vzc2lvbiB7CkBAIC0x
MzMsMTMgKzEzNCwzNCBAQCBwcml2YXRlOgogICAgICAgICBXYWxsVGltZSBsYXN0VXNlZDsKICAg
ICB9OwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlx
dWVfcHRyPElzb2xhdGVkU2Vzc2lvbj4+IG1faXNvbGF0ZWRTZXNzaW9uczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9uPiBtX2FwcEJvdW5kU2Vzc2lvbjsKKyAgICBzdHJ1Y3Qg
U2Vzc2lvblNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlc3Npb25TZXQ+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBSZWY8U2Vzc2lvblNldD4gY3JlYXRlKCkgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vzc2lvblNldCk7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisgICAgICAgIFNlc3Npb25X
cmFwcGVyJiBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisKKyAgICAgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPElzb2xh
dGVkU2Vzc2lvbj4+IGlzb2xhdGVkU2Vzc2lvbnM7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29sYXRlZFNlc3Npb24+IGFwcEJvdW5kU2Vzc2lvbjsKIAotICAgIFNlc3Npb25XcmFwcGVyIG1f
c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKLSAgICBTZXNzaW9uV3JhcHBlciBtX3Nlc3Np
b25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7Ci0gICAgU2Vzc2lvbldyYXBwZXIgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNzaW9uV2l0aG91dENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBlcGhlbWVyYWxTdGF0ZWxl
c3NTZXNzaW9uOwogCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2Vzc2lvblNldCgpID0gZGVmYXVs
dDsKKyAgICB9OworCisgICAgUmVmPFNlc3Npb25TZXQ+IG1fZGVmYXVsdFNlc3Npb25TZXQ7Cisg
ICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lvblNldD4+IG1f
cGVyUGFnZVNlc3Npb25TZXRzOworCisgICAgdm9pZCBpbml0aWFsaXplU3RhbmRhcmRTZXNzaW9u
c0luU2V0KFNlc3Npb25TZXQmLCBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICopOworICAgIFNl
c3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAg
IGNvbnN0IFNlc3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbFNlc3Npb25TZXQoU2Vzc2lv
blNldCYpOworICAgIAogICAgIFN0cmluZyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CmluZGV4IDZhMmRmMjcwNTQwMi4uZWNkNWIzNDEwMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBA
IC0xMDYxLDEwICsxMDYxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
X05TSFNUU1N0b3JhZ2UgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdlKCkgY29uc3QK
IHsKICNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKLSAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24u
Z2V0KCkuY29uZmlndXJhdGlvbjsKKyAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uID0gbV9kZWZhdWx0U2Vzc2lvblNldC0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIHJlc3BvbmRzVG9TZWxlY3RvciBjaGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMx
IGlzIGluIGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAgICAgaWYgKFtjb25maWd1cmF0
aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCi0gICAgICAg
IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uLl9oc3RzU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uX2hz
dHNTdG9yYWdlOwogI2VuZGlmCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTExNjAsNiArMTE2MCw3
IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAoTmV0d29ya1Nlc3Npb25Db2Nv
YSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiAKIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdv
cmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKKyAgICAsIG1fZGVmYXVsdFNlc3Npb25TZXQo
U2Vzc2lvblNldDo6Y3JlYXRlKCkpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihw
YXJhbWV0ZXJzLmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKQogICAgICwgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
cGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCkBAIC0xMjcx
LDE1ICsxMjcyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAgICAgY29va2llU3Rv
cmFnZS5nZXQoKS5fb3ZlcnJpZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5ID0gWUVTOwogI2Vu
ZGlmCiAKLSAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShjb25m
aWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKLSAgICBMT0coTmV0d29ya1Nlc3Npb24s
ICJDcmVhdGVkIE5ldHdvcmtTZXNzaW9uIHdpdGggY29va2llQWNjZXB0UG9saWN5ICVsdSIsIGNv
bmZpZ3VyYXRpb24uSFRUUENvb2tpZVN0b3JhZ2UuY29va2llQWNjZXB0UG9saWN5KTsKLQotICAg
IGNvbmZpZ3VyYXRpb24uVVJMQ3JlZGVudGlhbFN0b3JhZ2UgPSBuaWw7Ci0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzczOTQKLSAgICAvLyBj
b25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gbmlsOwotICAgIC8vIGNvbmZpZ3VyYXRp
b24uSFRUUENvb2tpZUFjY2VwdFBvbGljeSA9IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVy
OwotCi0gICAgbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoY29u
ZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKKyAgICBpbml0aWFsaXplU3Rh
bmRhcmRTZXNzaW9uc0luU2V0KG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCksIGNvbmZpZ3VyYXRp
b24pOwogCiAgICAgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCA9IHBhcmFt
ZXRlcnMuZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgbV9hbGxMb2Fk
c0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nID0gcGFyYW1l
dGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0
aW5nOwpAQCAtMTI5NiwxMCArMTI4OSw0MCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3Jr
U2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogCiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjp+TmV0d29ya1Nlc3Npb25Db2NvYSgpID0gZGVmYXVsdDsKIAot
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vz
c2lvbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKQordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplU3RhbmRhcmRTZXNzaW9u
c0luU2V0KFNlc3Npb25TZXQmIHNlc3Npb25TZXQsIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24pCit7CisgICAgc2Vzc2lvblNldC5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7Cisg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQ3JlYXRlZCBOZXR3b3JrU2Vzc2lvbiB3aXRoIGNvb2tp
ZUFjY2VwdFBvbGljeSAlbHUiLCBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlLmNvb2tp
ZUFjY2VwdFBvbGljeSk7CisKKyAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdl
ID0gbmlsOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3Mzk0CisgICAgLy8gY29uZmlndXJhdGlvbi5IVFRQQ29va2llU3RvcmFnZSA9IG5p
bDsKKyAgICAvLyBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKworICAgIHNlc3Npb25TZXQuc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObyk7Cit9CisKK05ldHdvcmtTZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQmIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQpCit7CisgICAgYXV0byBzZXNzaW9uU2V0ID0gbV9wZXJQYWdlU2Vzc2lv
blNldHMuZ2V0KHdlYlBhZ2VQcm94eUlEKTsKKyAgICByZXR1cm4gc2Vzc2lvblNldCA/ICpzZXNz
aW9uU2V0IDogbV9kZWZhdWx0U2Vzc2lvblNldC5nZXQoKTsKK30KKworY29uc3QgTmV0d29ya1Nl
c3Npb25Db2NvYTo6U2Vzc2lvblNldCYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvblNldEZv
clBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgY29uc3QKK3sKKyAg
ICBhdXRvIHNlc3Npb25TZXQgPSBtX3BlclBhZ2VTZXNzaW9uU2V0cy5nZXQod2ViUGFnZVByb3h5
SUQpOworICAgIHJldHVybiBzZXNzaW9uU2V0ID8gKnNlc3Npb25TZXQgOiBtX2RlZmF1bHRTZXNz
aW9uU2V0LmdldCgpOworfQorCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICByZXR1cm4gc2Vzc2lvblNldEZvclBhZ2UocGFnZUlE
KS5pbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sICp0aGlzKTsKK30KKworU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNz
aW9uSWZOZWVkZWQoTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbikKIHsKICAgICBOU1VSTFNl
c3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW05TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gZXBoZW1lcmFsU2Vzc2lvbkNvbmZpZ3VyYXRpb25dOwotICAgIE5TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gKmV4aXN0aW5nQ29uZmlndXJhdGlvbiA9IG1fc2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CisgICAgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbiAqZXhpc3RpbmdDb25maWd1cmF0aW9uID0gc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAKICAgICBjb25m
aWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lOZXZlcjsKICAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdlID0gbmlsOwpA
QCAtMTMxOCwxMSArMTM0MSwxNSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxp
emVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdQogICAgICAgICBj
b25maWd1cmF0aW9uLl9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllciA9IGV4aXN0aW5nQ29uZmln
dXJhdGlvbi5fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIG1fZXBo
ZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9u
LmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisKKyAgICByZXR1cm4gZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKIH0KIAotU2Vz
c2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK1Nlc3Np
b25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CisgICAgYXV0byYgc2Vzc2lvblNldCA9
IHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKTsKKyAgICAKICAgICBhdXRvIHNob3Vs
ZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA/ICpp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllczsKICAgICBpZiAoUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG5ldHdv
cmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkgewogICAgICAgICBpZiAoaXNQ
YXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKGNvbm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSkp
CkBAIC0xMzMyLDYyICsxMzU5LDg0IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAg
ICAgYXV0byBmaXJzdFBhcnR5ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAgICAgaWYgKHN0b3JhZ2VTZXNzaW9uLT5zaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGZpcnN0
UGFydHkpKQotICAgICAgICAgICAgcmV0dXJuIGlzb2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgZmlyc3RQYXJ0eSwgc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQpOworICAg
ICAgICAgICAgcmV0dXJuIHNlc3Npb25TZXQuaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBmaXJzdFBhcnR5LCBzaG91bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCwgKnRoaXMp
OwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChzaG91bGRCZUNvbnNpZGVyZWRB
cHBCb3VuZCA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQotICAgICAgICByZXR1
cm4gYXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICAgICAgcmV0
dXJuIGFwcEJvdW5kU2Vzc2lvbih3ZWJQYWdlUHJveHlJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAg
ICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgotICAgICAgICBy
ZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICByZXR1cm4gc2Vz
c2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2U7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6
Ci0gICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CisgICAg
ICAgIHJldHVybiBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vzc2lvbldpdGhv
dXRDcmVkZW50aWFsU3RvcmFnZTsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M6Ci0gICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCi0gICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3Rh
dGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pOwotICAgICAgICBy
ZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICByZXR1cm4gaW5pdGlh
bGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZCh3ZWJQYWdlUHJveHlJRCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKICAgICB9CiB9CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCi1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6YXBw
Qm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KQorU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFwcEJv
dW5kU2Vzc2lvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKIHsKLSAg
ICBpZiAoIW1fYXBwQm91bmRTZXNzaW9uKSB7Ci0gICAgICAgIG1fYXBwQm91bmRTZXNzaW9uID0g
bWFrZVVuaXF1ZTxJc29sYXRlZFNlc3Npb24+KCk7Ci0gICAgICAgIG1fYXBwQm91bmRTZXNzaW9u
LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOjpZZXMpOwotICAgICAgICBtX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMp
OworICAgIGF1dG8mIHNlc3Npb25TZXQgPSBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJ
RCk7CisgICAgCisgICAgaWYgKCFzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbikgeworICAgICAg
ICBzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9u
PigpOworICAgICAgICBzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKHNlc3Npb25TZXQuc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVz
KTsKKyAgICAgICAgc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3Jl
ZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShzZXNzaW9uU2V0LnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6WWVzKTsKICAgICB9CiAKICAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0
byBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKICAgICAgICAg
c3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9y
YWdlLiIpOwotICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25TZXQuYXBwQm91
bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOwogICAgICAgICBjYXNlIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKICAgICAgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5nIGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBj
cmVkZW50aWFsIHN0b3JhZ2UuIik7Ci0gICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Np
b24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4g
c2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3Jh
Z2U7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVt
ZXJhbFN0YXRlbGVzczoKLSAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNz
aW9uLnNlc3Npb24pCi0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Olllcyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICAgICAgcmV0dXJuIGlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQod2ViUGFnZVByb3h5SUQs
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpOwogICAgICAgICB9CiAgICAgfSAoc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOwogfQor
Citib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0Cit7
CisgICAgaWYgKCEhbV9kZWZhdWx0U2Vzc2lvblNldC0+YXBwQm91bmRTZXNzaW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNz
aW9uU2V0cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoISFzZXNzaW9uU2V0LT5hcHBCb3VuZFNl
c3Npb24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQXBwQm91bmRTZXNz
aW9uKCkKK3sKKyAgICBtX2RlZmF1bHRTZXNzaW9uU2V0LT5hcHBCb3VuZFNlc3Npb24gPSBudWxs
cHRyOworICAgIGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRzLnZh
bHVlcygpKQorICAgICAgICBzZXNzaW9uU2V0LT5hcHBCb3VuZFNlc3Npb24gPSBudWxscHRyOwor
fQogI2VuZGlmCiAKLVNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRl
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21h
aW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9u
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewotICAgIGF1dG8mIGVudHJ5ID0g
bV9pc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9tYWluLCBbdGhpcywgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbl0geworICAgIHJldHVybiBzZXNzaW9uU2V0Rm9yUGFnZSh3
ZWJQYWdlUHJveHlJRCkuaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBm
aXJzdFBhcnR5RG9tYWluLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAqdGhpcyk7Cit9
CisKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0Ojppc29s
YXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlE
b21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24pCit7CisgICAgYXV0byYgZW50cnkg
PSBpc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9tYWluLCBbdGhpcywgJnNlc3Np
b24sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dIHsKICAgICAgICAgYXV0byBuZXdFbnRy
eSA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOwotICAgICAgICBuZXdFbnRyeS0+c2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKG1fc2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKLSAgICAgICAgbmV3RW50cnktPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgbmV3RW50cnkt
PnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShzZXNzaW9uV2l0aENyZWRl
bnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisgICAgICAgIG5ld0VudHJ5LT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdl
LmluaXRpYWxpemUoc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgp
LmNvbmZpZ3VyYXRpb24sIHNlc3Npb24sIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIHJldHVy
biBuZXdFbnRyeTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTE0MDIsNzUgKzE0NTEs
ODIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vzc2lv
bihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1AKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIlVzaW5nIGlzb2xhdGVkIE5TVVJMU2Vzc2lvbiB3aXRob3V0IGNyZWRlbnRpYWwgc3Rv
cmFnZS4iKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeS0+c2Vzc2lvbldpdGhvdXRDcmVkZW50
aWFsU3RvcmFnZTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6RXBoZW1lcmFsU3RhdGVsZXNzOgotICAgICAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb24uc2Vzc2lvbikKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzU2Vzc2lvbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICAgICAg
ICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CisgICAgICAgICAgICByZXR1
cm4gaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0gKHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KTsKLSAgICAKLSAgICBpZiAobV9pc29sYXRlZFNlc3Npb25zLnNpemUo
KSA+IG1heE51bWJlck9mSXNvbGF0ZWRTZXNzaW9ucykgeworCisgICAgaWYgKGlzb2xhdGVkU2Vz
c2lvbnMuc2l6ZSgpID4gbWF4TnVtYmVyT2ZJc29sYXRlZFNlc3Npb25zKSB7CiAgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGtleVRvUmVtb3ZlOwogICAgICAgICBhdXRvIG9sZGVz
dFRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBt
X2lzb2xhdGVkU2Vzc2lvbnMua2V5cygpKSB7Ci0gICAgICAgICAgICBhdXRvIHRpbWVzdGFtcCA9
IG1faXNvbGF0ZWRTZXNzaW9ucy5nZXQoa2V5KS0+bGFzdFVzZWQ7CisgICAgICAgIGZvciAoYXV0
byYga2V5IDogaXNvbGF0ZWRTZXNzaW9ucy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gdGlt
ZXN0YW1wID0gaXNvbGF0ZWRTZXNzaW9ucy5nZXQoa2V5KS0+bGFzdFVzZWQ7CiAgICAgICAgICAg
ICBpZiAodGltZXN0YW1wIDwgb2xkZXN0VGltZXN0YW1wKSB7CiAgICAgICAgICAgICAgICAgb2xk
ZXN0VGltZXN0YW1wID0gdGltZXN0YW1wOwogICAgICAgICAgICAgICAgIGtleVRvUmVtb3ZlID0g
a2V5OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIkFib3V0IHRvIHJlbW92ZSBpc29sYXRlZCBOU1VSTFNlc3Npb24uIik7Ci0gICAgICAgIG1f
aXNvbGF0ZWRTZXNzaW9ucy5yZW1vdmUoa2V5VG9SZW1vdmUpOworICAgICAgICBpc29sYXRlZFNl
c3Npb25zLnJlbW92ZShrZXlUb1JlbW92ZSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlQo
bV9pc29sYXRlZFNlc3Npb25zLnNpemUoKSA8PSBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMp
OworICAgIFJFTEVBU0VfQVNTRVJUKGlzb2xhdGVkU2Vzc2lvbnMuc2l6ZSgpIDw9IG1heE51bWJl
ck9mSXNvbGF0ZWRTZXNzaW9ucyk7CiAKICAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7CiB9CiAK
IGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc29s
YXRlZFNlc3Npb25zLmNvbnRhaW5zKGRvbWFpbik7CisgICAgaWYgKG1fZGVmYXVsdFNlc3Npb25T
ZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY29udGFpbnMoZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY29udGFp
bnMoZG9tYWluKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRl
ZFNlc3Npb25zKCkKIHsKLSAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKLX0KLQotI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLXZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xl
YXJBcHBCb3VuZFNlc3Npb24oKQotewotICAgIG1fYXBwQm91bmRTZXNzaW9uID0gbnVsbHB0cjsK
KyAgICBtX2RlZmF1bHRTZXNzaW9uU2V0LT5pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7CisgICAg
Zm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFsdWVzKCkpCisg
ICAgICAgIHNlc3Npb25TZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKIH0KLSNlbmRpZgog
Ci12b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQordm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsU2Vzc2lvblNldChTZXNzaW9u
U2V0JiBzZXNzaW9uU2V0KQogewotICAgIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2Fu
Y2VsKCk7Ci0KLSAgICBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52
YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgW21fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgIFttX2VwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb24uc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKLSAgICBbbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07Ci0gICAgW21f
c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0
ZWRdOwotICAgIFttX2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uZGVsZWdhdGUgc2Vzc2lvbklu
dmFsaWRhdGVkXTsKLQotICAgIGZvciAoYXV0byYgc2Vzc2lvbiA6IG1faXNvbGF0ZWRTZXNzaW9u
cy52YWx1ZXMoKSkgeworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Cisg
ICAgW3Nlc3Npb25TZXQuZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5zZXNzaW9uIGludmFsaWRh
dGVBbmRDYW5jZWxdOworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07Cisg
ICAgW3Nlc3Npb25TZXQuZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5kZWxlZ2F0ZSBzZXNzaW9u
SW52YWxpZGF0ZWRdOworCisgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogc2Vzc2lvblNldC5pc29s
YXRlZFNlc3Npb25zLnZhbHVlcygpKSB7CiAgICAgICAgIFtzZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgICAgIFtz
ZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZh
bGlkYXRlZF07CiAgICAgICAgIFtzZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9y
YWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgICAgIFtzZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CiAgICAgfQotICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOworICAgIHNlc3Npb25TZXQu
aXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwogCi0gICAgaWYgKG1fYXBwQm91bmRTZXNzaW9uKSB7
Ci0gICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgICAgICBbbV9hcHBCb3VuZFNlc3Np
b24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRh
dGVkXTsKLSAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRp
YWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgICAgIFttX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNz
aW9uSW52YWxpZGF0ZWRdOworICAgIGlmIChzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbikgewor
ICAgICAgICBbc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW3Nlc3Npb25T
ZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRl
IHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgICAgIFtzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lv
bi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRD
YW5jZWxdOworICAgICAgICBbc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRo
b3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9
CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCit7
CisgICAgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKTsKKworICAgIGludmFs
aWRhdGVBbmRDYW5jZWxTZXNzaW9uU2V0KG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCkpOworICAg
IGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRzLnZhbHVlcygpKQor
ICAgICAgICBpbnZhbGlkYXRlQW5kQ2FuY2VsU2Vzc2lvblNldCgqc2Vzc2lvblNldCk7Cit9CisK
IHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscygpCiB7CiAjaWYgIVVT
RShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCkBAIC0xNTc5LDcgKzE2
MzUsNyBAQCBETUZXZWJzaXRlUG9saWN5TW9uaXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2
aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3IoKQogfQogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05f
V0VCU09DS0VUKQotc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9u
Q29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmIGNoYW5uZWws
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgQVNT
RVJUKCFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6
U2VjV2ViU29ja2V0UHJvdG9jb2wpKTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJldGFpblB0cihy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RV
cGRhdGVIVFRQQm9keSkpOwpAQCAtMTU5MSwyMCArMTY0NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhO
ZXR3b3JrUwogICAgIC8vIHJkYXI6Ly9wcm9ibGVtLzY4MDU3MDMxOiBleHBsaWNpdGx5IGRpc2Fi
bGUgc25pZmZpbmcgZm9yIFdlYlNvY2tldCBoYW5kc2hha2VzLgogICAgIFtuc1JlcXVlc3QgX3Nl
dFByb3BlcnR5OkBOTyBmb3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0
eVNob3VsZFNuaWZmXTsKIAotICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNr
PiB0YXNrID0gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIHdlYlNvY2tl
dFRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCldOworICAgIFJldGFpblB0cjxOU1VSTFNl
c3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW3Nlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94
eUlEKS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29ja2V0VGFza1dp
dGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29j
a2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Np
b25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQordm9pZCBOZXR3
b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYlNvY2tldFRhc2smIHRhc2spCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoIW1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5j
b250YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5hZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNr
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQp
LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAuY29udGFp
bnModGFzay5pZGVudGlmaWVyKCkpKTsKKyAgICBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJv
eHlJRCkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5h
ZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNrKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OnJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViU29ja2V0VGFzayYgdGFzaykKIHsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAu
Y29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAucmVtb3ZlKHRhc2suaWRlbnRpZmllcigpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5jb250YWlucyh0
YXNrLmlkZW50aWZpZXIoKSkpOworICAgIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlE
KS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNrTWFwLnJlbW92
ZSh0YXNrLmlkZW50aWZpZXIoKSk7CiB9CiAKICNlbmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9X
RUJTT0NLRVQpCkBAIC0xNjEzLDcgKzE2NjksNyBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdgog
ewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKLSAgICBfTlNIVFRQQWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFn
ZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX2Rl
ZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0
KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CiAgICAgTlNBcnJh
eTxfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkgKj4gKmVudHJpZXMgPSBbc3RvcmFnZSBI
VFRQU2VydmljZUVudHJpZXNXaXRoRmlsdGVyOl9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzRmls
dGVyLmVtcHR5RmlsdGVyXTsKIAogICAgIGZvciAoX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVu
dHJ5KiBlbnRyeSBpbiBlbnRyaWVzKSB7CkBAIC0xNjI5LDcgKzE2ODUsNyBAQCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFtZXNX
aXRoQWx0ZXJuYXRpdgogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVBbHRlcm5hdGl2
ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKIHsKICNp
ZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIF9OU0hUVFBBbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9y
YWdlOworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1f
ZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5n
ZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKICAgICBmb3Ig
KGF1dG8mIGhvc3QgOiBob3N0cykKICAgICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0
aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46aG9zdF07CiAjZWxzZQpAQCAt
MTY0MCw3ICsxNjk2LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVBbHRlcm5h
dGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHIKIHZvaWQgTmV0d29ya1Nl
c3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBfTlNI
VFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0
b3JhZ2UgPSBtX2RlZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7
CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gbW9kaWZpZWRTaW5jZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnNlY29uZHMoKTsKICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVX
aXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAgICAgW3N0b3JhZ2UgcmVt
b3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOmRhdGVdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAppbmRleCBkYmJlMWJmMDkw
MzUuLmIyMDkxZTMzZjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxp
YXJ5UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlvbi5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAKQEAgLTkwLDYgKzkxLDcgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplKGNv
bnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMKICAgICAvLyBJbiBX
ZWJLaXQyLCBvbmx5IHRoZSBVSSBwcm9jZXNzIHNob3VsZCBldmVyIGJlIGdlbmVyYXRpbmcgY2Vy
dGFpbiBpZGVudGlmaWVycy4KICAgICBQQUw6OlNlc3Npb25JRDo6ZW5hYmxlR2VuZXJhdGlvblBy
b3RlY3Rpb24oKTsKICAgICBDb250ZW50V29ybGRJZGVudGlmaWVyOjplbmFibGVHZW5lcmF0aW9u
UHJvdGVjdGlvbigpOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6OmVuYWJsZUdlbmVyYXRp
b25Qcm90ZWN0aW9uKCk7CiAKICAgICBtX2Nvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZUNsaWVudENvbm5lY3Rpb24ocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciwgKnRo
aXMpOwogICAgIGluaXRpYWxpemVDb25uZWN0aW9uKG1fY29ubmVjdGlvbi5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDQ1ZWY1ZDMxMTU2Ny4uOTQyNTE0ODYxNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDIs
OSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotUmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkKK1JlZjxXZWJTb2Nr
ZXRDaGFubmVsPiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5l
bChkb2N1bWVudCwgY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0
Q2hhbm5lbCh3ZWJQYWdlUHJveHlJRCwgZG9jdW1lbnQsIGNsaWVudCkpOwogfQogCiB2b2lkIFdl
YlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9w
Q29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKQEAgLTY4LDExICs2OCwxMiBA
QCBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvYwogICAgIH0gfTsKIH0KIAotV2ViU29ja2V0Q2hhbm5l
bDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxD
bGllbnQmIGNsaWVudCkKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRy
KGRvY3VtZW50KSkKICAgICAsIG1fY2xpZW50KG1ha2VXZWFrUHRyKGNsaWVudCkpCiAgICAgLCBt
X21lc3NhZ2VRdWV1ZShjcmVhdGVNZXNzYWdlUXVldWUoZG9jdW1lbnQsICp0aGlzKSkKICAgICAs
IG1faW5zcGVjdG9yKGRvY3VtZW50KQorICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJv
eHlJRCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJTb2NrZXRDaGFubmVsTWFu
YWdlcigpLmFkZENoYW5uZWwoKnRoaXMpOwogfQpAQCAtMTE2LDcgKzExNyw3IEBAIFdlYlNvY2tl
dENoYW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBV
UkwmIHVybCwgY29uc3QKIAogICAgIG1faW5zcGVjdG9yLmRpZENyZWF0ZVdlYlNvY2tldChtX2Rv
Y3VtZW50LmdldCgpLCB1cmwpOwogICAgIG1fdXJsID0gcmVxdWVzdC0+dXJsKCk7Ci0gICAgTWVz
c2FnZVNlbmRlcjo6c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNyZWF0ZVNvY2tldENoYW5uZWwgeyAqcmVxdWVzdCwgcHJvdG9jb2wsIG1faWRlbnRpZmllciB9
KTsKKyAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0Q2hhbm5lbCB7ICpyZXF1ZXN0LCBwcm90b2NvbCwgbV9p
ZGVudGlmaWVyLCBtX3dlYlBhZ2VQcm94eUlEIH0pOwogICAgIHJldHVybiBDb25uZWN0U3RhdHVz
OjpPSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDAxM2Y2OGEyMzk0ZS4uMDk0YmFmNjFmNTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU2Vu
ZFF1ZXVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTQ1LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbCwgcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5l
bD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFdl
YkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCYpOworICAg
IHN0YXRpYyBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCYp
OwogICAgIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNTYsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CiAKIHBy
aXZhdGU6Ci0gICAgV2ViU29ja2V0Q2hhbm5lbChXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWxDbGllbnQmKTsKKyAgICBXZWJTb2NrZXRDaGFubmVsKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbENsaWVudCYpOwogCiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWUgY3Jl
YXRlTWVzc2FnZVF1ZXVlKFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViU29ja2V0Q2hhbm5lbCYpOwog
CkBAIC0xMTYsNiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsSW5zcGVjdG9yIG1faW5zcGVjdG9yOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X2hhbmRzaGFrZVJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX2hhbmRz
aGFrZVJlc3BvbnNlOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJ
RDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCmluZGV4IGM1M2ZjZDZk
NDcxMS4uMjA5MWRkOTM5MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxT
b2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1I
YW5kbGUoY29uc3QgVVJMJiB1CiAKIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4g
V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVdlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIFdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50KTsKKyAgICByZXR1cm4gV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQsIGRvY3VtZW50LCBjbGllbnQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCmluZGV4IDFiMzU1MmRhMzY0MC4uOTBj
ODI5OTI2NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTI1LDE2ICsyNSwyNSBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NvY2tldFByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTb2Nr
ZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNv
Y2tldFByb3ZpZGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcih3ZWJQYWdlUHJveHlJ
RCkpOyB9CisgICAgV2ViU29ja2V0UHJvdmlkZXIoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJRCkKKyAgICAgICAgOiBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQor
ICAgIHsKKyAgICB9CisKICAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgV2ViQ29yZTo6U3RvcmFn
ZVNlc3Npb25Qcm92aWRlciopIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlV2ViU29ja2V0Q2hhbm5lbChXZWJDb3JlOjpEb2N1bWVu
dCYsIFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnQmKSBmaW5hbDsKICAgICB2aXJ0dWFs
IH5XZWJTb2NrZXRQcm92aWRlcigpIHsgfQorCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmYuLjUyZDdiZTAxMTUwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlz
aENvbm5lY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV93ZWJQYWdlUHJveHlJRCwgbV9yZWdpc3RyYWJs
ZURvbWFpbiB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlckNvbnQKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6Z2V0T3JD
cmVhdGUobV9wYWdlR3JvdXBJRCk7CiAjZW5kaWYKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5zb2Nr
ZXRQcm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5zb2NrZXRQcm92aWRlciA9IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUobV93ZWJQ
YWdlUHJveHlJRCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxpYldlYlJUQ1Byb3ZpZGVyID0gbWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29y
a2VyTGliV2ViUlRDUHJvdmlkZXI+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg0ZDA3ODgwMjc5ZC4uM2NlNDY4ODE2YWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTI2LDcgKzUy
Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdl
Q29uZmlndXJhdGlvbigKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklE
KCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSwKLSAgICAg
ICAgV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJTb2NrZXRQcm92aWRl
cjo6Y3JlYXRlKHBhcmFtZXRlcnMud2ViUGFnZVByb3h5SWRlbnRpZmllciksCiAgICAgICAgIGNy
ZWF0ZUxpYldlYlJUQ1Byb3ZpZGVyKCp0aGlzKSwKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSwKICAgICAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXIsCg==
</data>
<flag name="commit-queue"
          id="443936"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424308</attachid>
            <date>2021-03-25 17:47:21 -0700</date>
            <delta_ts>2021-03-25 22:59:47 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>69738</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODBjYTM1ZDZlOGJmLi45ZmVmNjllNTlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTEgQEAKKzIwMjEtMDMtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIE5ldHdvcmtTZXNzaW9uQ29jb2EgdG8gcHJlcGFyZSBmb3IgcGVy
LVdlYlBhZ2VQcm94eSBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UgcmVmYWN0b3Ip
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6CisJCQorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENo
YW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgCisJ
CSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAKKwkJKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVh
dGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlV2ViU29ja2V0VGFz
ayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRXZWJTb2NrZXRUYXNrKToK
KyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5l
bCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAg
ICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaDoKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKToKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omhz
dHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6
TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OmluaXRpYWxpemVTdGFuZGFyZFNlc3Npb25zSW5TZXQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uU2V0Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZv
clRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3Vu
ZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
bGVhckFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OlNlc3Npb25TZXQ6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRTZXNzaW9ucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWxTZXNzaW9u
U2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFu
ZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdl
YlNvY2tldFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRX
ZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6cmVt
b3ZlV2ViU29ja2V0VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3RO
YW1lcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQWx0ZXJu
YXRpdmVTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKTogRGVsZXRlZC4KKworICAgICAgICAq
IFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzczo6aW5pdGlhbGl6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5u
ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTAzLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25s
b2FkQ29jb2EubW0KaW5kZXggOGNjZTI5NTU0YzBiLi4yMTBmNGQ1MTUxYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQpAQCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3Vt
ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGluc3RlYWQgb2YgdXBkYXRlZERhdGEgb25j
ZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2FkIHRvIFdLRG93bmxvYWQKICAgICAvLyBi
ZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJv
bSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCi0gICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRh
c2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CisgICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUoKS5zZXNzaW9uIGRvd25s
b2FkVGFza1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlm
aWVyID0gW21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKLSAgICBBU1NFUlQoIWNvY29h
U2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5z
KHRhc2tJZGVudGlmaWVyKSk7Ci0gICAgY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93
bmxvYWRzKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwor
ICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUo
KS5kb3dubG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOworICAgIGNvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkUmVzdW1lKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJ
ZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwogICAgIG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRo
VG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKIAogICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyODQ2YzZmNGIzYmYuLjM3MWQwMjJk
N2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwNCwxMCArNDA0LDEwIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShV
UkwmJiB1cmwsIFN0cmluZyBjYWNoZVBhCiAgICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5hZGQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgbV9zZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVTb2NrZXRDaGFubmVsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkKIHsKICAgICBBU1NFUlQoIW1fbmV0d29ya1Nv
Y2tldENoYW5uZWxzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBjaGFubmVs
ID0gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVl
c3QsIHByb3RvY29sLCBpZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBjaGFubmVsID0gTmV0d29y
a1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyLCB3ZWJQYWdlUHJveHlJRCkpCiAgICAgICAgIG1fbmV0d29ya1NvY2tl
dENoYW5uZWxzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNoYW5uZWwpKTsKIH0KIApAQCAtMTA5
MiwxMCArMTA5MiwxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3Rh
Ymxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQogICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25ldHdv
cmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIp
OworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgKnNlcnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDljNTI5ZjkyY2FlMi4uMmVjN2QxMWNhMGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVT
b2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3Rp
bmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKLSAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3Nl
U1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA5NDhiY2NhNDNkYTguLmEwOTg0MTJhNWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02MCw3ICs2MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogICAgIENyZWF0ZVNv
Y2tldFN0cmVhbShVUkwgdXJsLCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNv
Y2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6Oldl
YlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlEKQogCiAgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRh
a2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtNZXRyaWNzKSBT
eW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNX
Q29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAo
KSBBc3luYworICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4pIC0+ICgpIEFzeW5jCiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAKaW5kZXggNTNhYjYwZjNlNjNhLi4xZGVlYWM1MzRlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTU0LDcgKzU0LDcg
QEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMucmVxdWVz
dC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBG
SVhNRTogSnVzdCBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIE5ldHdvcmtEYXRhVGFza0NvY29hIGNv
bnN0cnVjdG9yLgotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Np
b24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBh
cmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBw
YXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJz
LmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHBhcmFtZXRlcnMucGNtRGF0YUNhcnJpZWQpOworICAg
IHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFy
YW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFn
ZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMu
Y29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25s
eSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVz
b3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwYXJhbWV0ZXJz
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBwYXJhbWV0ZXJzLnBjbURhdGFD
YXJyaWVkKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggNzFkNzdkNmM4OGIyLi42MmUzMjUzNjNmMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zODMsNyArMzgz
LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKICAgICBtX2tlcHRBbGl2ZUxvYWRzLnJlbW92ZShsb2FkZXIp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb246OmNy
ZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorc3RkOjp1bmlxdWVfcHRy
PFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAppbmRleCAxYjYxMjczMGMxNDEuLjliYTAwY2YzMmNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTM5LDkgKzEzOSw5IEBAIHB1
YmxpYzoKICAgICBQcmVmZXRjaENhY2hlJiBwcmVmZXRjaENhY2hlKCkgeyByZXR1cm4gbV9wcmVm
ZXRjaENhY2hlOyB9CiAgICAgdm9pZCBjbGVhclByZWZldGNoQ2FjaGUoKSB7IG1fcHJlZmV0Y2hD
YWNoZS5jbGVhcigpOyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRU
YXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViU29j
a2V0VGFzayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRhc2smKSB7IH0KIAogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggYzc3ODg4MTFmMDMyLi5lYjI4NWQxOWFkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBA
IC0zNiw5ICszNiw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVy
LCB3ZWJQYWdlUHJveHlJRCk7CiAgICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7CiAgICAgICAg
IHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0IHRhc2siX3Mp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2LDE4ICs0NiwxOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUo
TmV0d29ya0Nvbm5lYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpOZXR3b3JrU29ja2V0Q2hhbm5lbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBp
ZGVudGlmaWVyKQorTmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrU2Vzc2lvbiog
c2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9u
KG1ha2VXZWFrUHRyKHNlc3Npb24pKQogICAgICwgbV9lcnJvclRpbWVyKCp0aGlzLCAmTmV0d29y
a1NvY2tldENoYW5uZWw6OnNlbmREZWxheWVkRXJyb3IpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlE
KHdlYlBhZ2VQcm94eUlEKQogewogICAgIGlmICghbV9zZXNzaW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3NvY2tldCA9IG1fc2Vzc2lvbi0+Y3JlYXRlV2ViU29ja2V0VGFzaygqdGhpcywg
cmVxdWVzdCwgcHJvdG9jb2wpOworICAgIG1fc29ja2V0ID0gbV9zZXNzaW9uLT5jcmVhdGVXZWJT
b2NrZXRUYXNrKHdlYlBhZ2VQcm94eUlELCAqdGhpcywgcmVxdWVzdCwgcHJvdG9jb2wpOwogICAg
IGlmIChtX3NvY2tldCkgewotICAgICAgICBtX3Nlc3Npb24tPmFkZFdlYlNvY2tldFRhc2soKm1f
c29ja2V0KTsKKyAgICAgICAgbV9zZXNzaW9uLT5hZGRXZWJTb2NrZXRUYXNrKHdlYlBhZ2VQcm94
eUlELCAqbV9zb2NrZXQpOwogICAgICAgICBtX3NvY2tldC0+cmVzdW1lKCk7CiAgICAgfQogfQpA
QCAtNjUsNyArNjYsNyBAQCBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6TmV0d29ya1NvY2tldENoYW5u
ZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lYwogTmV0d29ya1NvY2tldENo
YW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5lbCgpCiB7CiAgICAgaWYgKG1fc2Vzc2lvbikKLSAg
ICAgICAgbV9zZXNzaW9uLT5yZW1vdmVXZWJTb2NrZXRUYXNrKCptX3NvY2tldCk7CisgICAgICAg
IG1fc2Vzc2lvbi0+cmVtb3ZlV2ViU29ja2V0VGFzayhtX3dlYlBhZ2VQcm94eUlELCAqbV9zb2Nr
ZXQpOwogCiAgICAgaWYgKG1fc29ja2V0KQogICAgICAgICBtX3NvY2tldC0+Y2FuY2VsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmgKaW5kZXggNDdlMDY1NzM1YWRjLi5kYTQwNWQ5YTU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJTb2NrZXRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpA
QCAtNTQsOSArNTUsOSBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTb2Nr
ZXRDaGFubmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0
Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpOwogCi0gICAgTmV0d29ya1NvY2tldENoYW5uZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwor
ICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
TmV0d29ya1Nlc3Npb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyKTsKICAgICB+TmV0d29ya1NvY2tldENoYW5uZWwoKTsKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC05
NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRpbWVyOwog
ICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dW5zaWdu
ZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xvc2VJbmZvOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgbV93ZWJQYWdlUHJveHlJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2
MzdjOGVkODk1YmMuLjk4ZDkyZDFiNWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQ0LDEwICs0NCwxMSBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCitXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXIm
IHNlcnZlcikKICAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9z
ZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFn
ZVByb3h5SUQpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCAzOTA2YjQzZWRmYWIuLmIzZGJmNGNjMTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZl
ciYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkg
Y29uc3Q7CkBAIC05OSw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViQ29yZTo6
U1dTZXJ2ZXI+IG1fc2VydmVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
LCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAg
IGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
OWQwZDYzOTUwODlkLi41YjU1OGU3ZTJlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tD
b2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hv
dWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRh
c2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24s
IGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHks
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgcGNtRGF0YUNhcnJpZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29y
a0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQs
IHdlYlBhZ2VQcm94eUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNu
aWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcGNtRGF0YUNhcnJpZWQp
KTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHkpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ks
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25p
ZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBO
U1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYpOwpAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVl
blNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQppbmRleCBkMDllYTAxNWIzMDAuLjMzOWUxMGQyMDJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0yOTEsMTEgKzI5MSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4g
c2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQogICAgIDogTmV0d29ya0RhdGFUYXNr
KHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtl
V2Vha1B0cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lv
bldyYXBwZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCisgICAgLCBtX3Nlc3Npb25X
cmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNz
aW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJ
RCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX2lzRm9y
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKHNlc3Npb24pKQogICAgICwgbV9zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggM2U5YTM5OGUzNzNhLi40ZjYwNTNlOTQw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgX05TSFNU
U1N0b3JhZ2U7CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFza0NvY29hLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nl
c3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKLSAgICB2b2lkIGluaXRpYWxp
emVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
KyAgICBTZXNzaW9uV3JhcHBlciYgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25J
Zk5lZWRlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAKICAgICBjb25zdCBTdHJpbmcmIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udGludWVEaWRS
ZWNlaXZlQ2hhbGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7CiAKLSAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lv
bldyYXBwZXJGb3JEb3dubG9hZHMoKSB7IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0
b3JhZ2U7IH0KKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZFJl
c3VtZSgpIHsgcmV0dXJuIG1fZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7IH0KIAogICAgIGJvb2wgZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Zhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOyB9CiAg
ICAgYm9vbCBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7IH0KQEAgLTk2LDExICs5
NywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBib29sIGhhc0FwcEJvdW5k
U2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICEhbV9hcHBCb3VuZFNlc3Npb247IH0K
KyAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJBcHBCb3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU2Vzc2lvbldy
YXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJG
b3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbjsgfQogICAgIAogICAgIF9OU0hTVFNTdG9yYWdlICpoc3RzU3RvcmFnZSgp
IGNvbnN0OwpAQCAtMTA5LDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsgfQotICAgIFNlc3Npb25X
cmFwcGVyJiBpc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBTZXNzaW9uV3JhcHBlciYgYXBwQm91bmRT
ZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTZXNzaW9uV3Jh
cHBlciYgYXBwQm91bmRTZXNzaW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICNlbmRpZgogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTEyMCw5ICsxMjEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJB
bHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoTlNVUkxT
RVNTSU9OX1dFQlNPQ0tFVCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwotICAgIHZvaWQg
YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVX
ZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOworICAgIHZvaWQgYWRkV2ViU29ja2V0VGFz
ayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJTb2NrZXRUYXNrJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRh
c2smKSBmaW5hbDsKICNlbmRpZgogCiAgICAgc3RydWN0IElzb2xhdGVkU2Vzc2lvbiB7CkBAIC0x
MzMsMTMgKzEzNCwzNCBAQCBwcml2YXRlOgogICAgICAgICBXYWxsVGltZSBsYXN0VXNlZDsKICAg
ICB9OwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlx
dWVfcHRyPElzb2xhdGVkU2Vzc2lvbj4+IG1faXNvbGF0ZWRTZXNzaW9uczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9uPiBtX2FwcEJvdW5kU2Vzc2lvbjsKKyAgICBzdHJ1Y3Qg
U2Vzc2lvblNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlc3Npb25TZXQ+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBSZWY8U2Vzc2lvblNldD4gY3JlYXRlKCkgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vzc2lvblNldCk7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisgICAgICAgIFNlc3Npb25X
cmFwcGVyJiBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisKKyAgICAgICAg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPElzb2xh
dGVkU2Vzc2lvbj4+IGlzb2xhdGVkU2Vzc2lvbnM7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29sYXRlZFNlc3Npb24+IGFwcEJvdW5kU2Vzc2lvbjsKIAotICAgIFNlc3Npb25XcmFwcGVyIG1f
c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKLSAgICBTZXNzaW9uV3JhcHBlciBtX3Nlc3Np
b25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7Ci0gICAgU2Vzc2lvbldyYXBwZXIgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNzaW9uV2l0aG91dENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBlcGhlbWVyYWxTdGF0ZWxl
c3NTZXNzaW9uOwogCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2Vzc2lvblNldCgpID0gZGVmYXVs
dDsKKyAgICB9OworCisgICAgUmVmPFNlc3Npb25TZXQ+IG1fZGVmYXVsdFNlc3Npb25TZXQ7Cisg
ICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lvblNldD4+IG1f
cGVyUGFnZVNlc3Npb25TZXRzOworCisgICAgdm9pZCBpbml0aWFsaXplU3RhbmRhcmRTZXNzaW9u
c0luU2V0KFNlc3Npb25TZXQmLCBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICopOworICAgIFNl
c3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAg
IGNvbnN0IFNlc3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbFNlc3Npb25TZXQoU2Vzc2lv
blNldCYpOworICAgIAogICAgIFN0cmluZyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgU3RyaW5n
IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CmluZGV4IDZhMmRmMjcwNTQwMi4uZWNkNWIzNDEwMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBA
IC0xMDYxLDEwICsxMDYxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
X05TSFNUU1N0b3JhZ2UgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdlKCkgY29uc3QK
IHsKICNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKLSAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24u
Z2V0KCkuY29uZmlndXJhdGlvbjsKKyAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uID0gbV9kZWZhdWx0U2Vzc2lvblNldC0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIHJlc3BvbmRzVG9TZWxlY3RvciBjaGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMx
IGlzIGluIGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAgICAgaWYgKFtjb25maWd1cmF0
aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCi0gICAgICAg
IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uLl9oc3RzU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uX2hz
dHNTdG9yYWdlOwogI2VuZGlmCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTExNjAsNiArMTE2MCw3
IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAoTmV0d29ya1Nlc3Npb25Db2Nv
YSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiAKIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdv
cmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lv
bihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKKyAgICAsIG1fZGVmYXVsdFNlc3Npb25TZXQo
U2Vzc2lvblNldDo6Y3JlYXRlKCkpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihw
YXJhbWV0ZXJzLmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKQogICAgICwgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
cGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpCkBAIC0xMjcx
LDE1ICsxMjcyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAgICAgY29va2llU3Rv
cmFnZS5nZXQoKS5fb3ZlcnJpZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5ID0gWUVTOwogI2Vu
ZGlmCiAKLSAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShjb25m
aWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKLSAgICBMT0coTmV0d29ya1Nlc3Npb24s
ICJDcmVhdGVkIE5ldHdvcmtTZXNzaW9uIHdpdGggY29va2llQWNjZXB0UG9saWN5ICVsdSIsIGNv
bmZpZ3VyYXRpb24uSFRUUENvb2tpZVN0b3JhZ2UuY29va2llQWNjZXB0UG9saWN5KTsKLQotICAg
IGNvbmZpZ3VyYXRpb24uVVJMQ3JlZGVudGlhbFN0b3JhZ2UgPSBuaWw7Ci0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzczOTQKLSAgICAvLyBj
b25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gbmlsOwotICAgIC8vIGNvbmZpZ3VyYXRp
b24uSFRUUENvb2tpZUFjY2VwdFBvbGljeSA9IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVy
OwotCi0gICAgbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoY29u
ZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKKyAgICBpbml0aWFsaXplU3Rh
bmRhcmRTZXNzaW9uc0luU2V0KG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCksIGNvbmZpZ3VyYXRp
b24pOwogCiAgICAgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCA9IHBhcmFt
ZXRlcnMuZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgbV9hbGxMb2Fk
c0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nID0gcGFyYW1l
dGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0
aW5nOwpAQCAtMTI5NiwxMCArMTI4OSw0MCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3Jr
U2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogCiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjp+TmV0d29ya1Nlc3Npb25Db2NvYSgpID0gZGVmYXVsdDsKIAot
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vz
c2lvbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKQordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplU3RhbmRhcmRTZXNzaW9u
c0luU2V0KFNlc3Npb25TZXQmIHNlc3Npb25TZXQsIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24pCit7CisgICAgc2Vzc2lvblNldC5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7Cisg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQ3JlYXRlZCBOZXR3b3JrU2Vzc2lvbiB3aXRoIGNvb2tp
ZUFjY2VwdFBvbGljeSAlbHUiLCBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlLmNvb2tp
ZUFjY2VwdFBvbGljeSk7CisKKyAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdl
ID0gbmlsOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3Mzk0CisgICAgLy8gY29uZmlndXJhdGlvbi5IVFRQQ29va2llU3RvcmFnZSA9IG5p
bDsKKyAgICAvLyBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKworICAgIHNlc3Npb25TZXQuc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObyk7Cit9CisKK05ldHdvcmtTZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQmIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQpCit7CisgICAgYXV0byBzZXNzaW9uU2V0ID0gbV9wZXJQYWdlU2Vzc2lv
blNldHMuZ2V0KHdlYlBhZ2VQcm94eUlEKTsKKyAgICByZXR1cm4gc2Vzc2lvblNldCA/ICpzZXNz
aW9uU2V0IDogbV9kZWZhdWx0U2Vzc2lvblNldC5nZXQoKTsKK30KKworY29uc3QgTmV0d29ya1Nl
c3Npb25Db2NvYTo6U2Vzc2lvblNldCYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvblNldEZv
clBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgY29uc3QKK3sKKyAg
ICBhdXRvIHNlc3Npb25TZXQgPSBtX3BlclBhZ2VTZXNzaW9uU2V0cy5nZXQod2ViUGFnZVByb3h5
SUQpOworICAgIHJldHVybiBzZXNzaW9uU2V0ID8gKnNlc3Npb25TZXQgOiBtX2RlZmF1bHRTZXNz
aW9uU2V0LmdldCgpOworfQorCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICByZXR1cm4gc2Vzc2lvblNldEZvclBhZ2UocGFnZUlE
KS5pbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sICp0aGlzKTsKK30KKworU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNz
aW9uSWZOZWVkZWQoTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbikKIHsKICAgICBOU1VSTFNl
c3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW05TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gZXBoZW1lcmFsU2Vzc2lvbkNvbmZpZ3VyYXRpb25dOwotICAgIE5TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gKmV4aXN0aW5nQ29uZmlndXJhdGlvbiA9IG1fc2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CisgICAgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbiAqZXhpc3RpbmdDb25maWd1cmF0aW9uID0gc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAKICAgICBjb25m
aWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lOZXZlcjsKICAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdlID0gbmlsOwpA
QCAtMTMxOCwxMSArMTM0MSwxNSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxp
emVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdQogICAgICAgICBj
b25maWd1cmF0aW9uLl9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllciA9IGV4aXN0aW5nQ29uZmln
dXJhdGlvbi5fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIG1fZXBo
ZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9u
LmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisKKyAgICByZXR1cm4gZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKIH0KIAotU2Vz
c2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK1Nlc3Np
b25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CisgICAgYXV0byYgc2Vzc2lvblNldCA9
IHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKTsKKyAgICAKICAgICBhdXRvIHNob3Vs
ZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA/ICpp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllczsKICAgICBpZiAoUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG5ldHdv
cmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkgewogICAgICAgICBpZiAoaXNQ
YXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKGNvbm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSkp
CkBAIC0xMzMyLDYyICsxMzU5LDg0IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAg
ICAgYXV0byBmaXJzdFBhcnR5ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAgICAgaWYgKHN0b3JhZ2VTZXNzaW9uLT5zaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGZpcnN0
UGFydHkpKQotICAgICAgICAgICAgcmV0dXJuIGlzb2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgZmlyc3RQYXJ0eSwgc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQpOworICAg
ICAgICAgICAgcmV0dXJuIHNlc3Npb25TZXQuaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBmaXJzdFBhcnR5LCBzaG91bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCwgKnRoaXMp
OwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChzaG91bGRCZUNvbnNpZGVyZWRB
cHBCb3VuZCA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQotICAgICAgICByZXR1
cm4gYXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICAgICAgcmV0
dXJuIGFwcEJvdW5kU2Vzc2lvbih3ZWJQYWdlUHJveHlJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpOwogI2VuZGlmCiAKICAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAg
ICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgotICAgICAgICBy
ZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICByZXR1cm4gc2Vz
c2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2U7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6
Ci0gICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CisgICAg
ICAgIHJldHVybiBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vzc2lvbldpdGhv
dXRDcmVkZW50aWFsU3RvcmFnZTsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M6Ci0gICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCi0gICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3Rh
dGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pOwotICAgICAgICBy
ZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICByZXR1cm4gaW5pdGlh
bGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZCh3ZWJQYWdlUHJveHlJRCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKICAgICB9CiB9CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCi1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6YXBw
Qm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KQorU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFwcEJv
dW5kU2Vzc2lvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKIHsKLSAg
ICBpZiAoIW1fYXBwQm91bmRTZXNzaW9uKSB7Ci0gICAgICAgIG1fYXBwQm91bmRTZXNzaW9uID0g
bWFrZVVuaXF1ZTxJc29sYXRlZFNlc3Npb24+KCk7Ci0gICAgICAgIG1fYXBwQm91bmRTZXNzaW9u
LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOjpZZXMpOwotICAgICAgICBtX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMp
OworICAgIGF1dG8mIHNlc3Npb25TZXQgPSBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJ
RCk7CisgICAgCisgICAgaWYgKCFzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbikgeworICAgICAg
ICBzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9u
PigpOworICAgICAgICBzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKHNlc3Npb25TZXQuc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVz
KTsKKyAgICAgICAgc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3Jl
ZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShzZXNzaW9uU2V0LnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6WWVzKTsKICAgICB9CiAKICAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0
byBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKICAgICAgICAg
c3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9y
YWdlLiIpOwotICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25TZXQuYXBwQm91
bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOwogICAgICAgICBjYXNlIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKICAgICAgICAgICAgIExP
RyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5nIGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBj
cmVkZW50aWFsIHN0b3JhZ2UuIik7Ci0gICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Np
b24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4g
c2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3Jh
Z2U7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVt
ZXJhbFN0YXRlbGVzczoKLSAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNz
aW9uLnNlc3Npb24pCi0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Olllcyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICAgICAgcmV0dXJuIGlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQod2ViUGFnZVByb3h5SUQs
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpOwogICAgICAgICB9CiAgICAgfSAoc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOwogfQor
Citib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0Cit7
CisgICAgaWYgKCEhbV9kZWZhdWx0U2Vzc2lvblNldC0+YXBwQm91bmRTZXNzaW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNz
aW9uU2V0cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoISFzZXNzaW9uU2V0LT5hcHBCb3VuZFNl
c3Npb24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQXBwQm91bmRTZXNz
aW9uKCkKK3sKKyAgICBtX2RlZmF1bHRTZXNzaW9uU2V0LT5hcHBCb3VuZFNlc3Npb24gPSBudWxs
cHRyOworICAgIGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRzLnZh
bHVlcygpKQorICAgICAgICBzZXNzaW9uU2V0LT5hcHBCb3VuZFNlc3Npb24gPSBudWxscHRyOwor
fQogI2VuZGlmCiAKLVNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRl
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21h
aW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9u
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewotICAgIGF1dG8mIGVudHJ5ID0g
bV9pc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9tYWluLCBbdGhpcywgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbl0geworICAgIHJldHVybiBzZXNzaW9uU2V0Rm9yUGFnZSh3
ZWJQYWdlUHJveHlJRCkuaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBm
aXJzdFBhcnR5RG9tYWluLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAqdGhpcyk7Cit9
CisKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0Ojppc29s
YXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlE
b21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24pCit7CisgICAgYXV0byYgZW50cnkg
PSBpc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9tYWluLCBbdGhpcywgJnNlc3Np
b24sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dIHsKICAgICAgICAgYXV0byBuZXdFbnRy
eSA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOwotICAgICAgICBuZXdFbnRyeS0+c2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKG1fc2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKLSAgICAgICAgbmV3RW50cnktPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgbmV3RW50cnkt
PnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShzZXNzaW9uV2l0aENyZWRl
bnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisgICAgICAgIG5ld0VudHJ5LT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdl
LmluaXRpYWxpemUoc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgp
LmNvbmZpZ3VyYXRpb24sIHNlc3Npb24sIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIHJldHVy
biBuZXdFbnRyeTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKQEAgLTE0MDIsNzUgKzE0NTEs
ODIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vzc2lv
bihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1AKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIlVzaW5nIGlzb2xhdGVkIE5TVVJMU2Vzc2lvbiB3aXRob3V0IGNyZWRlbnRpYWwgc3Rv
cmFnZS4iKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeS0+c2Vzc2lvbldpdGhvdXRDcmVkZW50
aWFsU3RvcmFnZTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6RXBoZW1lcmFsU3RhdGVsZXNzOgotICAgICAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb24uc2Vzc2lvbikKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzU2Vzc2lvbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICAgICAg
ICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CisgICAgICAgICAgICByZXR1
cm4gaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0gKHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KTsKLSAgICAKLSAgICBpZiAobV9pc29sYXRlZFNlc3Npb25zLnNpemUo
KSA+IG1heE51bWJlck9mSXNvbGF0ZWRTZXNzaW9ucykgeworCisgICAgaWYgKGlzb2xhdGVkU2Vz
c2lvbnMuc2l6ZSgpID4gbWF4TnVtYmVyT2ZJc29sYXRlZFNlc3Npb25zKSB7CiAgICAgICAgIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGtleVRvUmVtb3ZlOwogICAgICAgICBhdXRvIG9sZGVz
dFRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBt
X2lzb2xhdGVkU2Vzc2lvbnMua2V5cygpKSB7Ci0gICAgICAgICAgICBhdXRvIHRpbWVzdGFtcCA9
IG1faXNvbGF0ZWRTZXNzaW9ucy5nZXQoa2V5KS0+bGFzdFVzZWQ7CisgICAgICAgIGZvciAoYXV0
byYga2V5IDogaXNvbGF0ZWRTZXNzaW9ucy5rZXlzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gdGlt
ZXN0YW1wID0gaXNvbGF0ZWRTZXNzaW9ucy5nZXQoa2V5KS0+bGFzdFVzZWQ7CiAgICAgICAgICAg
ICBpZiAodGltZXN0YW1wIDwgb2xkZXN0VGltZXN0YW1wKSB7CiAgICAgICAgICAgICAgICAgb2xk
ZXN0VGltZXN0YW1wID0gdGltZXN0YW1wOwogICAgICAgICAgICAgICAgIGtleVRvUmVtb3ZlID0g
a2V5OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIkFib3V0IHRvIHJlbW92ZSBpc29sYXRlZCBOU1VSTFNlc3Npb24uIik7Ci0gICAgICAgIG1f
aXNvbGF0ZWRTZXNzaW9ucy5yZW1vdmUoa2V5VG9SZW1vdmUpOworICAgICAgICBpc29sYXRlZFNl
c3Npb25zLnJlbW92ZShrZXlUb1JlbW92ZSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlQo
bV9pc29sYXRlZFNlc3Npb25zLnNpemUoKSA8PSBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMp
OworICAgIFJFTEVBU0VfQVNTRVJUKGlzb2xhdGVkU2Vzc2lvbnMuc2l6ZSgpIDw9IG1heE51bWJl
ck9mSXNvbGF0ZWRTZXNzaW9ucyk7CiAKICAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7CiB9CiAK
IGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc29s
YXRlZFNlc3Npb25zLmNvbnRhaW5zKGRvbWFpbik7CisgICAgaWYgKG1fZGVmYXVsdFNlc3Npb25T
ZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY29udGFpbnMoZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY29udGFp
bnMoZG9tYWluKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRl
ZFNlc3Npb25zKCkKIHsKLSAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKLX0KLQotI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLXZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xl
YXJBcHBCb3VuZFNlc3Npb24oKQotewotICAgIG1fYXBwQm91bmRTZXNzaW9uID0gbnVsbHB0cjsK
KyAgICBtX2RlZmF1bHRTZXNzaW9uU2V0LT5pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7CisgICAg
Zm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFsdWVzKCkpCisg
ICAgICAgIHNlc3Npb25TZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKIH0KLSNlbmRpZgog
Ci12b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQordm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsU2Vzc2lvblNldChTZXNzaW9u
U2V0JiBzZXNzaW9uU2V0KQogewotICAgIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2Fu
Y2VsKCk7Ci0KLSAgICBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52
YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgW21fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgIFttX2VwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb24uc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKLSAgICBbbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07Ci0gICAgW21f
c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0
ZWRdOwotICAgIFttX2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uZGVsZWdhdGUgc2Vzc2lvbklu
dmFsaWRhdGVkXTsKLQotICAgIGZvciAoYXV0byYgc2Vzc2lvbiA6IG1faXNvbGF0ZWRTZXNzaW9u
cy52YWx1ZXMoKSkgeworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Cisg
ICAgW3Nlc3Npb25TZXQuZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5zZXNzaW9uIGludmFsaWRh
dGVBbmRDYW5jZWxdOworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07Cisg
ICAgW3Nlc3Npb25TZXQuZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5kZWxlZ2F0ZSBzZXNzaW9u
SW52YWxpZGF0ZWRdOworCisgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogc2Vzc2lvblNldC5pc29s
YXRlZFNlc3Npb25zLnZhbHVlcygpKSB7CiAgICAgICAgIFtzZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgICAgIFtz
ZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZh
bGlkYXRlZF07CiAgICAgICAgIFtzZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9y
YWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgICAgIFtzZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CiAgICAgfQotICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOworICAgIHNlc3Npb25TZXQu
aXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwogCi0gICAgaWYgKG1fYXBwQm91bmRTZXNzaW9uKSB7
Ci0gICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgICAgICBbbV9hcHBCb3VuZFNlc3Np
b24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRh
dGVkXTsKLSAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRp
YWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgICAgIFttX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNz
aW9uSW52YWxpZGF0ZWRdOworICAgIGlmIChzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbikgewor
ICAgICAgICBbc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW3Nlc3Npb25T
ZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRl
IHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgICAgIFtzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lv
bi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRD
YW5jZWxdOworICAgICAgICBbc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRo
b3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9
CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCit7
CisgICAgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKTsKKworICAgIGludmFs
aWRhdGVBbmRDYW5jZWxTZXNzaW9uU2V0KG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCkpOworICAg
IGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRzLnZhbHVlcygpKQor
ICAgICAgICBpbnZhbGlkYXRlQW5kQ2FuY2VsU2Vzc2lvblNldCgqc2Vzc2lvblNldCk7Cit9CisK
IHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscygpCiB7CiAjaWYgIVVT
RShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCkBAIC0xNTc5LDcgKzE2
MzUsNyBAQCBETUZXZWJzaXRlUG9saWN5TW9uaXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2
aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3IoKQogfQogCiAjaWYgSEFWRShOU1VSTFNFU1NJT05f
V0VCU09DS0VUKQotc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9u
Q29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmIGNoYW5uZWws
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgQVNT
RVJUKCFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6
U2VjV2ViU29ja2V0UHJvdG9jb2wpKTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJldGFpblB0cihy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RV
cGRhdGVIVFRQQm9keSkpOwpAQCAtMTU5MSwyMCArMTY0NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhO
ZXR3b3JrUwogICAgIC8vIHJkYXI6Ly9wcm9ibGVtLzY4MDU3MDMxOiBleHBsaWNpdGx5IGRpc2Fi
bGUgc25pZmZpbmcgZm9yIFdlYlNvY2tldCBoYW5kc2hha2VzLgogICAgIFtuc1JlcXVlc3QgX3Nl
dFByb3BlcnR5OkBOTyBmb3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0
eVNob3VsZFNuaWZmXTsKIAotICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNr
PiB0YXNrID0gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIHdlYlNvY2tl
dFRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCldOworICAgIFJldGFpblB0cjxOU1VSTFNl
c3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW3Nlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94
eUlEKS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29ja2V0VGFza1dp
dGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29j
a2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Np
b25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQordm9pZCBOZXR3
b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFdlYlNvY2tldFRhc2smIHRhc2spCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoIW1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5j
b250YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5hZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNr
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQp
LnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAuY29udGFp
bnModGFzay5pZGVudGlmaWVyKCkpKTsKKyAgICBzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJv
eHlJRCkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5h
ZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNrKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpyZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OnJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViU29ja2V0VGFzayYgdGFzaykKIHsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAu
Y29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAucmVtb3ZlKHRhc2suaWRlbnRpZmllcigpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5jb250YWlucyh0
YXNrLmlkZW50aWZpZXIoKSkpOworICAgIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlE
KS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNrTWFwLnJlbW92
ZSh0YXNrLmlkZW50aWZpZXIoKSk7CiB9CiAKICNlbmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9X
RUJTT0NLRVQpCkBAIC0xNjEzLDcgKzE2NjksNyBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdgog
ewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKLSAgICBfTlNIVFRQQWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFn
ZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX2Rl
ZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0
KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CiAgICAgTlNBcnJh
eTxfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkgKj4gKmVudHJpZXMgPSBbc3RvcmFnZSBI
VFRQU2VydmljZUVudHJpZXNXaXRoRmlsdGVyOl9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzRmls
dGVyLmVtcHR5RmlsdGVyXTsKIAogICAgIGZvciAoX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVu
dHJ5KiBlbnRyeSBpbiBlbnRyaWVzKSB7CkBAIC0xNjI5LDcgKzE2ODUsNyBAQCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFtZXNX
aXRoQWx0ZXJuYXRpdgogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVBbHRlcm5hdGl2
ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKIHsKICNp
ZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIF9OU0hUVFBBbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9y
YWdlOworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1f
ZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5n
ZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKICAgICBmb3Ig
KGF1dG8mIGhvc3QgOiBob3N0cykKICAgICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0
aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46aG9zdF07CiAjZWxzZQpAQCAt
MTY0MCw3ICsxNjk2LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVBbHRlcm5h
dGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHIKIHZvaWQgTmV0d29ya1Nl
c3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBfTlNI
VFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0
b3JhZ2UgPSBtX2RlZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7
CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gbW9kaWZpZWRTaW5jZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnNlY29uZHMoKTsKICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVX
aXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAgICAgW3N0b3JhZ2UgcmVt
b3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOmRhdGVdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nl
c3Npb25Tb3VwLmNwcAppbmRleCA2ZTk3M2Y1MThjMTcuLjA2Y2EyNTJiMDQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJTb2NrZXRNZXNzYWdl
TmV0d29ya0V2ZW50Q2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBHU29jawogfQog
I2VuZGlmCiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNv
dXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmIGNoYW5uZWwsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3N0
ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZVdl
YlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmV0d29ya1NvY2tldENoYW5uZWwm
IGNoYW5uZWwsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKIHsKICAgICBHUmVmUHRyPFNvdXBNZXNzYWdlPiBzb3VwTWVzc2FnZSA9IHJlcXVl
c3QuY3JlYXRlU291cE1lc3NhZ2UoYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmICghc291cE1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmgKaW5kZXggOWEwMTQ2ODRhNWNkLi5iMDE3Y2VmZmMwYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNv
dXBTZXNzaW9uOwogCkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb3h5
U2V0dGluZ3MoV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzJiYpOwogCiBwcml2YXRl
OgotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNr
KE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmV0
d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBm
aW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb24+
IG1fbmV0d29ya1Nlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
Y3BwCmluZGV4IGRiYmUxYmYwOTAzNS4uYjIwOTFlMzNmMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkxv
Z0luaXRpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNhbmRi
b3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtOTAsNiArOTEsNyBAQCB2b2lkIEF1eGlsaWFyeVBy
b2Nlc3M6OmluaXRpYWxpemUoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycwogICAgIC8vIEluIFdlYktpdDIsIG9ubHkgdGhlIFVJIHByb2Nlc3Mgc2hvdWxkIGV2
ZXIgYmUgZ2VuZXJhdGluZyBjZXJ0YWluIGlkZW50aWZpZXJzLgogICAgIFBBTDo6U2Vzc2lvbklE
OjplbmFibGVHZW5lcmF0aW9uUHJvdGVjdGlvbigpOwogICAgIENvbnRlbnRXb3JsZElkZW50aWZp
ZXI6OmVuYWJsZUdlbmVyYXRpb25Qcm90ZWN0aW9uKCk7CisgICAgV2ViUGFnZVByb3h5SWRlbnRp
Zmllcjo6ZW5hYmxlR2VuZXJhdGlvblByb3RlY3Rpb24oKTsKIAogICAgIG1fY29ubmVjdGlvbiA9
IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihwYXJhbWV0ZXJzLmNvbm5l
Y3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CiAgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obV9jb25u
ZWN0aW9uLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDVlZjVkMzExNTY3Li45NDI1MTQ4NjE3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC00Miw5ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0Q2hh
bm5lbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYg
Y2xpZW50KQorUmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKHdlYlBhZ2VQcm94eUlELCBkb2N1bWVudCwgY2xp
ZW50KSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KQpAQCAtNjgsMTEgKzY4LDEyIEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6
Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29jCiAgICAgfSB9Owog
fQogCi1XZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQorV2ViU29ja2V0Q2hhbm5lbDo6V2Vi
U29ja2V0Q2hhbm5lbChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkKICAgICA6IG1f
ZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9jbGllbnQobWFrZVdlYWtQ
dHIoY2xpZW50KSkKICAgICAsIG1fbWVzc2FnZVF1ZXVlKGNyZWF0ZU1lc3NhZ2VRdWV1ZShkb2N1
bWVudCwgKnRoaXMpKQogICAgICwgbV9pbnNwZWN0b3IoZG9jdW1lbnQpCisgICAgLCBtX3dlYlBh
Z2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlNvY2tldENoYW5uZWxNYW5hZ2VyKCkuYWRkQ2hhbm5lbCgqdGhpcyk7CiB9CkBAIC0xMTYs
NyArMTE3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0YXR1cyBXZWJTb2NrZXRDaGFu
bmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdAogCiAgICAgbV9pbnNwZWN0b3IuZGlk
Q3JlYXRlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIHVybCk7CiAgICAgbV91cmwgPSByZXF1
ZXN0LT51cmwoKTsKLSAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0Q2hhbm5lbCB7ICpyZXF1ZXN0LCBwcm90
b2NvbCwgbV9pZGVudGlmaWVyIH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgKnJl
cXVlc3QsIHByb3RvY29sLCBtX2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SUQgfSk7CiAgICAg
cmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDEzZjY4YTIzOTRlLi4w
OTRiYWY2MWY1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNDUs
NyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLCBwdWJsaWMgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJTb2Nr
ZXRDaGFubmVsPiBjcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUo
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsQ2xpZW50Jik7CiAgICAgfldlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBA
IC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENo
YW5uZWw+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBXZWJTb2NrZXRDaGFubmVsKFdlYkNvcmU6
OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCYpOworICAgIFdlYlNv
Y2tldENoYW5uZWwoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnQmLCBX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50Jik7CiAKICAgICBzdGF0aWMgV2ViQ29yZTo6
TmV0d29ya1NlbmRRdWV1ZSBjcmVhdGVNZXNzYWdlUXVldWUoV2ViQ29yZTo6RG9jdW1lbnQmLCBX
ZWJTb2NrZXRDaGFubmVsJik7CiAKQEAgLTExNiw2ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWxJbnNwZWN0b3IgbV9pbnNwZWN0b3I7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1faGFuZHNoYWtlUmVxdWVzdDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1faGFuZHNoYWtlUmVzcG9uc2U7CisgICAgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBtX3dlYlBhZ2VQcm94eUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5jcHAKaW5kZXggYzUzZmNkNmQ0NzExLi4yMDkxZGQ5MzkyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gV2ViU29ja2V0UHJvdmlkZXI6
OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHUKIAogUmVmUHRyPFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlV2ViU29ja2V0Q2hh
bm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQp
OworICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUobV93ZWJQYWdlUHJveHlJRCwg
ZG9jdW1lbnQsIGNsaWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKaW5k
ZXggMWIzNTUyZGEzNjQwLi45MGM4Mjk5MjY1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaApAQCAtMjUsMTYgKzI1LDI1
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0UHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYlNvY2tldFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNv
Y2tldFByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFByb3ZpZGVy
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFByb3ZpZGVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFBy
b3ZpZGVyKHdlYlBhZ2VQcm94eUlEKSk7IH0KKyAgICBXZWJTb2NrZXRQcm92aWRlcihXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKQorICAgICAgICA6IG1fd2ViUGFnZVByb3h5
SUQod2ViUGFnZVByb3h5SUQpCisgICAgeworICAgIH0KKwogICAgIFJlZjxXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBj
b25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGVXZWJTb2NrZXRDaGFu
bmVsKFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCYp
IGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CisKK3ByaXZhdGU6
CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQyZjM3OWJhMWJiZi4uNTJk
N2JlMDExNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0cmFibGVEb21haW4g
fSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3dlYlBhZ2VQ
cm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJl
ZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKQEAgLTE0Miw3
ICsxNDIsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vy
dmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRh
YmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKICNlbmRpZgotICAgIHBh
Z2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0
ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJv
dmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi51
c2VyQ29udGVudFByb3ZpZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlkZXIgPSBtYWtl
VW5pcXVlUmVmPFNlcnZpY2VXb3JrZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODRkMDc4ODAyNzlkLi4z
Y2U0Njg4MTZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIFBh
Z2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKAogICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zZXNzaW9uSUQoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JD
bGllbnQ+KHRoaXMpLAotICAgICAgICBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCisgICAg
ICAgIFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUocGFyYW1ldGVycy53ZWJQYWdlUHJveHlJZGVu
dGlmaWVyKSwKICAgICAgICAgY3JlYXRlTGliV2ViUlRDUHJvdmlkZXIoKnRoaXMpLAogICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlciwK
</data>
<flag name="commit-queue"
          id="443949"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424319</attachid>
            <date>2021-03-25 22:59:47 -0700</date>
            <delta_ts>2021-03-26 12:31:51 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>69788</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODBjYTM1ZDZlOGJmLi45ZmVmNjllNTlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsOTEgQEAKKzIwMjEtMDMtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIE5ldHdvcmtTZXNzaW9uQ29jb2EgdG8gcHJlcGFyZSBmb3IgcGVy
LVdlYlBhZ2VQcm94eSBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UgcmVmYWN0b3Ip
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6CisJCQorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENo
YW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgCisJ
CSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAKKwkJKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVh
dGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlV2ViU29ja2V0VGFz
ayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRXZWJTb2NrZXRUYXNrKToK
KyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5l
bCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAg
ICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaDoKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKToKKyAgICAgICAgCisJCSogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omhz
dHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6
TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OmluaXRpYWxpemVTdGFuZGFyZFNlc3Npb25zSW5TZXQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uU2V0Rm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZv
clRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3Vu
ZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
bGVhckFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OlNlc3Npb25TZXQ6Omlzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNvbGF0ZWRTZXNzaW9ucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWxTZXNzaW9u
U2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFu
ZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdl
YlNvY2tldFRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRX
ZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6cmVt
b3ZlV2ViU29ja2V0VGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3RO
YW1lcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQWx0ZXJu
YXRpdmVTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Omlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKTogRGVsZXRlZC4KKworICAgICAgICAq
IFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzczo6aW5pdGlhbGl6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5u
ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorCiAyMDIxLTAzLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25s
b2FkQ29jb2EubW0KaW5kZXggOGNjZTI5NTU0YzBiLi4yMTBmNGQ1MTUxYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQpAQCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3Vt
ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwKIAogICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGluc3RlYWQgb2YgdXBkYXRlZERhdGEgb25j
ZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2FkIHRvIFdLRG93bmxvYWQKICAgICAvLyBi
ZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJv
bSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCi0gICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRh
c2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CisgICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUoKS5zZXNzaW9uIGRvd25s
b2FkVGFza1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlm
aWVyID0gW21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKLSAgICBBU1NFUlQoIWNvY29h
U2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5z
KHRhc2tJZGVudGlmaWVyKSk7Ci0gICAgY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93
bmxvYWRzKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwor
ICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRSZXN1bWUo
KS5kb3dubG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOworICAgIGNvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkUmVzdW1lKCkuZG93bmxvYWRNYXAuYWRkKHRhc2tJ
ZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwogICAgIG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRo
VG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKIAogICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyODQ2YzZmNGIzYmYuLjM3MWQwMjJk
N2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwNCwxMCArNDA0LDEwIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbShV
UkwmJiB1cmwsIFN0cmluZyBjYWNoZVBhCiAgICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5hZGQo
aWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCksIFdURk1vdmUodXJsKSwgbV9zZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVTb2NrZXRDaGFubmVsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkKIHsKICAgICBBU1NFUlQoIW1fbmV0d29ya1Nv
Y2tldENoYW5uZWxzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBjaGFubmVs
ID0gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVl
c3QsIHByb3RvY29sLCBpZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBjaGFubmVsID0gTmV0d29y
a1NvY2tldENoYW5uZWw6OmNyZWF0ZSgqdGhpcywgbV9zZXNzaW9uSUQsIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyLCB3ZWJQYWdlUHJveHlJRCkpCiAgICAgICAgIG1fbmV0d29ya1NvY2tl
dENoYW5uZWxzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNoYW5uZWwpKTsKIH0KIApAQCAtMTA5
MiwxMCArMTA5MiwxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3Rh
Ymxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQogICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1v
dmUoY29ubmVjdGlvbikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25ldHdv
cmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIp
OworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIHdlYlBhZ2VQcm94eUlELCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgKnNlcnZlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDljNTI5ZjkyY2FlMi4uMmVjN2QxMWNhMGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGNyZWF0ZVNvY2tl
dENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVT
b2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3Rp
bmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKLSAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsb3Nl
U1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA5NDhiY2NhNDNkYTguLmEwOTg0MTJhNWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02MCw3ICs2MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogICAgIENyZWF0ZVNv
Y2tldFN0cmVhbShVUkwgdXJsLCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNv
Y2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6Oldl
YlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlEKQogCiAgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRh
a2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKSAtPiAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtNZXRyaWNzKSBT
eW5jaHJvbm91cwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNX
Q29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAo
KSBBc3luYworICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBkb21haW4pIC0+ICgpIEFzeW5jCiAgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAKaW5kZXggNTNhYjYwZjNlNjNhLi4xZGVlYWM1MzRlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTU0LDcgKzU0LDcg
QEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMucmVxdWVz
dC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBG
SVhNRTogSnVzdCBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIE5ldHdvcmtEYXRhVGFza0NvY29hIGNv
bnN0cnVjdG9yLgotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Np
b24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBh
cmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBw
YXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJz
LmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZSwgcGFyYW1ldGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBwYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIHBhcmFtZXRlcnMucGNtRGF0YUNhcnJpZWQpOworICAg
IHJldHVybiBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFy
YW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFn
ZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMu
Y29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25s
eSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVz
b3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwYXJhbWV0ZXJz
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBwYXJhbWV0ZXJzLnBjbURhdGFD
YXJyaWVkKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggNzFkNzdkNmM4OGIyLi42MmUzMjUzNjNmMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zODMsNyArMzgz
LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKICAgICBtX2tlcHRBbGl2ZUxvYWRzLnJlbW92ZShsb2FkZXIp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb246OmNy
ZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorc3RkOjp1bmlxdWVfcHRy
PFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAppbmRleCAxYjYxMjczMGMxNDEuLjliYTAwY2YzMmNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTM5LDkgKzEzOSw5IEBAIHB1
YmxpYzoKICAgICBQcmVmZXRjaENhY2hlJiBwcmVmZXRjaENhY2hlKCkgeyByZXR1cm4gbV9wcmVm
ZXRjaENhY2hlOyB9CiAgICAgdm9pZCBjbGVhclByZWZldGNoQ2FjaGUoKSB7IG1fcHJlZmV0Y2hD
YWNoZS5jbGVhcigpOyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRU
YXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViU29j
a2V0VGFzayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRhc2smKSB7IH0KIAogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggYzc3ODg4MTFmMDMyLi5lYjI4NWQxOWFkMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBA
IC0zNiw5ICszNiw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVy
LCB3ZWJQYWdlUHJveHlJRCk7CiAgICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7CiAgICAgICAg
IHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0IHRhc2siX3Mp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2LDE4ICs0NiwxOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUo
TmV0d29ya0Nvbm5lYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpOZXR3b3JrU29ja2V0Q2hhbm5lbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBp
ZGVudGlmaWVyKQorTmV0d29ya1NvY2tldENoYW5uZWw6Ok5ldHdvcmtTb2NrZXRDaGFubmVsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBOZXR3b3JrU2Vzc2lvbiog
c2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9u
KG1ha2VXZWFrUHRyKHNlc3Npb24pKQogICAgICwgbV9lcnJvclRpbWVyKCp0aGlzLCAmTmV0d29y
a1NvY2tldENoYW5uZWw6OnNlbmREZWxheWVkRXJyb3IpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlE
KHdlYlBhZ2VQcm94eUlEKQogewogICAgIGlmICghbV9zZXNzaW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3NvY2tldCA9IG1fc2Vzc2lvbi0+Y3JlYXRlV2ViU29ja2V0VGFzaygqdGhpcywg
cmVxdWVzdCwgcHJvdG9jb2wpOworICAgIG1fc29ja2V0ID0gbV9zZXNzaW9uLT5jcmVhdGVXZWJT
b2NrZXRUYXNrKHdlYlBhZ2VQcm94eUlELCAqdGhpcywgcmVxdWVzdCwgcHJvdG9jb2wpOwogICAg
IGlmIChtX3NvY2tldCkgewotICAgICAgICBtX3Nlc3Npb24tPmFkZFdlYlNvY2tldFRhc2soKm1f
c29ja2V0KTsKKyAgICAgICAgbV9zZXNzaW9uLT5hZGRXZWJTb2NrZXRUYXNrKHdlYlBhZ2VQcm94
eUlELCAqbV9zb2NrZXQpOwogICAgICAgICBtX3NvY2tldC0+cmVzdW1lKCk7CiAgICAgfQogfQpA
QCAtNjUsNyArNjYsNyBAQCBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6TmV0d29ya1NvY2tldENoYW5u
ZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lYwogTmV0d29ya1NvY2tldENo
YW5uZWw6On5OZXR3b3JrU29ja2V0Q2hhbm5lbCgpCiB7CiAgICAgaWYgKG1fc2Vzc2lvbikKLSAg
ICAgICAgbV9zZXNzaW9uLT5yZW1vdmVXZWJTb2NrZXRUYXNrKCptX3NvY2tldCk7CisgICAgICAg
IG1fc2Vzc2lvbi0+cmVtb3ZlV2ViU29ja2V0VGFzayhtX3dlYlBhZ2VQcm94eUlELCAqbV9zb2Nr
ZXQpOwogCiAgICAgaWYgKG1fc29ja2V0KQogICAgICAgICBtX3NvY2tldC0+Y2FuY2VsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmgKaW5kZXggNDdlMDY1NzM1YWRjLi5kYTQwNWQ5YTU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJTb2NrZXRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpA
QCAtNTQsOSArNTUsOSBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTb2Nr
ZXRDaGFubmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29j
a2V0SWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0
Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpOwogCi0gICAgTmV0d29ya1NvY2tldENoYW5uZWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwor
ICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
TmV0d29ya1Nlc3Npb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyKTsKICAgICB+TmV0d29ya1NvY2tldENoYW5uZWwoKTsKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC05
NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9lcnJvclRpbWVyOwog
ICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBPcHRpb25hbDxzdGQ6OnBhaXI8dW5zaWdu
ZWQgc2hvcnQsIFN0cmluZz4+IG1fY2xvc2VJbmZvOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgbV93ZWJQYWdlUHJveHlJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2
MzdjOGVkODk1YmMuLjk4ZDkyZDFiNWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTQ0LDEwICs0NCwxMSBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCitXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXIm
IHNlcnZlcikKICAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9z
ZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFn
ZVByb3h5SUQpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCAzOTA2YjQzZWRmYWIuLmIzZGJmNGNjMTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTQsNyArNTUsNyBAQCBjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZl
ciYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkg
Y29uc3Q7CkBAIC05OSw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViQ29yZTo6
U1dTZXJ2ZXI+IG1fc2VydmVyOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
LCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAg
IGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OyAvLyBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
OWQwZDYzOTUwODlkLi41YjU1OGU3ZTJlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tD
b2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hv
dWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZD4gcGNtRGF0YUNhcnJpZWQpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRh
c2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24s
IGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHks
IGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZywgcGNtRGF0YUNhcnJpZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29y
a0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQs
IHdlYlBhZ2VQcm94eUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNu
aWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcGNtRGF0YUNhcnJpZWQp
KTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpb3JpdHkoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHkpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ks
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+KTsKIAogICAgIGJvb2wgdHJ5UGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25p
ZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBO
U1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYpOwpAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVl
blNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQppbmRleCBkMDllYTAxNWIzMDAuLjMzOWUxMGQyMDJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0yOTEsMTEgKzI5MSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcHV0ZUlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4g
c2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAotTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkg
c2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQogICAgIDogTmV0d29ya0RhdGFUYXNr
KHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtl
V2Vha1B0cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lv
bldyYXBwZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkpCisgICAgLCBtX3Nlc3Npb25X
cmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNz
aW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2sod2ViUGFnZVByb3h5SUQsIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJ
RCkKKyAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX2lzRm9y
TWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCiAgICAgLCBtX2lzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZChjb21wdXRlSXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKHNlc3Npb24pKQogICAgICwgbV9zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhzaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggM2U5YTM5OGUzNzNhLi42YTBmMGI4MDdi
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgX05TSFNU
U1N0b3JhZ2U7CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFza0NvY29hLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0VGFzay5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1Nl
c3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKLSAgICB2b2lkIGluaXRpYWxp
emVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
KyAgICBTZXNzaW9uV3JhcHBlciYgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25J
Zk5lZWRlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAKICAgICBjb25zdCBTdHJpbmcmIGJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udGludWVEaWRS
ZWNlaXZlQ2hhbGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7CiAKLSAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lv
bldyYXBwZXJGb3JEb3dubG9hZHMoKSB7IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0
b3JhZ2U7IH0KKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZFJl
c3VtZSgpIHsgcmV0dXJuIG1fZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7IH0KIAogICAgIGJvb2wgZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Zhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOyB9CiAg
ICAgYm9vbCBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7IH0KQEAgLTk2LDExICs5
NywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBib29sIGhhc0FwcEJvdW5k
U2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICEhbV9hcHBCb3VuZFNlc3Npb247IH0K
KyAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJBcHBCb3VuZFNlc3Npb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgU2Vzc2lvbldy
YXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+KTsKKyAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJG
b3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlB
dXRoZW50aWNhdGlvbjsgfQogICAgIAogICAgIF9OU0hTVFNTdG9yYWdlICpoc3RzU3RvcmFnZSgp
IGNvbnN0OwpAQCAtMTA5LDEwICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsgfQotICAgIFNlc3Npb25X
cmFwcGVyJiBpc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogI2lm
IEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBTZXNzaW9uV3JhcHBlciYgYXBwQm91bmRT
ZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBTZXNzaW9uV3Jh
cHBlciYgYXBwQm91bmRTZXNzaW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICNlbmRpZgogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTEyMCw5ICsxMjEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJB
bHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoTlNVUkxT
RVNTSU9OX1dFQlNPQ0tFVCkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwotICAgIHZvaWQg
YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVX
ZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOworICAgIHZvaWQgYWRkV2ViU29ja2V0VGFz
ayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJTb2NrZXRUYXNrJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYlNvY2tldFRh
c2smKSBmaW5hbDsKICNlbmRpZgogCiAgICAgc3RydWN0IElzb2xhdGVkU2Vzc2lvbiB7CkBAIC0x
MzMsMTMgKzEzNCwzNSBAQCBwcml2YXRlOgogICAgICAgICBXYWxsVGltZSBsYXN0VXNlZDsKICAg
ICB9OwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlx
dWVfcHRyPElzb2xhdGVkU2Vzc2lvbj4+IG1faXNvbGF0ZWRTZXNzaW9uczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9uPiBtX2FwcEJvdW5kU2Vzc2lvbjsKKyAgICBzdHJ1Y3Qg
U2Vzc2lvblNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlc3Npb25TZXQ+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBSZWY8U2Vzc2lvblNldD4gY3JlYXRlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vzc2lvblNldCk7CisgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgU2Vzc2lvbldyYXBwZXImIGlzb2xhdGVkU2Vzc2lvbihXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisgICAgICAg
IFNlc3Npb25XcmFwcGVyJiBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVl
ZGVkKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJik7CisK
KyAgICAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVf
cHRyPElzb2xhdGVkU2Vzc2lvbj4+IGlzb2xhdGVkU2Vzc2lvbnM7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29sYXRlZFNlc3Npb24+IGFwcEJvdW5kU2Vzc2lvbjsKIAotICAgIFNlc3Npb25X
cmFwcGVyIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKLSAgICBTZXNzaW9uV3JhcHBl
ciBtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7Ci0gICAgU2Vzc2lvbldyYXBwZXIg
bV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBzZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBTZXNzaW9uV3JhcHBlciBlcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uOwogCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2Vzc2lvblNldCgp
ID0gZGVmYXVsdDsKKyAgICB9OworCisgICAgUmVmPFNlc3Npb25TZXQ+IG1fZGVmYXVsdFNlc3Np
b25TZXQ7CisgICAgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lv
blNldD4+IG1fcGVyUGFnZVNlc3Npb25TZXRzOworCisgICAgdm9pZCBpbml0aWFsaXplU3RhbmRh
cmRTZXNzaW9uc0luU2V0KFNlc3Npb25TZXQmLCBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICop
OworICAgIFNlc3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIpOworICAgIGNvbnN0IFNlc3Npb25TZXQmIHNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbFNlc3Npb25T
ZXQoU2Vzc2lvblNldCYpOworICAgIAogICAgIFN0cmluZyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgbV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAg
ICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IDZhMmRmMjcwNTQwMi4uNjNiZDVjMzUyMjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0xMDYxLDEwICsxMDYxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogX05TSFNUU1N0b3JhZ2UgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdl
KCkgY29uc3QKIHsKICNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKLSAgICBOU1VSTFNlc3Npb25Db25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbjsKKyAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gbV9kZWZhdWx0U2Vzc2lvblNldC0+c2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzIHJlc3BvbmRzVG9TZWxlY3RvciBjaGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVt
LzUwMTA5NjMxIGlzIGluIGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCiAgICAgaWYgKFtj
b25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0p
Ci0gICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5n
ZXQoKS5jb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb24uX2hzdHNTdG9yYWdlOwogI2VuZGlmCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTExNjAs
NiArMTE2MCw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAoTmV0d29ya1Nl
c3Npb25Db2NvYSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiAKIE5ldHdvcmtTZXNzaW9uQ29j
b2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3
b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKKyAgICAsIG1fZGVmYXVsdFNl
c3Npb25TZXQoU2Vzc2lvblNldDo6Y3JlYXRlKCkpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcihwYXJhbWV0ZXJzLmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcikKICAgICAsIG1fc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKQogICAgICwgbV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIocGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIp
CkBAIC0xMjcxLDE1ICsxMjcyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Np
b25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAgICAg
Y29va2llU3RvcmFnZS5nZXQoKS5fb3ZlcnJpZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5ID0g
WUVTOwogI2VuZGlmCiAKLSAgICBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlh
bGl6ZShjb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKLSAgICBMT0coTmV0d29y
a1Nlc3Npb24sICJDcmVhdGVkIE5ldHdvcmtTZXNzaW9uIHdpdGggY29va2llQWNjZXB0UG9saWN5
ICVsdSIsIGNvbmZpZ3VyYXRpb24uSFRUUENvb2tpZVN0b3JhZ2UuY29va2llQWNjZXB0UG9saWN5
KTsKLQotICAgIGNvbmZpZ3VyYXRpb24uVVJMQ3JlZGVudGlhbFN0b3JhZ2UgPSBuaWw7Ci0gICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzczOTQK
LSAgICAvLyBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gbmlsOwotICAgIC8vIGNv
bmZpZ3VyYXRpb24uSFRUUENvb2tpZUFjY2VwdFBvbGljeSA9IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU5ldmVyOwotCi0gICAgbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRp
YWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKKyAgICBpbml0
aWFsaXplU3RhbmRhcmRTZXNzaW9uc0luU2V0KG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCksIGNv
bmZpZ3VyYXRpb24pOwogCiAgICAgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxl
ZCA9IHBhcmFtZXRlcnMuZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAg
bV9hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5n
ID0gcGFyYW1ldGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlv
bnNGb3JUZXN0aW5nOwpAQCAtMTI5NiwxMCArMTI4OSw0MyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0
d29yawogCiBOZXR3b3JrU2Vzc2lvbkNvY29hOjp+TmV0d29ya1Nlc3Npb25Db2NvYSgpID0gZGVm
YXVsdDsKIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3Rh
dGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKQordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplU3RhbmRh
cmRTZXNzaW9uc0luU2V0KFNlc3Npb25TZXQmIHNlc3Npb25TZXQsIE5TVVJMU2Vzc2lvbkNvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCiB7CisgICAgc2Vzc2lvblNldC5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OjpObyk7CisgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQ3JlYXRlZCBOZXR3b3JrU2Vzc2lvbiB3
aXRoIGNvb2tpZUFjY2VwdFBvbGljeSAlbHUiLCBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9y
YWdlLmNvb2tpZUFjY2VwdFBvbGljeSk7CisKKyAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRp
YWxTdG9yYWdlID0gbmlsOworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3Mzk0CisgICAgLy8gY29uZmlndXJhdGlvbi5IVFRQQ29va2llU3Rv
cmFnZSA9IG5pbDsKKyAgICAvLyBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kg
PSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKworICAgIHNlc3Npb25TZXQuc2Vzc2lv
bldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlz
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpObyk7Cit9CisKK05ldHdvcmtTZXNzaW9uQ29jb2E6OlNlc3Npb25T
ZXQmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCit7CisgICAgU2Vzc2lvblNldCogc2Vzc2lvblNldCA9
IHdlYlBhZ2VQcm94eUlEID8gbV9wZXJQYWdlU2Vzc2lvblNldHMuZ2V0KHdlYlBhZ2VQcm94eUlE
KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHNlc3Npb25TZXQgPyAqc2Vzc2lvblNldCA6IG1fZGVm
YXVsdFNlc3Npb25TZXQuZ2V0KCk7Cit9CisKK2NvbnN0IE5ldHdvcmtTZXNzaW9uQ29jb2E6OlNl
c3Npb25TZXQmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRGb3JQYWdlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpIGNvbnN0Cit7CisgICAgU2Vzc2lvblNldCog
c2Vzc2lvblNldCA9IHdlYlBhZ2VQcm94eUlEID8gbV9wZXJQYWdlU2Vzc2lvblNldHMuZ2V0KHdl
YlBhZ2VQcm94eUlEKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHNlc3Npb25TZXQgPyAqc2Vzc2lv
blNldCA6IG1fZGVmYXVsdFNlc3Npb25TZXQuZ2V0KCk7Cit9CisKK1Nlc3Npb25XcmFwcGVyJiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklm
TmVlZGVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQoreworICAgIHJldHVybiBzZXNz
aW9uU2V0Rm9yUGFnZShwYWdlSUQpLmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9u
SWZOZWVkZWQoaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgKnRoaXMpOworfQorCitTZXNz
aW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6U2Vzc2lvblNldDo6aW5pdGlhbGl6ZUVw
aGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJiBzZXNz
aW9uKQoreworICAgIGlmIChlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAg
ICAgIHJldHVybiBlcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworCiAgICAgTlNVUkxTZXNzaW9u
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
IGVwaGVtZXJhbFNlc3Npb25Db25maWd1cmF0aW9uXTsKLSAgICBOU1VSTFNlc3Npb25Db25maWd1
cmF0aW9uICpleGlzdGluZ0NvbmZpZ3VyYXRpb24gPSBtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOworICAgIE5TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gKmV4aXN0aW5nQ29uZmlndXJhdGlvbiA9IHNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOwogCiAgICAgY29uZmlndXJh
dGlvbi5IVFRQQ29va2llQWNjZXB0UG9saWN5ID0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2
ZXI7CiAgICAgY29uZmlndXJhdGlvbi5VUkxDcmVkZW50aWFsU3RvcmFnZSA9IG5pbDsKQEAgLTEz
MTgsMTAgKzEzNDQsMTIgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBo
ZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9BcHBCb3UKICAgICAgICAgY29uZmln
dXJhdGlvbi5fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIgPSBleGlzdGluZ0NvbmZpZ3VyYXRp
b24uX2F0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKLSAgICBtX2VwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24uaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcywgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5pbml0
aWFsaXplKGNvbmZpZ3VyYXRpb24sIHNlc3Npb24sIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
OworCisgICAgcmV0dXJuIGVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CiB9CiAKLVNlc3Npb25X
cmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCitTZXNzaW9uV3Jh
cHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGF1dG8gc2hvdWxkQmVDb25zaWRlcmVk
QXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID8gKmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOwogICAgIGlm
IChSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKSB7CkBAIC0xMzMyLDYyICsxMzYwLDg0IEBAIFNlc3Np
b25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29u
c3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgYXV0byBmaXJzdFBhcnR5ID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAg
ICAgaWYgKHN0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2Vl
cEZpcnN0UGFydHlDb29raWVzRm9yKGZpcnN0UGFydHkpKQotICAgICAgICAgICAgcmV0dXJuIGlz
b2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZmlyc3RQYXJ0eSwgc2hvdWxk
QmVDb25zaWRlcmVkQXBwQm91bmQpOworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25TZXRGb3JQ
YWdlKHdlYlBhZ2VQcm94eUlEKS5pc29sYXRlZFNlc3Npb24oc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGZpcnN0UGFydHksIHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5kLCAqdGhpcyk7CiAgICAg
fSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5k
ID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpCi0gICAgICAgIHJldHVybiBhcHBC
b3VuZFNlc3Npb24oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgICAgICByZXR1cm4gYXBw
Qm91bmRTZXNzaW9uKHdlYlBhZ2VQcm94eUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAj
ZW5kaWYKIAogICAgIHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNl
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6Ci0gICAgICAgIHJldHVybiBt
X3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzZXNzaW9uU2V0
Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKICAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKLSAgICAg
ICAgcmV0dXJuIG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgcmV0
dXJuIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKS5zZXNzaW9uV2l0aG91dENyZWRl
bnRpYWxTdG9yYWdlOwogICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkVwaGVtZXJhbFN0YXRlbGVzczoKLSAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRlbGVzc1Nl
c3Npb24uc2Vzc2lvbikKLSAgICAgICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NT
ZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7Ci0gICAgICAgIHJldHVybiBt
X2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CisgICAgICAgIHJldHVybiBpbml0aWFsaXplRXBo
ZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKHdlYlBhZ2VQcm94eUlELCBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjo6Tm8pOwogICAgIH0KIH0KIAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKLVNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNl
c3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNz
aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQogewotICAgIGlmICgh
bV9hcHBCb3VuZFNlc3Npb24pIHsKLSAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24gPSBtYWtlVW5p
cXVlPElzb2xhdGVkU2Vzc2lvbj4oKTsKLSAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Olll
cyk7Ci0gICAgICAgIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxT
dG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Np
b24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Olllcyk7CisgICAg
YXV0byYgc2Vzc2lvblNldCA9IHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKTsKKyAg
ICAKKyAgICBpZiAoIXNlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uKSB7CisgICAgICAgIHNlc3Np
b25TZXQuYXBwQm91bmRTZXNzaW9uID0gbWFrZVVuaXF1ZTxJc29sYXRlZFNlc3Npb24+KCk7Cisg
ICAgICAgIHNlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLmluaXRpYWxpemUoc2Vzc2lvblNldC5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpOworICAg
ICAgICBzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFs
U3RvcmFnZS5pbml0aWFsaXplKHNlc3Npb25TZXQuc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3Rv
cmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZ
ZXMpOwogICAgIH0KIAogICAgIGF1dG8mIHNlc3Npb25XcmFwcGVyID0gWyZdIChhdXRvIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KSAtPiBTZXNzaW9uV3JhcHBlciYgewogICAgICAgICBzd2l0Y2gg
KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OlVzZToKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwg
IlVzaW5nIGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7
Ci0gICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Np
b24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOgogICAgICAgICAgICAgTE9HKE5ldHdv
cmtTZXNzaW9uLCAiVXNpbmcgYXBwLWJvdW5kIE5TVVJMU2Vzc2lvbiB3aXRob3V0IGNyZWRlbnRp
YWwgc3RvcmFnZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBtX2FwcEJvdW5kU2Vzc2lvbi0+c2Vz
c2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9u
U2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZTsKICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzOgotICAgICAgICAgICAgaWYgKCFtX2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uc2Vz
c2lvbikKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lv
bihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKTsKLSAgICAgICAgICAgIHJldHVybiBt
X2VwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6
ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZCh3ZWJQYWdlUHJveHlJRCwgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Olllcyk7CiAgICAgICAgIH0KICAgICB9IChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSk7CiAKICAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7CiB9CisKK2Jvb2wg
TmV0d29ya1Nlc3Npb25Db2NvYTo6aGFzQXBwQm91bmRTZXNzaW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAoISFtX2RlZmF1bHRTZXNzaW9uU2V0LT5hcHBCb3VuZFNlc3Npb24pCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICghIXNlc3Npb25TZXQtPmFwcEJvdW5kU2Vzc2lvbikK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oKQor
eworICAgIG1fZGVmYXVsdFNlc3Npb25TZXQtPmFwcEJvdW5kU2Vzc2lvbiA9IG51bGxwdHI7Cisg
ICAgZm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFsdWVzKCkp
CisgICAgICAgIHNlc3Npb25TZXQtPmFwcEJvdW5kU2Vzc2lvbiA9IG51bGxwdHI7Cit9CiAjZW5k
aWYKIAotU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vzc2lv
bihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK1Nl
c3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7Ci0gICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluXSB7CisgICAgcmV0dXJuIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQ
cm94eUlEKS5pc29sYXRlZFNlc3Npb24oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGZpcnN0UGFy
dHlEb21haW4sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICp0aGlzKTsKK30KKworU2Vz
c2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQ6Omlzb2xhdGVkU2Vz
c2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
TmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbikKK3sKKyAgICBhdXRvJiBlbnRyeSA9IGlzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzLCAmc2Vzc2lvbiwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0gewogICAgICAgICBhdXRvIG5ld0VudHJ5ID0gbWFr
ZVVuaXF1ZTxJc29sYXRlZFNlc3Npb24+KCk7Ci0gICAgICAgIG5ld0VudHJ5LT5zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9y
YWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAg
ICAgICBuZXdFbnRyeS0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3Vy
YXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2Us
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgICAgICBuZXdFbnRyeS0+c2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKHNlc3Npb25XaXRoQ3JlZGVudGlhbFN0
b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCBzZXNzaW9uLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
KyAgICAgICAgbmV3RW50cnktPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlh
bGl6ZShzZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmln
dXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90
VXNlLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgcmV0dXJuIG5ld0Vu
dHJ5OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIApAQCAtMTQwMiw3NSArMTQ1Miw4MiBAQCBT
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUAogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
VXNpbmcgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uIHdpdGhvdXQgY3JlZGVudGlhbCBzdG9yYWdlLiIp
OwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5LT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9y
YWdlOwogICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhl
bWVyYWxTdGF0ZWxlc3M6Ci0gICAgICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vz
c2lvbi5zZXNzaW9uKQotICAgICAgICAgICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxl
c3NTZXNzaW9uKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgICAgICAgICAgcmV0
dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgICAgIHJldHVybiBpbml0
aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIHNlc3Npb24pOwogICAgICAgICB9CiAgICAgfSAoc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpOwotICAgIAotICAgIGlmIChtX2lzb2xhdGVkU2Vzc2lvbnMuc2l6ZSgpID4gbWF4
TnVtYmVyT2ZJc29sYXRlZFNlc3Npb25zKSB7CisKKyAgICBpZiAoaXNvbGF0ZWRTZXNzaW9ucy5z
aXplKCkgPiBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMpIHsKICAgICAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4ga2V5VG9SZW1vdmU7CiAgICAgICAgIGF1dG8gb2xkZXN0VGltZXN0
YW1wID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IG1faXNvbGF0
ZWRTZXNzaW9ucy5rZXlzKCkpIHsKLSAgICAgICAgICAgIGF1dG8gdGltZXN0YW1wID0gbV9pc29s
YXRlZFNlc3Npb25zLmdldChrZXkpLT5sYXN0VXNlZDsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBpc29sYXRlZFNlc3Npb25zLmtleXMoKSkgeworICAgICAgICAgICAgYXV0byB0aW1lc3RhbXAg
PSBpc29sYXRlZFNlc3Npb25zLmdldChrZXkpLT5sYXN0VXNlZDsKICAgICAgICAgICAgIGlmICh0
aW1lc3RhbXAgPCBvbGRlc3RUaW1lc3RhbXApIHsKICAgICAgICAgICAgICAgICBvbGRlc3RUaW1l
c3RhbXAgPSB0aW1lc3RhbXA7CiAgICAgICAgICAgICAgICAga2V5VG9SZW1vdmUgPSBrZXk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQWJv
dXQgdG8gcmVtb3ZlIGlzb2xhdGVkIE5TVVJMU2Vzc2lvbi4iKTsKLSAgICAgICAgbV9pc29sYXRl
ZFNlc3Npb25zLnJlbW92ZShrZXlUb1JlbW92ZSk7CisgICAgICAgIGlzb2xhdGVkU2Vzc2lvbnMu
cmVtb3ZlKGtleVRvUmVtb3ZlKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FTU0VSVChtX2lzb2xh
dGVkU2Vzc2lvbnMuc2l6ZSgpIDw9IG1heE51bWJlck9mSXNvbGF0ZWRTZXNzaW9ucyk7CisgICAg
UkVMRUFTRV9BU1NFUlQoaXNvbGF0ZWRTZXNzaW9ucy5zaXplKCkgPD0gbWF4TnVtYmVyT2ZJc29s
YXRlZFNlc3Npb25zKTsKIAogICAgIHJldHVybiBzZXNzaW9uV3JhcHBlcjsKIH0KIAogYm9vbCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKSBjb25zdAogewotICAgIHJldHVybiBtX2lzb2xhdGVkU2Vz
c2lvbnMuY29udGFpbnMoZG9tYWluKTsKKyAgICBpZiAobV9kZWZhdWx0U2Vzc2lvblNldC0+aXNv
bGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21haW4pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBmb3IgKGF1dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNzaW9uU2V0cy52YWx1ZXMoKSkg
eworICAgICAgICBpZiAoc2Vzc2lvblNldC0+aXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21h
aW4pKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhcklzb2xhdGVkU2Vzc2lv
bnMoKQogewotICAgIG1faXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwotfQotCi0jaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFwcEJv
dW5kU2Vzc2lvbigpCi17Ci0gICAgbV9hcHBCb3VuZFNlc3Npb24gPSBudWxscHRyOworICAgIG1f
ZGVmYXVsdFNlc3Npb25TZXQtPmlzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKKyAgICBmb3IgKGF1
dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNzaW9uU2V0cy52YWx1ZXMoKSkKKyAgICAgICAg
c2Vzc2lvblNldC0+aXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOwogfQotI2VuZGlmCiAKLXZvaWQg
TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCit2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWxTZXNzaW9uU2V0KFNlc3Npb25TZXQmIHNl
c3Npb25TZXQpCiB7Ci0gICAgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKTsK
LQotICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRl
QW5kQ2FuY2VsXTsKLSAgICBbbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Np
b24gaW52YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgW21fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lv
bi5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKLSAgICBbbV9zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07Ci0g
ICAgW21fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0
ZWRdOwotCi0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9pc29sYXRlZFNlc3Npb25zLnZhbHVl
cygpKSB7CisgICAgW3Nlc3Npb25TZXQuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNz
aW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRob3V0
Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICBbc2Vz
c2lvblNldC5lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uLnNlc3Npb24gaW52YWxpZGF0ZUFuZENh
bmNlbF07CisgICAgW3Nlc3Npb25TZXQuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxl
Z2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgIFtzZXNzaW9uU2V0LnNlc3Npb25XaXRob3V0
Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBbc2Vz
c2lvblNldC5lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlk
YXRlZF07CisKKyAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBzZXNzaW9uU2V0Lmlzb2xhdGVkU2Vz
c2lvbnMudmFsdWVzKCkpIHsKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKICAgICAgICAgW3Nlc3Npb24t
PnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVk
XTsKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vz
c2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRo
b3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9
Ci0gICAgbV9pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7CisgICAgc2Vzc2lvblNldC5pc29sYXRl
ZFNlc3Npb25zLmNsZWFyKCk7CiAKLSAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKLSAgICAg
ICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Np
b24gaW52YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwot
ICAgICAgICBbbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKLSAgICAgICAgW21fYXBwQm91bmRTZXNz
aW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZh
bGlkYXRlZF07CisgICAgaWYgKHNlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uKSB7CisgICAgICAg
IFtzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgICAgICBbc2Vzc2lvblNldC5hcHBC
b3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lv
bkludmFsaWRhdGVkXTsKKyAgICAgICAgW3Nlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07
CisgICAgICAgIFtzZXNzaW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIH0KIH0KIAor
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKK3sKKyAgICBO
ZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCgpOworCisgICAgaW52YWxpZGF0ZUFu
ZENhbmNlbFNlc3Npb25TZXQobV9kZWZhdWx0U2Vzc2lvblNldC5nZXQoKSk7CisgICAgZm9yIChh
dXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdlU2Vzc2lvblNldHMudmFsdWVzKCkpCisgICAgICAg
IGludmFsaWRhdGVBbmRDYW5jZWxTZXNzaW9uU2V0KCpzZXNzaW9uU2V0KTsKK30KKwogdm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKIHsKICNpZiAhVVNFKENSRURF
TlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKQEAgLTE1NzksNyArMTYzNiw3IEBA
IERNRldlYnNpdGVQb2xpY3lNb25pdG9yICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZXZpY2VNYW5h
Z2VtZW50UG9saWN5TW9uaXRvcigpCiB9CiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NL
RVQpCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6
Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYgY2hhbm5lbCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQorc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNy
ZWF0ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
TmV0d29ya1NvY2tldENoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQoIXJl
cXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpTZWNXZWJT
b2NrZXRQcm90b2NvbCkpOwogICAgIGF1dG8gbnNSZXF1ZXN0ID0gcmV0YWluUHRyKHJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KSk7CkBAIC0xNTkxLDIwICsxNjQ4LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtT
CiAgICAgLy8gcmRhcjovL3Byb2JsZW0vNjgwNTcwMzE6IGV4cGxpY2l0bHkgZGlzYWJsZSBzbmlm
ZmluZyBmb3IgV2ViU29ja2V0IGhhbmRzaGFrZXMuCiAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVy
dHk6QE5PIGZvcktleTooTlNTdHJpbmcgKilfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxk
U25pZmZdOwogCi0gICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sg
PSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29ja2V0VGFza1dp
dGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CisgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldl
YlNvY2tldFRhc2s+IHRhc2sgPSBbc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLnNl
c3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVl
c3Q6bnNSZXF1ZXN0LmdldCgpXTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNr
PihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29h
OjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCit2b2lkIE5ldHdvcmtTZXNz
aW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViU29ja2V0VGFzayYgdGFzaykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV9z
ZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNrTWFwLmNvbnRhaW5z
KHRhc2suaWRlbnRpZmllcigpKSk7Ci0gICAgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LndlYlNvY2tldERhdGFUYXNrTWFwLmFkZCh0YXNrLmlkZW50aWZpZXIoKSwgJnRhc2spOworICAg
IFJFTEVBU0VfQVNTRVJUKCFzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5jb250YWlucyh0YXNr
LmlkZW50aWZpZXIoKSkpOworICAgIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKS5z
ZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNrTWFwLmFkZCh0YXNr
LmlkZW50aWZpZXIoKSwgJnRhc2spOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJl
bW92ZVdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYgdGFzaykKK3ZvaWQgTmV0d29ya1Nlc3Np
b25Db2NvYTo6cmVtb3ZlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBXZWJTb2NrZXRUYXNrJiB0YXNrKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1f
c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5jb250YWlu
cyh0YXNrLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZS53ZWJTb2NrZXREYXRhVGFza01hcC5yZW1vdmUodGFzay5pZGVudGlmaWVyKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKS5zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNrTWFwLmNvbnRhaW5zKHRhc2suaWRl
bnRpZmllcigpKSk7CisgICAgc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLnNlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAucmVtb3ZlKHRhc2su
aWRlbnRpZmllcigpKTsKIH0KIAogI2VuZGlmIC8vIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKQEAgLTE2MTMsNyArMTY3MCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2CiB7CiAjaWYg
SEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwotICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZp
Y2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNz
aW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlOworICAg
IF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fZGVmYXVsdFNl
c3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKICAgICBOU0FycmF5PF9OU0hU
VFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSAqPiAqZW50cmllcyA9IFtzdG9yYWdlIEhUVFBTZXJ2
aWNlRW50cmllc1dpdGhGaWx0ZXI6X05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIuZW1w
dHlGaWx0ZXJdOwogCiAgICAgZm9yIChfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkqIGVu
dHJ5IGluIGVudHJpZXMpIHsKQEAgLTE2MjksNyArMTY4Niw3IEBAIFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhvc3ROYW1lc1dpdGhBbHRl
cm5hdGl2CiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRlbGV0ZUFsdGVybmF0aXZlU2Vydmlj
ZXNGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKQogewogI2lmIEhBVkUo
Q0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgX05TSFRUUEFsdGVybmF0aXZlU2Vy
dmljZXNTdG9yYWdlKiBzdG9yYWdlID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNl
c3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7Cisg
ICAgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlKiBzdG9yYWdlID0gbV9kZWZhdWx0
U2Vzc2lvblNldC0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNv
bmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlOwogICAgIGZvciAoYXV0byYg
aG9zdCA6IGhvc3RzKQogICAgICAgICBbc3RvcmFnZSByZW1vdmVIVFRQQWx0ZXJuYXRpdmVTZXJ2
aWNlRW50cmllc1dpdGhSZWdpc3RyYWJsZURvbWFpbjpob3N0XTsKICNlbHNlCkBAIC0xNjQwLDcg
KzE2OTcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRlbGV0ZUFsdGVybmF0aXZlU2Vy
dmljZXNGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cgogdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsK
ICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIF9OU0hUVFBBbHRl
cm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNT
dG9yYWdlOworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9
IG1fZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
bi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKICAgICBO
U1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVw
b2NoKCkuc2Vjb25kcygpOwogICAgIE5TRGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVydmFsXTsKICAgICBbc3RvcmFnZSByZW1vdmVIVFRQ
QWx0ZXJuYXRpdmVTZXJ2aWNlRW50cmllc0NyZWF0ZWRBZnRlckRhdGU6ZGF0ZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNv
dXAuY3BwCmluZGV4IDZlOTczZjUxOGMxNy4uMDZjYTI1MmIwNDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyB2b2lkIHdlYlNvY2tldE1lc3NhZ2VOZXR3b3Jr
RXZlbnRDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEdTb2NrCiB9CiAjZW5kaWYK
IAotc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorc3RkOjp1bmlx
dWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0
VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYgY2hhbm5l
bCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogewogICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+IHNvdXBNZXNzYWdlID0gcmVxdWVzdC5jcmVh
dGVTb3VwTWVzc2FnZShibG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKCFzb3VwTWVzc2FnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuaAppbmRleCA5YTAxNDY4NGE1Y2QuLmIwMTdjZWZmYzBjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRl
ICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5SWRlbnRpZmllci5oIgogCiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Np
b247CiAKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJveHlTZXR0aW5n
cyhXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmJik7CiAKIHByaXZhdGU6Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29y
a1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFz
az4gY3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOZXR3b3JrU29j
a2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIGZpbmFsOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3
b3JrU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAKaW5k
ZXggZGJiZTFiZjA5MDM1Li5iMjA5MWUzM2YyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nSW5pdGlh
bGl6YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogCkBAIC05MCw2ICs5MSw3IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6
aW5pdGlhbGl6ZShjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
CiAgICAgLy8gSW4gV2ViS2l0Miwgb25seSB0aGUgVUkgcHJvY2VzcyBzaG91bGQgZXZlciBiZSBn
ZW5lcmF0aW5nIGNlcnRhaW4gaWRlbnRpZmllcnMuCiAgICAgUEFMOjpTZXNzaW9uSUQ6OmVuYWJs
ZUdlbmVyYXRpb25Qcm90ZWN0aW9uKCk7CiAgICAgQ29udGVudFdvcmxkSWRlbnRpZmllcjo6ZW5h
YmxlR2VuZXJhdGlvblByb3RlY3Rpb24oKTsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpl
bmFibGVHZW5lcmF0aW9uUHJvdGVjdGlvbigpOwogCiAgICAgbV9jb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHBhcmFtZXRlcnMuY29ubmVjdGlvbklk
ZW50aWZpZXIsICp0aGlzKTsKICAgICBpbml0aWFsaXplQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb24u
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA0NWVmNWQzMTE1NjcuLjk0MjUxNDg2MTc3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXRDaGFubmVsOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQp
CitSZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29j
a2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlNvY2tldENoYW5uZWwod2ViUGFnZVByb3h5SUQsIGRvY3VtZW50LCBjbGllbnQpKTsK
IH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCkBAIC02
OCwxMSArNjgsMTIgQEAgTmV0d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVN
ZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2MKICAgICB9IH07CiB9CiAKLVdl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQpCitXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRD
aGFubmVsKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIERvY3VtZW50JiBk
b2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQogICAgIDogbV9kb2N1bWVu
dChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAgICAgLCBtX2NsaWVudChtYWtlV2Vha1B0cihjbGll
bnQpKQogICAgICwgbV9tZXNzYWdlUXVldWUoY3JlYXRlTWVzc2FnZVF1ZXVlKGRvY3VtZW50LCAq
dGhpcykpCiAgICAgLCBtX2luc3BlY3Rvcihkb2N1bWVudCkKKyAgICAsIG1fd2ViUGFnZVByb3h5
SUQod2ViUGFnZVByb3h5SUQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViU29j
a2V0Q2hhbm5lbE1hbmFnZXIoKS5hZGRDaGFubmVsKCp0aGlzKTsKIH0KQEAgLTExNiw3ICsxMTcs
NyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNv
bm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAKICAgICBtX2luc3BlY3Rvci5kaWRDcmVhdGVX
ZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgdXJsKTsKICAgICBtX3VybCA9IHJlcXVlc3QtPnVy
bCgpOwotICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFubmVsIHsgKnJlcXVlc3QsIHByb3RvY29sLCBt
X2lkZW50aWZpZXIgfSk7CisgICAgTWVzc2FnZVNlbmRlcjo6c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVNvY2tldENoYW5uZWwgeyAqcmVxdWVzdCwg
cHJvdG9jb2wsIG1faWRlbnRpZmllciwgbV93ZWJQYWdlUHJveHlJRCB9KTsKICAgICByZXR1cm4g
Q29ubmVjdFN0YXR1czo6T0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwMTNmNjhhMjM5NGUuLjA5NGJhZjYx
ZjU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya1NlbmRRdWV1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC00NSw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMg
V2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwsIHB1YmxpYyBSZWZDb3VudGVkPFdl
YlNvY2tldENoYW5uZWw+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldENoYW5u
ZWw+IGNyZWF0ZShXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxD
bGllbnQmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWxDbGllbnQmKTsKICAgICB+V2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTU2LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46
OmRlcmVmOwogCiBwcml2YXRlOgotICAgIFdlYlNvY2tldENoYW5uZWwoV2ViQ29yZTo6RG9jdW1l
bnQmLCBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50Jik7CisgICAgV2ViU29ja2V0Q2hh
bm5lbChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudCYsIFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWxDbGllbnQmKTsKIAogICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3Jr
U2VuZFF1ZXVlIGNyZWF0ZU1lc3NhZ2VRdWV1ZShXZWJDb3JlOjpEb2N1bWVudCYsIFdlYlNvY2tl
dENoYW5uZWwmKTsKIApAQCAtMTE2LDYgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbEluc3BlY3RvciBtX2luc3BlY3RvcjsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9oYW5kc2hha2VSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9oYW5kc2hha2VSZXNwb25zZTsKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1f
d2ViUGFnZVByb3h5SUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcApp
bmRleCBjNTNmY2Q2ZDQ3MTEuLjIwOTFkZDkzOTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRl
U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdQogCiBSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVXZWJTb2NrZXRDaGFubmVsKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQogewotICAg
IHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCk7CisgICAg
cmV0dXJuIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlELCBkb2N1bWVu
dCwgY2xpZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAppbmRleCAxYjM1
NTJkYTM2NDAuLjkwYzgyOTkyNjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCkBAIC0yNSwxNiArMjUsMjUgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb2NrZXRQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0UHJv
dmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIpOyB9CisgICAgc3Rh
dGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIo
d2ViUGFnZVByb3h5SUQpKTsgfQorICAgIFdlYlNvY2tldFByb3ZpZGVyKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCisgICAgICAgIDogbV93ZWJQYWdlUHJveHlJRCh3ZWJQ
YWdlUHJveHlJRCkKKyAgICB7CisgICAgfQorCiAgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFdl
YkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKSBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZVdlYlNvY2tldENoYW5uZWwoV2Vi
Q29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50JikgZmluYWw7
CiAgICAgdmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KKworcHJpdmF0ZToKKyAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDJmMzc5YmExYmJmLi41MmQ3YmUwMTE1
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEyNCw3ICsxMjQs
NyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjplc3RhYmxpc2hDb25uZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fd2ViUGFnZVByb3h5SUQs
IG1fcmVnaXN0cmFibGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwog
fQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpAQCAtMTQyLDcgKzE0Miw3
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29y
a2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJv
dmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwSUQpOwogI2VuZGlmCi0gICAgcGFnZUNvbmZp
Z3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIgPSBXZWJTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlKG1fd2ViUGFnZVByb3h5SUQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250
ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICNpZiBFTkFCTEUoV0VCX1JU
QykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5saWJXZWJSVENQcm92aWRlciA9IG1ha2VVbmlxdWVS
ZWY8U2VydmljZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4NGQwNzg4MDI3OWQuLjNjZTQ2ODgx
NmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTUyNiw3ICs1MjYsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgUGFnZUNvbmZp
Z3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNlc3Npb25JRCgpLAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4o
dGhpcyksCi0gICAgICAgIFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwKKyAgICAgICAgV2Vi
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZShwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlkZW50aWZpZXIp
LAogICAgICAgICBjcmVhdGVMaWJXZWJSVENQcm92aWRlcigqdGhpcyksCiAgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLAo=
</data>
<flag name="review"
          id="443965"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424391</attachid>
            <date>2021-03-26 12:31:51 -0700</date>
            <delta_ts>2021-03-26 15:05:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>70602</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODBjYTM1ZDZlOGJmLi45NDZjMTYzMTJhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTA5IEBACisyMDIxLTAzLTI2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBOZXR3b3JrU2Vzc2lvbkNvY29hIHRvIHByZXBhcmUgZm9yIHBl
ci1XZWJQYWdlUHJveHkgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0
ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UgcmVmYWN0
b3IpCisKKyAgICAgICAgQSBOZXR3b3JrU2Vzc2lvbkNvY29hIGhhcyAobikgTlNVUkxTZXNzaW9u
cyBhc3NvY2lhdGVkIHdpdGggaXQuCisgICAgICAgIAorICAgICAgICBXaGVuIGEgbmV0d29yayBs
b2FkIG5lZWRzIHRvIGhhcHBlbiAtIGJhc2VkIG9uIHRoZSBjb250ZXh0IGZvciB0aGF0IGxvYWQg
LSB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgTlNVUkxTZXNzaW9uIGlzIGNob3NlbiAob3IgY3Jl
YXRlZCkuCisgICAgICAgIAorICAgICAgICBJbiBhIGZ1dHVyZSBwYXRjaCwgdGhlcmUgd2lsbCBi
ZSBhbiBhZGRpdGlvbmFsIGJpdCBvZiBjb250ZXh0IHVzZWQgZm9yIGNob29zaW5nIHRoZSBhcHBy
b3ByaWF0ZQorICAgICAgICBOU1VSTFNlc3Npb24gLSBUaGUgV0tXZWJWaWV3IHRoZSBsb2FkIHdh
cyB0cmlnZ2VyZWQgZnJvbS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggdGFrZXMgdGhv
c2UgKG4pIE5TVVJMU2Vzc2lvbnMgYW5kIHdyYXBzIHRoZW0gaW4gYSBTZXNzaW9uU2V0IG9iamVj
dC4KKyAgICAgICAgSXQgYWxzbyBhZGRzIHRoZSBjb25jZXB0IG9mIGxvb2tpbmcgdXAgdGhlIGFw
cHJvcHJpYXRlIFNlc3Npb25TZXQgYmFzZWQgb24gdGhlIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIK
KyAgICAgICAgdHJpZ2dlcmluZyB0aGUgbG9hZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0
Y2ggYnkgaXRzZWxmIHNob3VsZCBub3QgYmUgYSBiZWhhdmlvciBjaGFuZ2UsIGJ1dCBhbGxvd3Mg
dGhlIGZvbGxvd3VwIHRvIGJlIG11Y2ggc2ltcGxlci4KKyAgICAgICAgCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVh
dGUpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnJlbW92ZVdlYlNvY2tldFRhc2spOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6YWRkV2ViU29ja2V0VGFzayk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
b2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hh
bm5lbDo6TmV0d29ya1NvY2tldENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6fk5ldHdvcmtTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZVN0YW5kYXJkU2Vzc2lvbnNJ
blNldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25TZXRG
b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvblNl
dEZvclBhZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpp
bml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6U2Vzc2lvblNldDo6aW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6OmFwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6Omhhc0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6U2Vzc2lvblNldDo6aXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNz
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJ
c29sYXRlZFNlc3Npb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6
aW52YWxpZGF0ZUFuZENhbmNlbFNlc3Npb25TZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2Vydmlj
ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVB
bHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Np
b24pOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291
cDo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuaDoKKyAgICAgICAgCisgICAgICAgICogU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplKToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJs
aXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgIAorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKToKKwogMjAyMS0wMy0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2Nv
Y29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4IDhjY2UyOTU1NGMwYi4uMjEwZjRkNTE1
MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9j
b2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTczLDEwICs3MywxMCBAQCB2b2lk
IERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsCiAKICAgICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9m
IHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUgbWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rv
d25sb2FkCiAgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2Fs
IHBhdGggd2UgZ290IGZyb20gdGhlIGRhdGEgYmFjayBpbnRvIHRoZSBkYXRhLgotICAgIG1fZG93
bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNl
c3Npb24gZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6dXBkYXRlZERhdGFdOworICAgIG1fZG93
bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkUmVzdW1l
KCkuc2Vzc2lvbiBkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CiAgICAg
YXV0byB0YXNrSWRlbnRpZmllciA9IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl07Ci0g
ICAgQVNTRVJUKCFjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5kb3du
bG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOwotICAgIGNvY29hU2Vzc2lvbi5zZXNz
aW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmFkZCh0YXNrSWRlbnRpZmllciwg
bV9kb3dubG9hZElEKTsKKyAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZv
ckRvd25sb2FkUmVzdW1lKCkuZG93bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZpZXIpKTsK
KyAgICBjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZFJlc3VtZSgpLmRvd25s
b2FkTWFwLmFkZCh0YXNrSWRlbnRpZmllciwgbV9kb3dubG9hZElEKTsKICAgICBtX2Rvd25sb2Fk
VGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IHBhdGg7CiAKICAgICBbbV9kb3du
bG9hZFRhc2sgcmVzdW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjg0NmM2
ZjRiM2JmLi4zNzFkMDIyZDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00
MDQsMTAgKzQwNCwxMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBTdHJpbmcgY2FjaGVQYQogICAgIG1fbmV0d29ya1Nv
Y2tldFN0cmVhbXMuYWRkKGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSht
X25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCksIG1fc2Vzc2lvbklELCBjYWNoZVBh
cnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRDaGFubmVs
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
V2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYlNvY2tldElkZW50aWZpZXIgaWRlbnRp
ZmllciwgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpCiB7CiAgICAgQVNT
RVJUKCFtX25ldHdvcmtTb2NrZXRDaGFubmVscy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAg
aWYgKGF1dG8gY2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoKnRoaXMsIG1f
c2Vzc2lvbklELCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8g
Y2hhbm5lbCA9IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoKnRoaXMsIG1fc2Vzc2lvbklE
LCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllciwgd2ViUGFnZVByb3h5SUQpKQogICAgICAg
ICBtX25ldHdvcmtTb2NrZXRDaGFubmVscy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjaGFubmVs
KSk7CiB9CiAKQEAgLTEwOTIsMTAgKzEwOTIsMTAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICBzZXJ2ZXIuYWRk
Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
c2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9z
ZXNzaW9uSUQpKQotICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCAqc2VydmVyKTsKKyAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbWFrZVVu
aXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0aGlzLCB3ZWJQYWdlUHJveHlJ
RCwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOwogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5YzUyOWY5MmNhZTIu
LjJlYzdkMTFjYTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjQwLDEyICsyNDAs
MTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBTdHJp
bmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwogCi0gICAg
dm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlU29ja2V0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNw
YWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKCk7Ci0gICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVnaXN0
ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggOTQ4YmNjYTQzZGE4Li5hMDk4NDEyYTVmM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjAsNyArNjAsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQp
CiAKICAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgU3RyaW5nIGNhY2hlUGFydGl0aW9u
LCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgQ3JlYXRlU29j
a2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHByb3Rv
Y29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgQ3JlYXRl
U29ja2V0Q2hhbm5lbChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHBy
b3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkKIAogICAgIENsZWFyUGFnZVNw
ZWNpZmljRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwogCkBAIC04Miw3ICs4
Miw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBUYWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3ModWludDY0X3Qg
cmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4gKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBu
ZXR3b3JrTWV0cmljcykgU3luY2hyb25vdXMKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYwogICAgIENsb3NlU1dDb250ZXh0
Q29ubmVjdGlvbigpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IDUzYWI2MGYzZTYzYS4uMWRlZWFjNTM0ZTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIFJlZjxOZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtEYXRhVGFzazo6
Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0CiAgICAgQVNTRVJUKCFw
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSk7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgLy8gRklYTUU6IEp1c3QgcGFzcyBwYXJhbWV0ZXJzIHRvIHRoZSBOZXR3b3Jr
RGF0YVRhc2tDb2NvYSBjb25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRl
cnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0
T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWlu
UmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5
VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwYXJhbWV0
ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBwYXJhbWV0ZXJzLnBjbURh
dGFDYXJyaWVkKTsKKyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNz
aW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBw
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgIHBhcmFtZXRl
cnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9s
aWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJz
LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hv
dWxkUHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJh
bWV0ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgcGFy
YW1ldGVycy5wY21EYXRhQ2FycmllZCk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1
cm4gTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVy
cy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFy
YW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0
ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDcxZDc3ZDZjODhiMi4uNjJlMzI1MzYzZjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlbW92ZUtlcHRBbGl2
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgbV9rZXB0QWxpdmVMb2Fk
cy5yZW1vdmUobG9hZGVyKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5l
dHdvcmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
K3N0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlV2Vi
U29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMWI2MTI3MzBjMTQxLi45YmEwMGNmMzJjY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEz
OSw5ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgUHJlZmV0Y2hDYWNoZSYgcHJlZmV0Y2hDYWNoZSgp
IHsgcmV0dXJuIG1fcHJlZmV0Y2hDYWNoZTsgfQogICAgIHZvaWQgY2xlYXJQcmVmZXRjaENhY2hl
KCkgeyBtX3ByZWZldGNoQ2FjaGUuY2xlYXIoKTsgfQogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hh
bm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRh
c2smKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNr
JikgeyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3JlYXRl
V2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5l
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYlNvY2tldFRhc2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViU29j
a2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJTb2NrZXRUYXNrJikgeyB9CiAKICAg
ICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Js
b2JSZWdpc3RyeTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IGM3Nzg4ODExZjAzMi4uZWIyODVkMTlhZDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtMzYsOSArMzYsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFu
bmVsPiBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRl
bnRpZmllciBpZGVudGlmaWVyKQorc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVs
PiBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29u
bmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1ha2VVbmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90
b2NvbCwgaWRlbnRpZmllciwgd2ViUGFnZVByb3h5SUQpOwogICAgIGlmICghcmVzdWx0LT5tX3Nv
Y2tldCkgewogICAgICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEgd2Vi
IHNvY2tldCB0YXNrIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NiwxOCArNDYs
MTkgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1O
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6TmV0d29ya1NvY2tldENoYW5uZWwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYlNv
Y2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKK05ldHdvcmtTb2NrZXRDaGFubmVsOjpOZXR3b3Jr
U29ja2V0Q2hhbm5lbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwg
TmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKQogICAgIDogbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKICAgICAsIG1fZXJyb3JUaW1l
cigqdGhpcywgJk5ldHdvcmtTb2NrZXRDaGFubmVsOjpzZW5kRGVsYXllZEVycm9yKQorICAgICwg
bV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zb2NrZXQgPSBtX3Nlc3Npb24tPmNyZWF0ZVdlYlNv
Y2tldFRhc2soKnRoaXMsIHJlcXVlc3QsIHByb3RvY29sKTsKKyAgICBtX3NvY2tldCA9IG1fc2Vz
c2lvbi0+Y3JlYXRlV2ViU29ja2V0VGFzayh3ZWJQYWdlUHJveHlJRCwgKnRoaXMsIHJlcXVlc3Qs
IHByb3RvY29sKTsKICAgICBpZiAobV9zb2NrZXQpIHsKLSAgICAgICAgbV9zZXNzaW9uLT5hZGRX
ZWJTb2NrZXRUYXNrKCptX3NvY2tldCk7CisgICAgICAgIG1fc2Vzc2lvbi0+YWRkV2ViU29ja2V0
VGFzayh3ZWJQYWdlUHJveHlJRCwgKm1fc29ja2V0KTsKICAgICAgICAgbV9zb2NrZXQtPnJlc3Vt
ZSgpOwogICAgIH0KIH0KQEAgLTY1LDcgKzY2LDcgQEAgTmV0d29ya1NvY2tldENoYW5uZWw6Ok5l
dHdvcmtTb2NrZXRDaGFubmVsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWMK
IE5ldHdvcmtTb2NrZXRDaGFubmVsOjp+TmV0d29ya1NvY2tldENoYW5uZWwoKQogewogICAgIGlm
IChtX3Nlc3Npb24pCi0gICAgICAgIG1fc2Vzc2lvbi0+cmVtb3ZlV2ViU29ja2V0VGFzaygqbV9z
b2NrZXQpOworICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZVdlYlNvY2tldFRhc2sobV93ZWJQYWdl
UHJveHlJRCwgKm1fc29ja2V0KTsKIAogICAgIGlmIChtX3NvY2tldCkKICAgICAgICAgbV9zb2Nr
ZXQtPmNhbmNlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDQ3ZTA2NTczNWFkYy4uZGE0MDVkOWE1OWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViU29ja2V0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KQEAgLTU0LDkgKzU1LDkgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBj
bGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5l
bD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1NvY2tldENoYW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyKTsKIAotICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBXZWJDb3JlOjpXZWJTb2Nr
ZXRJZGVudGlmaWVyKTsKKyAgICBOZXR3b3JrU29ja2V0Q2hhbm5lbChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAgICAgfk5ldHdvcmtTb2NrZXRDaGFubmVs
KCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOwpAQCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRpbWVy
IG1fZXJyb3JUaW1lcjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgT3B0aW9uYWw8
c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCBTdHJpbmc+PiBtX2Nsb3NlSW5mbzsKKyAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggNjM3YzhlZDg5NWJjLi45OGQ5MmQxYjVjNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC00NCwxMCAr
NDQsMTEgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTV1NlcnZlciYgc2VydmVyKQorV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVj
dGlvbikKICAgICAsIG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCisgICAgLCBtX3dlYlBh
Z2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogewogICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVj
dGlvbigqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKaW5kZXggMzkwNmI0M2VkZmFiLi5iM2RiZjRjYzEyMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTU0LDcgKzU1
LDcgQEAgY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
V2ViQ29yZTo6U1dTZXJ2ZXImKTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZlciYpOwogICAgIH5X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiYg
aXBjQ29ubmVjdGlvbigpIGNvbnN0OwpAQCAtOTksNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3NlcnZlcjsKICAgICBIYXNoTWFwPFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPj4gbV9vbmdv
aW5nRmV0Y2hlczsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CisgICAgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogfTsgLy8gY2xhc3MgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCmluZGV4IDlkMGQ2Mzk1MDg5ZC4uNWI1NThlN2UyZWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oCkBAIC00Niw5ICs0Niw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3Mg
TmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5n
U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJl
Y29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wg
ZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8
TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLCBPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+IHBjbURhdGFDYXJyaWVkKQorICAgIHN0YXRpYyBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVj
b25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZv
ckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZp
dHlUcmFja2VyLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIE9wdGlvbmFsPFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4gcGNtRGF0YUNh
cnJpZWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRh
c2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5
VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc2hvdWxkUmVsYXhUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmcsIHBjbURhdGFDYXJyaWVkKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwg
ZnJhbWVJRCwgcGFnZUlELCB3ZWJQYWdlUHJveHlJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJj
ZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcs
IHBjbURhdGFDYXJyaWVkKSk7CiAgICAgfQogCiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByaW9yaXR5KFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIE9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4pOworICAgIE5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29y
ZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPik7CiAK
ICAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJik7CiAg
ICAgdm9pZCBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZO
ZWVkZWQoX19zdHJvbmcgTlNVUkxSZXF1ZXN0KiYsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBi
b29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKQEAgLTEwOCw2ICsxMDgsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmlj
czsKICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93
ZWJQYWdlUHJveHlJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgYm9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZDA5ZWEwMTViMzAwLi4zMzllMTBkMjAyZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMjkxLDExICsyOTEsMTIgQEAgc3RhdGljIGlubGluZSBi
b29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0
aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXIsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9u
YWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21E
YXRhQ2FycmllZCkKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9w
dGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZywgT3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPiBwY21EYXRhQ2FycmllZCkKICAgICA6
IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKLSAgICAsIG1fc2Vz
c2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+
KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpKQor
ICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBwZXJGb3JUYXNrKHdlYlBhZ2VQcm94eUlE
LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikpKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAg
LCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlE
KQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShkYXRhVGFz
a0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQogICAgICwgbV9pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoY29tcHV0ZUlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZChzZXNzaW9u
KSkKICAgICAsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDNlOWEzOThl
MzczYS4uMWFjZGQyNzE0ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBP
QkpDX0NMQVNTIF9OU0hTVFNTdG9yYWdlOwogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNs
dWRlICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTY5LDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25Db2NvYSgpOwogCi0g
ICAgdm9pZCBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXImIGluaXRpYWxpemVFcGhlbWVyYWxT
dGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBib3VuZEludGVyZmFjZUlk
ZW50aWZpZXIoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcigpIGNvbnN0OwpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShTZXNzaW9uV3JhcHBlciYsIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSos
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOwogCi0gICAgU2Vzc2lv
bldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkgeyByZXR1cm4gbV9zZXNzaW9u
V2l0aENyZWRlbnRpYWxTdG9yYWdlOyB9CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFw
cGVyRm9yRG93bmxvYWRSZXN1bWUoKSB7IHJldHVybiBtX2RlZmF1bHRTZXNzaW9uU2V0LT5zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOyB9CiAKICAgICBib29sIGZhc3RTZXJ2ZXJUcnVzdEV2
YWx1YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZDsgfQogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
OyB9CkBAIC05NiwxMSArOTcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJJc29sYXRlZFNl
c3Npb25zKCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAg
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhIW1fYXBw
Qm91bmRTZXNzaW9uOyB9CisgICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IAotICAgIFNlc3Npb25XcmFwcGVyJiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IHNlc3Npb25XcmFwcGVyRm9yVGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICBib29sIHByZXZlbnRz
U3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRz
U3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247IH0KICAgICAKICAgICBfTlNIU1RTU3RvcmFn
ZSAqaHN0c1N0b3JhZ2UoKSBjb25zdDsKQEAgLTEwOSwxMCArMTEwLDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNy
ZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247
IH0KLSAgICBTZXNzaW9uV3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOworICAgIFNlc3Npb25XcmFwcGVyJiBpc29sYXRlZFNlc3Np
b24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbik7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgU2Vzc2lvbldy
YXBwZXImIGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisgICAgU2Vzc2lvbldyYXBwZXImIGFwcEJvdW5kU2Vzc2lvbihXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAjZW5kaWYKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2
ZVNlcnZpY2VzKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMjAsOSArMTIxLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhXYWxsVGltZSkgb3ZlcnJpZGU7CiAK
ICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBm
aW5hbDsKLSAgICB2b2lkIGFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIGZpbmFsOwot
ICAgIHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5hbDsKKyAgICB2b2lk
IGFkZFdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViU29ja2V0VGFzayYp
IGZpbmFsOworICAgIHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBXZWJTb2NrZXRUYXNrJikgZmluYWw7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJc29sYXRl
ZFNlc3Npb24gewpAQCAtMTMzLDEzICsxMzQsMzUgQEAgcHJpdmF0ZToKICAgICAgICAgV2FsbFRp
bWUgbGFzdFVzZWQ7CiAgICAgfTsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Npb24+PiBtX2lzb2xhdGVkU2Vzc2lv
bnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb2xhdGVkU2Vzc2lvbj4gbV9hcHBCb3VuZFNlc3Np
b247CisgICAgc3RydWN0IFNlc3Npb25TZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXNzaW9uU2V0
PiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPFNlc3Npb25TZXQ+IGNyZWF0ZSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlc3Npb25TZXQp
OworICAgICAgICB9CisgICAgCisgICAgICAgIFNlc3Npb25XcmFwcGVyJiBpc29sYXRlZFNlc3Np
b24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmV0d29ya1Nlc3Npb25D
b2NvYSYpOworICAgICAgICBTZXNzaW9uV3JhcHBlciYgaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb25JZk5lZWRlZChOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmV0d29ya1Nl
c3Npb25Db2NvYSYpOworCisgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4sIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Npb24+PiBpc29sYXRlZFNlc3Npb25zOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9uPiBhcHBCb3VuZFNlc3Npb247
CiAKLSAgICBTZXNzaW9uV3JhcHBlciBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7Ci0g
ICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOwotICAg
IFNlc3Npb25XcmFwcGVyIG1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgU2Vz
c2lvbldyYXBwZXIgc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgU2Vzc2lv
bldyYXBwZXIgc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgU2Vzc2lv
bldyYXBwZXIgZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKIAorICAgIHByaXZhdGU6CisgICAg
ICAgIFNlc3Npb25TZXQoKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICAgIFJlZjxTZXNzaW9uU2V0
PiBtX2RlZmF1bHRTZXNzaW9uU2V0OworICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUmVmPFNlc3Npb25TZXQ+PiBtX3BlclBhZ2VTZXNzaW9uU2V0czsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZVN0YW5kYXJkU2Vzc2lvbnNJblNldChTZXNzaW9uU2V0JiwgTlNVUkxTZXNzaW9uQ29u
ZmlndXJhdGlvbiAqKTsKKyAgICBTZXNzaW9uU2V0JiBzZXNzaW9uU2V0Rm9yUGFnZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyKTsKKyAgICBjb25zdCBTZXNzaW9uU2V0JiBzZXNzaW9uU2V0Rm9yUGFn
ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIGludmFsaWRhdGVBbmRD
YW5jZWxTZXNzaW9uU2V0KFNlc3Npb25TZXQmKTsKKyAgICAKICAgICBTdHJpbmcgbV9ib3VuZElu
dGVyZmFjZUlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA2YTJkZjI3MDU0MDIuLjI0YTQyZGYzMTE5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMTA2MSwxMCArMTA2MSwxMCBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIF9OU0hTVFNTdG9yYWdlICpOZXR3b3JrU2Vzc2lvbkNvY29h
Ojpoc3RzU3RvcmFnZSgpIGNvbnN0CiB7CiAjaWYgSEFWRShIU1RTX1NUT1JBR0UpCi0gICAgTlNV
UkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IG1fc2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CisgICAgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IG1fZGVmYXVsdFNlc3Npb25TZXQtPnNl
c3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOwog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSBy
ZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVk
LgogICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9o
c3RzU3RvcmFnZSldKQotICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9y
YWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2U7CisgICAgICAgIHJl
dHVybiBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZTsKICNlbmRpZgogICAgIHJldHVybiBuaWw7
CiB9CkBAIC0xMTYwLDYgKzExNjAsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZVNlc3Npb25DbGVh
bnVwKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIGNvbnN0IE5ldHdvcmtTZQogCiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCisgICAg
LCBtX2RlZmF1bHRTZXNzaW9uU2V0KFNlc3Npb25TZXQ6OmNyZWF0ZSgpKQogICAgICwgbV9ib3Vu
ZEludGVyZmFjZUlkZW50aWZpZXIocGFyYW1ldGVycy5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIp
CiAgICAgLCBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcikKICAgICAsIG1fc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKHBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKQpAQCAtMTI3MSwxNSArMTI3Miw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6
Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3
b3JrCiAgICAgICAgIGNvb2tpZVN0b3JhZ2UuZ2V0KCkuX292ZXJyaWRlU2Vzc2lvbkNvb2tpZUFj
Y2VwdFBvbGljeSA9IFlFUzsKICNlbmRpZgogCi0gICAgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7Ci0g
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiQ3JlYXRlZCBOZXR3b3JrU2Vzc2lvbiB3aXRoIGNvb2tp
ZUFjY2VwdFBvbGljeSAlbHUiLCBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlLmNvb2tp
ZUFjY2VwdFBvbGljeSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdl
ID0gbmlsOwotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3Mzk0Ci0gICAgLy8gY29uZmlndXJhdGlvbi5IVFRQQ29va2llU3RvcmFnZSA9IG5p
bDsKLSAgICAvLyBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lOZXZlcjsKLQotICAgIG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFs
U3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
byk7CisgICAgaW5pdGlhbGl6ZVN0YW5kYXJkU2Vzc2lvbnNJblNldChtX2RlZmF1bHRTZXNzaW9u
U2V0LmdldCgpLCBjb25maWd1cmF0aW9uKTsKIAogICAgIG1fZGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0VuYWJsZWQgPSBwYXJhbWV0ZXJzLmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNF
bmFibGVkOwogICAgIG1fYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRm9yVGVzdGluZyA9IHBhcmFtZXRlcnMuYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKQEAgLTEyOTYsMTAgKzEyODksMzkgQEAgTmV0d29y
a1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmsKIAogTmV0d29ya1Nlc3Npb25Db2NvYTo6fk5ldHdvcmtTZXNzaW9u
Q29jb2EoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6
ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5p
dGlhbGl6ZVN0YW5kYXJkU2Vzc2lvbnNJblNldChTZXNzaW9uU2V0JiBzZXNzaW9uU2V0LCBOU1VS
TFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQoreworICAgIHNlc3Npb25TZXQu
c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0
aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjo6Tm8pOworICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIkNyZWF0ZWQgTmV0
d29ya1Nlc3Npb24gd2l0aCBjb29raWVBY2NlcHRQb2xpY3kgJWx1IiwgY29uZmlndXJhdGlvbi5I
VFRQQ29va2llU3RvcmFnZS5jb29raWVBY2NlcHRQb2xpY3kpOworCisgICAgY29uZmlndXJhdGlv
bi5VUkxDcmVkZW50aWFsU3RvcmFnZSA9IG5pbDsKKyAgICBzZXNzaW9uU2V0LnNlc3Npb25XaXRo
b3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLCAqdGhpcywgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6Tm8pOworfQorCitOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0JiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uU2V0Rm9yUGFnZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlEKQogeworICAgIFNlc3Npb25TZXQqIHNlc3Npb25TZXQgPSB3ZWJQ
YWdlUHJveHlJRCA/IG1fcGVyUGFnZVNlc3Npb25TZXRzLmdldCh3ZWJQYWdlUHJveHlJRCkgOiBu
dWxscHRyOworICAgIHJldHVybiBzZXNzaW9uU2V0ID8gKnNlc3Npb25TZXQgOiBtX2RlZmF1bHRT
ZXNzaW9uU2V0LmdldCgpOworfQorCitjb25zdCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9u
U2V0JiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uU2V0Rm9yUGFnZShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSBjb25zdAoreworICAgIFNlc3Npb25TZXQqIHNlc3Np
b25TZXQgPSB3ZWJQYWdlUHJveHlJRCA/IG1fcGVyUGFnZVNlc3Npb25TZXRzLmdldCh3ZWJQYWdl
UHJveHlJRCkgOiBudWxscHRyOworICAgIHJldHVybiBzZXNzaW9uU2V0ID8gKnNlc3Npb25TZXQg
OiBtX2RlZmF1bHRTZXNzaW9uU2V0LmdldCgpOworfQorCitTZXNzaW9uV3JhcHBlciYgTmV0d29y
a1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRl
ZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQoreworICAgIHJldHVybiBz
ZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJveHlJRCkuaW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb25JZk5lZWRlZChpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAqdGhpcyk7
Cit9CisKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0Ojpp
bml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE5ldHdvcmtTZXNzaW9u
Q29jb2EmIHNlc3Npb24pCit7CisgICAgaWYgKGVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuIGVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb247CisKICAgICBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW05TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gZXBoZW1lcmFsU2Vzc2lvbkNvbmZpZ3VyYXRpb25dOwotICAgIE5TVVJMU2Vz
c2lvbkNvbmZpZ3VyYXRpb24gKmV4aXN0aW5nQ29uZmlndXJhdGlvbiA9IG1fc2Vzc2lvbldpdGhv
dXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CisgICAgTlNV
UkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqZXhpc3RpbmdDb25maWd1cmF0aW9uID0gc2Vzc2lvbldp
dGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CiAKICAg
ICBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2NlcHRQb2xpY3kgPSBOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3lOZXZlcjsKICAgICBjb25maWd1cmF0aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdlID0g
bmlsOwpAQCAtMTMxOCwxMCArMTM0MCwxMiBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdQogICAg
ICAgICBjb25maWd1cmF0aW9uLl9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllciA9IGV4aXN0aW5n
Q29uZmlndXJhdGlvbi5fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIAotICAg
IG1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sICp0
aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNz
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBlcGhlbWVyYWxTdGF0ZWxlc3NT
ZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgc2Vzc2lvbiwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcywgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7CisKKyAgICByZXR1cm4gZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKIH0K
IAotU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9y
VGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikK
K1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRh
c2soV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgYXV0byBzaG91bGRC
ZUNvbnNpZGVyZWRBcHBCb3VuZCA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPyAqaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZ
ZXM7CiAgICAgaWYgKFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBuZXR3b3Jr
UHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpIHsKQEAgLTEzMzIsNjIgKzEzNTYs
ODQgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVy
Rm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewogICAgICAgICBhdXRvIGZpcnN0UGFydHkg
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCkpOwogICAgICAgICBpZiAoc3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoZmlyc3RQYXJ0eSkpCi0gICAgICAgICAg
ICByZXR1cm4gaXNvbGF0ZWRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBmaXJzdFBh
cnR5LCBzaG91bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gc2Vz
c2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLmlzb2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgZmlyc3RQYXJ0eSwgc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQsICp0
aGlzKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoc2hvdWxkQmVDb25zaWRl
cmVkQXBwQm91bmQgPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcykKLSAgICAgICAg
cmV0dXJuIGFwcEJvdW5kU2Vzc2lvbihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgICAg
IHJldHVybiBhcHBCb3VuZFNlc3Npb24od2ViUGFnZVByb3h5SUQsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKICNlbmRpZgogCiAgICAgc3dpdGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkg
ewogICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZToKLSAgICAg
ICAgcmV0dXJuIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgcmV0dXJu
IHNlc3Npb25TZXRGb3JQYWdlKHdlYlBhZ2VQcm94eUlEKS5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlOwogICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90
VXNlOgotICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOwor
ICAgICAgICByZXR1cm4gc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLnNlc3Npb25X
aXRob3V0Q3JlZGVudGlhbFN0b3JhZ2U7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzOgotICAgICAgICBpZiAoIW1fZXBoZW1lcmFs
U3RhdGVsZXNzU2Vzc2lvbi5zZXNzaW9uKQotICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKTsKLSAgICAg
ICAgcmV0dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgcmV0dXJuIGlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQod2ViUGFnZVByb3h5SUQs
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7CiAgICAgfQogfQogCiAjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQotU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSkKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjph
cHBCb3VuZFNlc3Npb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7
Ci0gICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgewotICAgICAgICBtX2FwcEJvdW5kU2Vzc2lv
biA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOwotICAgICAgICBtX2FwcEJvdW5kU2Vz
c2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKG1fc2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sICp0aGlzLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjo6WWVzKTsKLSAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0
Q3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0
b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6
WWVzKTsKKyAgICBhdXRvJiBzZXNzaW9uU2V0ID0gc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFnZVBy
b3h5SUQpOworICAgIAorICAgIGlmICghc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24pIHsKKyAg
ICAgICAgc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24gPSBtYWtlVW5pcXVlPElzb2xhdGVkU2Vz
c2lvbj4oKTsKKyAgICAgICAgc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShzZXNzaW9uU2V0LnNlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Olllcyk7CisgICAgICAgIHNlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91
dENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoc2Vzc2lvblNldC5zZXNzaW9uV2l0aG91dENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Olllcyk7CiAgICAgfQogCiAgICAgYXV0byYgc2Vzc2lvbldyYXBwZXIgPSBbJl0g
KGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIC0+IFNlc3Npb25XcmFwcGVyJiB7CiAgICAg
ICAgIHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICAgICAgTE9HKE5ldHdv
cmtTZXNzaW9uLCAiVXNpbmcgYXBwLWJvdW5kIE5TVVJMU2Vzc2lvbiB3aXRoIGNyZWRlbnRpYWwg
c3RvcmFnZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBtX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uU2V0LmFw
cEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6CiAgICAgICAgICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGhv
dXQgY3JlZGVudGlhbCBzdG9yYWdlLiIpOwotICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRT
ZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICAgICAgcmV0
dXJuIHNlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxT
dG9yYWdlOwogICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpF
cGhlbWVyYWxTdGF0ZWxlc3M6Ci0gICAgICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNz
U2Vzc2lvbi5zZXNzaW9uKQotICAgICAgICAgICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMpOwotICAgICAgICAg
ICAgcmV0dXJuIG1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbjsKKyAgICAgICAgICAgIHJldHVy
biBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKHdlYlBhZ2VQcm94
eUlELCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKTsKICAgICAgICAgfQogICAgIH0g
KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAogICAgIHJldHVybiBzZXNzaW9uV3JhcHBlcjsK
IH0KKworYm9vbCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25z
dAoreworICAgIGlmICghIW1fZGVmYXVsdFNlc3Npb25TZXQtPmFwcEJvdW5kU2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uU2V0IDogbV9wZXJQYWdl
U2Vzc2lvblNldHMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCEhc2Vzc2lvblNldC0+YXBwQm91
bmRTZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFwcEJvdW5k
U2Vzc2lvbigpCit7CisgICAgbV9kZWZhdWx0U2Vzc2lvblNldC0+YXBwQm91bmRTZXNzaW9uID0g
bnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNzaW9uU2V0
cy52YWx1ZXMoKSkKKyAgICAgICAgc2Vzc2lvblNldC0+YXBwQm91bmRTZXNzaW9uID0gbnVsbHB0
cjsKK30KICNlbmRpZgogCi1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNv
bGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5
RG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKQorU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omlzb2xhdGVkU2Vz
c2lvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICByZXR1cm4gc2Vz
c2lvblNldEZvclBhZ2Uod2ViUGFnZVByb3h5SUQpLmlzb2xhdGVkU2Vzc2lvbihzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgZmlyc3RQYXJ0eURvbWFpbiwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgKnRoaXMpOworfQorCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
U2Vzc2lvblNldDo6aXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBmaXJzdFBhcnR5RG9tYWluLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOZXR3b3JrU2Vzc2lvbkNvY29hJiBzZXNzaW9uKQogewot
ICAgIGF1dG8mIGVudHJ5ID0gbV9pc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9t
YWluLCBbdGhpcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0geworICAgIGF1dG8mIGVu
dHJ5ID0gaXNvbGF0ZWRTZXNzaW9ucy5lbnN1cmUoZmlyc3RQYXJ0eURvbWFpbiwgW3RoaXMsICZz
ZXNzaW9uLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXSB7CiAgICAgICAgIGF1dG8gbmV3
RW50cnkgPSBtYWtlVW5pcXVlPElzb2xhdGVkU2Vzc2lvbj4oKTsKLSAgICAgICAgbmV3RW50cnkt
PnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShtX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik7Ci0gICAgICAgIG5ld0VudHJ5LT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdl
LmluaXRpYWxpemUobV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0
KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgICAgIG5ld0Vu
dHJ5LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoc2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24sIHNlc3Npb24sIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pOworICAgICAgICBuZXdFbnRyeS0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3Rv
cmFnZS5pbml0aWFsaXplKHNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5n
ZXQoKS5jb25maWd1cmF0aW9uLCBzZXNzaW9uLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2UsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBy
ZXR1cm4gbmV3RW50cnk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCkBAIC0xNDAyLDc1ICsx
NDQ4LDgyIEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNl
c3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQCiAgICAgICAgICAgICBMT0coTmV0d29y
a1Nlc3Npb24sICJVc2luZyBpc29sYXRlZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFs
IHN0b3JhZ2UuIik7CiAgICAgICAgICAgICByZXR1cm4gZW50cnktPnNlc3Npb25XaXRob3V0Q3Jl
ZGVudGlhbFN0b3JhZ2U7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKLSAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxT
dGF0ZWxlc3NTZXNzaW9uLnNlc3Npb24pCi0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVt
ZXJhbFN0YXRlbGVzc1Nlc3Npb24oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICAgICAg
cmV0dXJuIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc2Vzc2lvbik7CiAgICAgICAgIH0KICAgICB9IChzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7Ci0gICAgCi0gICAgaWYgKG1faXNvbGF0ZWRTZXNzaW9ucy5z
aXplKCkgPiBtYXhOdW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMpIHsKKworICAgIGlmIChpc29sYXRl
ZFNlc3Npb25zLnNpemUoKSA+IG1heE51bWJlck9mSXNvbGF0ZWRTZXNzaW9ucykgewogICAgICAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBrZXlUb1JlbW92ZTsKICAgICAgICAgYXV0byBv
bGRlc3RUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7Ci0gICAgICAgIGZvciAoYXV0byYga2V5
IDogbV9pc29sYXRlZFNlc3Npb25zLmtleXMoKSkgewotICAgICAgICAgICAgYXV0byB0aW1lc3Rh
bXAgPSBtX2lzb2xhdGVkU2Vzc2lvbnMuZ2V0KGtleSktPmxhc3RVc2VkOworICAgICAgICBmb3Ig
KGF1dG8mIGtleSA6IGlzb2xhdGVkU2Vzc2lvbnMua2V5cygpKSB7CisgICAgICAgICAgICBhdXRv
IHRpbWVzdGFtcCA9IGlzb2xhdGVkU2Vzc2lvbnMuZ2V0KGtleSktPmxhc3RVc2VkOwogICAgICAg
ICAgICAgaWYgKHRpbWVzdGFtcCA8IG9sZGVzdFRpbWVzdGFtcCkgewogICAgICAgICAgICAgICAg
IG9sZGVzdFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgICAgICAgICAgICAgICBrZXlUb1JlbW92
ZSA9IGtleTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICJBYm91dCB0byByZW1vdmUgaXNvbGF0ZWQgTlNVUkxTZXNzaW9uLiIpOwotICAgICAg
ICBtX2lzb2xhdGVkU2Vzc2lvbnMucmVtb3ZlKGtleVRvUmVtb3ZlKTsKKyAgICAgICAgaXNvbGF0
ZWRTZXNzaW9ucy5yZW1vdmUoa2V5VG9SZW1vdmUpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNT
RVJUKG1faXNvbGF0ZWRTZXNzaW9ucy5zaXplKCkgPD0gbWF4TnVtYmVyT2ZJc29sYXRlZFNlc3Np
b25zKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpc29sYXRlZFNlc3Npb25zLnNpemUoKSA8PSBtYXhO
dW1iZXJPZklzb2xhdGVkU2Vzc2lvbnMpOwogCiAgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOwog
fQogCiBib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0lzb2xhdGVkU2Vzc2lvbihjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
aXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21haW4pOworICAgIGlmIChtX2RlZmF1bHRTZXNz
aW9uU2V0LT5pc29sYXRlZFNlc3Npb25zLmNvbnRhaW5zKGRvbWFpbikpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGZvciAoYXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRz
LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChzZXNzaW9uU2V0LT5pc29sYXRlZFNlc3Npb25zLmNv
bnRhaW5zKGRvbWFpbikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFySXNv
bGF0ZWRTZXNzaW9ucygpCiB7Ci0gICAgbV9pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7CisgICAg
bV9kZWZhdWx0U2Vzc2lvblNldC0+aXNvbGF0ZWRTZXNzaW9ucy5jbGVhcigpOworICAgIGZvciAo
YXV0byYgc2Vzc2lvblNldCA6IG1fcGVyUGFnZVNlc3Npb25TZXRzLnZhbHVlcygpKQorICAgICAg
ICBzZXNzaW9uU2V0LT5pc29sYXRlZFNlc3Npb25zLmNsZWFyKCk7CiB9CiAKLSNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCi12b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQXBwQm91
bmRTZXNzaW9uKCkKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNl
bFNlc3Npb25TZXQoU2Vzc2lvblNldCYgc2Vzc2lvblNldCkKIHsKLSAgICBtX2FwcEJvdW5kU2Vz
c2lvbiA9IG51bGxwdHI7Ci19Ci0jZW5kaWYKLQotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpp
bnZhbGlkYXRlQW5kQ2FuY2VsKCkKLXsKLSAgICBOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFu
ZENhbmNlbCgpOwotCi0gICAgW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9u
IGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgIFttX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0
b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKLSAgICBbbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07Ci0gICAgW21fc2Vzc2lv
bldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwotICAg
IFttX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUgc2Vzc2lvbkludmFs
aWRhdGVkXTsKLSAgICBbbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uLmRlbGVnYXRlIHNlc3Np
b25JbnZhbGlkYXRlZF07Ci0KLSAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX2lzb2xhdGVkU2Vz
c2lvbnMudmFsdWVzKCkpIHsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CisgICAgW3Nlc3Npb25TZXQuc2Vz
c2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxd
OworICAgIFtzZXNzaW9uU2V0LmVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uc2Vzc2lvbiBpbnZh
bGlkYXRlQW5kQ2FuY2VsXTsKKyAgICBbc2Vzc2lvblNldC5zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAgW3Nlc3Npb25TZXQuc2Vz
c2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRd
OworICAgIFtzZXNzaW9uU2V0LmVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24uZGVsZWdhdGUgc2Vz
c2lvbkludmFsaWRhdGVkXTsKKworICAgIGZvciAoYXV0byYgc2Vzc2lvbiA6IHNlc3Npb25TZXQu
aXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkgewogICAgICAgICBbc2Vzc2lvbi0+c2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwogICAgICAg
ICBbc2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9u
SW52YWxpZGF0ZWRdOwogICAgICAgICBbc2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFs
U3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwogICAgICAgICBbc2Vzc2lvbi0+
c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0
ZWRdOwogICAgIH0KLSAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKKyAgICBzZXNzaW9u
U2V0Lmlzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKIAotICAgIGlmIChtX2FwcEJvdW5kU2Vzc2lv
bikgewotICAgICAgICBbbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0
b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKLSAgICAgICAgW21fYXBwQm91bmRT
ZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZh
bGlkYXRlZF07Ci0gICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOwotICAgICAgICBbbV9h
cHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVsZWdhdGUg
c2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBpZiAoc2Vzc2lvblNldC5hcHBCb3VuZFNlc3Npb24p
IHsKKyAgICAgICAgW3Nlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRl
bnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFtzZXNz
aW9uU2V0LmFwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxl
Z2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBbc2Vzc2lvblNldC5hcHBCb3VuZFNl
c3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiBpbnZhbGlkYXRl
QW5kQ2FuY2VsXTsKKyAgICAgICAgW3Nlc3Npb25TZXQuYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CiAg
ICAgfQogfQogCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwo
KQoreworICAgIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CisKKyAgICBp
bnZhbGlkYXRlQW5kQ2FuY2VsU2Vzc2lvblNldChtX2RlZmF1bHRTZXNzaW9uU2V0LmdldCgpKTsK
KyAgICBmb3IgKGF1dG8mIHNlc3Npb25TZXQgOiBtX3BlclBhZ2VTZXNzaW9uU2V0cy52YWx1ZXMo
KSkKKyAgICAgICAgaW52YWxpZGF0ZUFuZENhbmNlbFNlc3Npb25TZXQoc2Vzc2lvblNldC5nZXQo
KSk7Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscygpCiB7
CiAjaWYgIVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCkBAIC0x
NTc5LDcgKzE2MzIsNyBAQCBETUZXZWJzaXRlUG9saWN5TW9uaXRvciAqTmV0d29ya1Nlc3Npb25D
b2NvYTo6ZGV2aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3IoKQogfQogCiAjaWYgSEFWRShOU1VS
TFNFU1NJT05fV0VCU09DS0VUKQotc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwm
IGNoYW5uZWwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIE5ldHdvcmtTb2NrZXRDaGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7
CiAgICAgQVNTRVJUKCFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZTo6U2VjV2ViU29ja2V0UHJvdG9jb2wpKTsKICAgICBhdXRvIG5zUmVxdWVzdCA9IHJl
dGFpblB0cihyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkpOwpAQCAtMTU5MSwyMCArMTY0NCwyMCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29j
a2V0VGFzayhOZXR3b3JrUwogICAgIC8vIHJkYXI6Ly9wcm9ibGVtLzY4MDU3MDMxOiBleHBsaWNp
dGx5IGRpc2FibGUgc25pZmZpbmcgZm9yIFdlYlNvY2tldCBoYW5kc2hha2VzLgogICAgIFtuc1Jl
cXVlc3QgX3NldFByb3BlcnR5OkBOTyBmb3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENvbm5lY3Rp
b25Qcm9wZXJ0eVNob3VsZFNuaWZmXTsKIAotICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJT
b2NrZXRUYXNrPiB0YXNrID0gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9u
IHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCldOworICAgIFJldGFpblB0
cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW3Nlc3Npb25TZXRGb3JQYWdlKHdl
YlBhZ2VQcm94eUlEKS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29j
a2V0VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CiAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQor
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYlNvY2tldFRhc2smIHRhc2spCiB7Ci0gICAgUkVM
RUFTRV9BU1NFUlQoIW1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRh
VGFza01hcC5jb250YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5hZGQodGFzay5pZGVudGlmaWVy
KCksICZ0YXNrKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc2Vzc2lvblNldEZvclBhZ2Uod2ViUGFn
ZVByb3h5SUQpLnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tN
YXAuY29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKKyAgICBzZXNzaW9uU2V0Rm9yUGFnZSh3
ZWJQYWdlUHJveHlJRCkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRh
VGFza01hcC5hZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNrKTsKIH0KIAotdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpyZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCit2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViU29ja2V0VGFzayYgdGFzaykKIHsKLSAgICBS
RUxFQVNFX0FTU0VSVChtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0
YVRhc2tNYXAuY29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3Nlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2Uud2ViU29ja2V0RGF0YVRhc2tNYXAucmVtb3ZlKHRhc2suaWRlbnRp
ZmllcigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uU2V0Rm9yUGFnZSh3ZWJQYWdlUHJv
eHlJRCkuc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS53ZWJTb2NrZXREYXRhVGFza01hcC5j
b250YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOworICAgIHNlc3Npb25TZXRGb3JQYWdlKHdlYlBh
Z2VQcm94eUlEKS5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLndlYlNvY2tldERhdGFUYXNr
TWFwLnJlbW92ZSh0YXNrLmlkZW50aWZpZXIoKSk7CiB9CiAKICNlbmRpZiAvLyBIQVZFKE5TVVJM
U0VTU0lPTl9XRUJTT0NLRVQpCkBAIC0xNjEzLDcgKzE2NjYsNyBAQCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFtZXNXaXRoQWx0
ZXJuYXRpdgogewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKLSAgICBfTlNIVFRQ
QWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZp
Y2VzU3RvcmFnZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3Jh
Z2UgPSBtX2RlZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNl
c3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CiAg
ICAgTlNBcnJheTxfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkgKj4gKmVudHJpZXMgPSBb
c3RvcmFnZSBIVFRQU2VydmljZUVudHJpZXNXaXRoRmlsdGVyOl9OU0hUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VzRmlsdGVyLmVtcHR5RmlsdGVyXTsKIAogICAgIGZvciAoX05TSFRUUEFsdGVybmF0aXZl
U2VydmljZUVudHJ5KiBlbnRyeSBpbiBlbnRyaWVzKSB7CkBAIC0xNjI5LDcgKzE2ODIsNyBAQCBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpo
b3N0TmFtZXNXaXRoQWx0ZXJuYXRpdgogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxldGVB
bHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0
cykKIHsKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIF9OU0hU
VFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2Vy
dmljZXNTdG9yYWdlOworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3Rv
cmFnZSA9IG1fZGVmYXVsdFNlc3Npb25TZXQtPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uu
c2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsK
ICAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykKICAgICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRU
UEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46aG9zdF07CiAj
ZWxzZQpAQCAtMTY0MCw3ICsxNjkzLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWxl
dGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHIKIHZvaWQg
TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkK
LSAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRl
cm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0
b3JhZ2UqIHN0b3JhZ2UgPSBtX2RlZmF1bHRTZXNzaW9uU2V0LT5zZXNzaW9uV2l0aENyZWRlbnRp
YWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNl
c1N0b3JhZ2U7CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gbW9kaWZpZWRTaW5j
ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKICAgICBOU0RhdGUgKmRhdGUgPSBbTlNE
YXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAgICAgW3N0
b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRl
OmRhdGVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA2ZTk3M2Y1MThjMTcuLjA2Y2EyNTJiMDQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJTb2Nr
ZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBH
U29jawogfQogI2VuZGlmCiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3Jr
U2Vzc2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmIGNo
YW5uZWwsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNvdXA6
OmNyZWF0ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmV0d29ya1NvY2tl
dENoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBHUmVmUHRyPFNvdXBNZXNzYWdlPiBzb3VwTWVzc2Fn
ZSA9IHJlcXVlc3QuY3JlYXRlU291cE1lc3NhZ2UoYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmICgh
c291cE1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggOWEwMTQ2ODRhNWNkLi5iMDE3Y2VmZmMwYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBT
ZXNzaW9uIFNvdXBTZXNzaW9uOwogCkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByb3h5U2V0dGluZ3MoV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzJiYpOwog
CiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJT
b2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ3JlZGVu
dGlhbHMoKSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb24+IG1fbmV0d29ya1Nlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuY3BwCmluZGV4IGRiYmUxYmYwOTAzNS4uYjIwOTFlMzNmMjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkxvZ0luaXRpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5o
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtOTAsNiArOTEsNyBAQCB2b2lkIEF1
eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemUoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycwogICAgIC8vIEluIFdlYktpdDIsIG9ubHkgdGhlIFVJIHByb2Nlc3Mg
c2hvdWxkIGV2ZXIgYmUgZ2VuZXJhdGluZyBjZXJ0YWluIGlkZW50aWZpZXJzLgogICAgIFBBTDo6
U2Vzc2lvbklEOjplbmFibGVHZW5lcmF0aW9uUHJvdGVjdGlvbigpOwogICAgIENvbnRlbnRXb3Js
ZElkZW50aWZpZXI6OmVuYWJsZUdlbmVyYXRpb25Qcm90ZWN0aW9uKCk7CisgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllcjo6ZW5hYmxlR2VuZXJhdGlvblByb3RlY3Rpb24oKTsKIAogICAgIG1fY29u
bmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihwYXJhbWV0
ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CiAgICAgaW5pdGlhbGl6ZUNvbm5lY3Rp
b24obV9jb25uZWN0aW9uLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNDVlZjVkMzExNTY3Li45NDI1
MTQ4NjE3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00Miw5ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2Vi
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCYgY2xpZW50KQorUmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6
OmNyZWF0ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBEb2N1bWVudCYg
ZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKHdlYlBhZ2VQcm94eUlELCBkb2N1
bWVudCwgY2xpZW50KSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZy
YW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQpAQCAtNjgsMTEgKzY4LDEyIEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29jCiAg
ICAgfSB9OwogfQogCi1XZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50
JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQorV2ViU29ja2V0Q2hh
bm5lbDo6V2ViU29ja2V0Q2hhbm5lbChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCkK
ICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9jbGllbnQo
bWFrZVdlYWtQdHIoY2xpZW50KSkKICAgICAsIG1fbWVzc2FnZVF1ZXVlKGNyZWF0ZU1lc3NhZ2VR
dWV1ZShkb2N1bWVudCwgKnRoaXMpKQogICAgICwgbV9pbnNwZWN0b3IoZG9jdW1lbnQpCisgICAg
LCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlNvY2tldENoYW5uZWxNYW5hZ2VyKCkuYWRkQ2hhbm5lbCgqdGhpcyk7CiB9
CkBAIC0xMTYsNyArMTE3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0YXR1cyBXZWJT
b2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdAogCiAgICAgbV9pbnNw
ZWN0b3IuZGlkQ3JlYXRlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIHVybCk7CiAgICAgbV91
cmwgPSByZXF1ZXN0LT51cmwoKTsKLSAgICBNZXNzYWdlU2VuZGVyOjpzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlU29ja2V0Q2hhbm5lbCB7ICpyZXF1
ZXN0LCBwcm90b2NvbCwgbV9pZGVudGlmaWVyIH0pOworICAgIE1lc3NhZ2VTZW5kZXI6OnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRDaGFu
bmVsIHsgKnJlcXVlc3QsIHByb3RvY29sLCBtX2lkZW50aWZpZXIsIG1fd2ViUGFnZVByb3h5SUQg
fSk7CiAgICAgcmV0dXJuIENvbm5lY3RTdGF0dXM6Ok9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDEzZjY4
YTIzOTRlLi4wOTRiYWY2MWY1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTZW5kUXVldWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0
Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLCBwdWJs
aWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBjcmVhdGUoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnQmLCBXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50Jik7CiAgICAgfldlYlNvY2tldENoYW5uZWwoKTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFdl
YlNvY2tldENoYW5uZWw+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBXZWJTb2NrZXRDaGFubmVs
KFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCYpOwor
ICAgIFdlYlNvY2tldENoYW5uZWwoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6RG9j
dW1lbnQmLCBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50Jik7CiAKICAgICBzdGF0aWMg
V2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZSBjcmVhdGVNZXNzYWdlUXVldWUoV2ViQ29yZTo6RG9j
dW1lbnQmLCBXZWJTb2NrZXRDaGFubmVsJik7CiAKQEAgLTExNiw2ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxJbnNwZWN0b3IgbV9pbnNwZWN0b3I7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1faGFuZHNoYWtlUmVxdWVzdDsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1faGFuZHNoYWtlUmVzcG9uc2U7CisgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRQcm92aWRlci5jcHAKaW5kZXggYzUzZmNkNmQ0NzExLi4yMDkxZGQ5MzkyNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gV2ViU29ja2V0
UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHUKIAogUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlV2Vi
U29ja2V0Q2hhbm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQm
IGNsaWVudCkKIHsKLSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKGRvY3VtZW50
LCBjbGllbnQpOworICAgIHJldHVybiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUobV93ZWJQYWdl
UHJveHlJRCwgZG9jdW1lbnQsIGNsaWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3Zp
ZGVyLmgKaW5kZXggMWIzNTUyZGEzNjQwLi45MGM4Mjk5MjY1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaApAQCAtMjUs
MTYgKzI1LDI1IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0UHJvdmlkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNvY2tldFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlNvY2tldFByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tl
dFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFByb3Zp
ZGVyKTsgfQorICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlNvY2tldFByb3ZpZGVyKHdlYlBhZ2VQcm94eUlEKSk7IH0KKyAgICBXZWJTb2NrZXRQcm92aWRl
cihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKQorICAgICAgICA6IG1fd2Vi
UGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCisgICAgeworICAgIH0KKwogICAgIFJlZjxXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBXZWJDb3JlOjpXZWJTb2Nr
ZXRJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFy
dGl0aW9uLCBjb25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGVXZWJT
b2NrZXRDaGFubmVsKFdlYkNvcmU6OkRvY3VtZW50JiwgV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bENsaWVudCYpIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CisK
K3ByaXZhdGU6CisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQyZjM3OWJh
MWJiZi4uNTJkN2JlMDExNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CkBAIC0xMjQsNyArMTI0LDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0cmFi
bGVEb21haW4gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBt
X3dlYlBhZ2VQcm94eUlELCBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIg
PSBXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cElEKTsKICNlbmRp
ZgotICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2ViU29ja2V0UHJvdmlk
ZXI6OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyID0gV2Vi
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eUlEKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubGliV2ViUlRDUHJvdmlk
ZXIgPSBtYWtlVW5pcXVlUmVmPFNlcnZpY2VXb3JrZXJMaWJXZWJSVENQcm92aWRlcj4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODRkMDc4
ODAyNzlkLi4zY2U0Njg4MTZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKAogICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxX
ZWJFZGl0b3JDbGllbnQ+KHRoaXMpLAotICAgICAgICBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRl
KCksCisgICAgICAgIFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGUocGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJZGVudGlmaWVyKSwKICAgICAgICAgY3JlYXRlTGliV2ViUlRDUHJvdmlkZXIoKnRoaXMp
LAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigp
LAogICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlciwK
</data>

          </attachment>
      

    </bug>

</bugzilla>