<?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>178156</bug_id>
          
          <creation_ts>2017-10-10 22:05:59 -0700</creation_ts>
          <short_desc>Add a SW context process (where SW scripts will actually execute)</short_desc>
          <delta_ts>2017-10-11 10:28:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359043</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-10 22:05:59 -0700</bug_when>
    <thetext>Add a SW context process (where SW scripts will actually execute)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359045</commentid>
    <comment_count>1</comment_count>
      <attachid>323386</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-10 22:10:59 -0700</bug_when>
    <thetext>Created attachment 323386
EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359046</commentid>
    <comment_count>2</comment_count>
      <attachid>323387</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-10 22:12:02 -0700</bug_when>
    <thetext>Created attachment 323387
EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359059</commentid>
    <comment_count>3</comment_count>
      <attachid>323389</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-10 22:57:55 -0700</bug_when>
    <thetext>Created attachment 323389
EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359064</commentid>
    <comment_count>4</comment_count>
      <attachid>323392</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-10 23:32:13 -0700</bug_when>
    <thetext>Created attachment 323392
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359212</commentid>
    <comment_count>5</comment_count>
      <attachid>323392</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-11 09:25:40 -0700</bug_when>
    <thetext>Comment on attachment 323392
PFR

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

&gt; Source/WebCore/workers/service/server/SWServerRegistration.cpp:86
&gt; +    auto worker = m_server.createWorker(connection, m_registrationKey, m_currentJob-&gt;scriptURL, result.script, WorkerType::Classic);

Surprised the compiler doesn&apos;t complain about worker not being used.

&gt; Source/WebCore/workers/service/server/SWServerRegistration.cpp:92
&gt; +    UNUSED_PARAM(workerID);

You could also remove &quot;workerID&quot; from the function signature.

&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:83
&gt; +    double m_lastUpdateTime { 0.0 };

No need for &quot;.0&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359218</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-11 09:35:31 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #5)
&gt; Comment on attachment 323392 [details]
&gt; PFR
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWServerRegistration.cpp:92
&gt; &gt; +    UNUSED_PARAM(workerID);
&gt; 
&gt; You could also remove &quot;workerID&quot; from the function signature.

Explicitly left it to make it super obvious what it is without having to hop to the header (will be used very soon)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359223</commentid>
    <comment_count>7</comment_count>
      <attachid>323423</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-11 09:45:55 -0700</bug_when>
    <thetext>Created attachment 323423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359231</commentid>
    <comment_count>8</comment_count>
      <attachid>323423</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 10:27:12 -0700</bug_when>
    <thetext>Comment on attachment 323423
Patch

Clearing flags on attachment: 323423

Committed r223191: &lt;https://trac.webkit.org/changeset/223191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359232</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 10:27:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359234</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-11 10:28:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/34936051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323386</attachid>
            <date>2017-10-10 22:10:59 -0700</date>
            <delta_ts>2017-10-10 22:12:02 -0700</delta_ts>
            <desc>EWS run</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46455</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkZTkyYTg5Zjc2Zi4uYWY2ZDVmZjFjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NjQsNiArMjQ2NCw3IEBACiAJ
CTUxQzYxQjBCMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzYxQjA5
MURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUM4MUI4OTBDNDQy
MkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg3MEM0NDIyRjcwMDE5RUNFMyAvKiBG
VFBEaXJlY3RvcnlQYXJzZXIuY3BwICovOyB9OwogCQk1MUM4MUI4QTBDNDQyMkY3MDAxOUVDRTMg
LyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFy
c2VyLmggKi87IH07CisJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUNC
RkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0JGQzk4MEQxMEU0ODMw
MDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEyNDhCMUU3MzYyN0YwMDJCMjgyMCAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNTFEMTI0OEQxRTczNjRBQTAwMkIyODIw
IC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tICovOyB9
OwpAQCAtMTAzNjMsNiArMTAzNjQsNyBAQAogCQk1MUM2MUIwOTFERTUzNkU3MDA4QTIxMkQgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUM4MUI4NzBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4MUI4ODBDNDQyMkY3
MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQkZDOTgwRDEwRTQ4MzAw
MkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjEyLDYgKzE5MjE0LDcgQEAKIAkJCQk1MUYxNzU1ODFGM0VC
QzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgKi8sCiAJCQkJNTFGMTc1
NTcxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLywKIAkJCQk1
MUYxNzU1NjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5pZGwgKi8s
CisJCQkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oICovLAogCQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk1MUYxNzU1NDFGM0VCQzBDMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggKi8sCkBAIC0yNzM2NCw2ICsyNzM2Nyw3IEBACiAJ
CQkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MUNBN0VFOTFGODgzMzkwMDAzRDMxMzEgLyogU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3
NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdF
QTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUQ4QzM3QTE4
M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YzYzOWU3ODUwMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CisgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSByZWdpc3RyYXRpb25LZXk7CisgICAgU3RyaW5nIHdvcmtlcklEOworICAgIFN0cmluZyBz
Y3JpcHQ7CisgICAgCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgd29ya2VySUQgPDwgc2NyaXB0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byByZWdp
c3RyYXRpb25LZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpkZWNvZGUoZGVjb2Rl
cik7CisgICAgaWYgKCFyZWdpc3RyYXRpb25LZXkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBTdHJpbmcgd29ya2VySUQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3b3Jr
ZXJJRCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgc2NyaXB0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwg
V1RGTW92ZSh3b3JrZXJJRCksIFdURk1vdmUoc2NyaXB0KSB9fTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA2
ZjgxYWIyNjkxMS4uMDU1OTAwYzYzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgorI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCisjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzUsNyArNzgsMTIgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGEK
IAogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBtX3NlcnZl
ci5zY3JpcHRGZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hG
aW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKK30KKwordm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
KnRoaXMsIHJlZ2lzdHJhdGlvbktleSwgd29ya2VySUQsIG1lc3NhZ2UpOwogfQogCiBTV1NlcnZl
cjo6U1dTZXJ2ZXIoKQpAQCAtMTI4LDcgKzEzNiw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAgICAgY29ubmVj
dGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpKTsKIH0K
IAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiBy
ZXN1bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0
RmV0Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJSIgUFJJdTY0ICItJSIgUFJJdTY0ICIgaW4g
Y2xpZW50IiwgcmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXN1bHQuam9iSWRlbnRpZmll
cik7CiAKQEAgLTEzOCw3ICsxNDYsMjcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5p
c2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIXJl
Z2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRG
ZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRGZXRjaEZpbmlz
aGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgU3RyaW5nJiB3b3JrZXJJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgCisgICAgaWYgKGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKKyAgICAg
ICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25uZWN0aW9uLCB3
b3JrZXJJRCwgbWVzc2FnZSk7Cit9CisKK1JlZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OmNy
ZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQoreworICAgIFN0cmluZyB3b3JrZXJJRCA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29y
a2Vyc0J5SUQuYWRkKHdvcmtlcklELCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIHdvcmtlcklEKSk7CisgICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAKKyAgICBjb25uZWN0aW9uLnN0YXJ0U2VydmljZVdvcmtlckNvbnRl
eHQoeyByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBzY3JpcHQgfSk7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRh
c2tUaHJlYWRFbnRyeVBvaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhMWZjNWQzMzk4OS4uM2FhZmI4MGY3ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUg
IlNXU2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRRdWV1ZS5oPgpAQCAtNDIsNyArNDEsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNXU2VydmVyV29ya2VyOwog
c3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YTsKIApAQCAtNTMsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CiAKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgQ29ubmVjdGlvbihTV1NlcnZlciYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgICAgICBT
V1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KQEAgLTYxLDEwICs2NCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwg
Y29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVK
b2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAKKyAgICAgICAgLy8gTWVz
c2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9
IDA7CisKICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07CiAKQEAgLTc5LDYgKzg2
LDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAg
IHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAKKyAgICBSZWY8U1dTZXJ2
ZXJXb3JrZXI+IGNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJU
eXBlKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVj
dGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYpOwpAQCAt
ODYsMTEgKzk1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0YXNrVGhyZWFkRW50cnlQb2ludCgp
OwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJlYWQoKTsKIAotICAgIHZvaWQg
c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAg
ICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBTdHJp
bmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
PiBtX3JlZ2lzdHJhdGlvbnM7CiAKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNXU2VydmVyV29y
a2VyPj4gbV93b3JrZXJzQnlJRDsKKwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGFza1RocmVhZDsK
ICAgICBMb2NrIG1fdGFza1RocmVhZExvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggZDUxMWRkZGRmZDUuLjEwZGViOTZlNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcApAQCAtNjQsMTggKzY0LDMyIEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmVucXVl
dWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAgICAgICAgIG1fam9i
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1
bHQpCit2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYmIG1fY3VycmVudEpvYi0+
aWRlbnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKIAotICAgIC8vIEZJWE1FOiBX
ZSBmZXRjaGVkIHRoZSBzY3JpcHQgY29udGVudHMgYnV0IGRvbid0IGRvIGFueXRoaW5nIHdpdGgg
dGhlbSB5ZXQuCi0gICAgLy8gVGhlc2UgZXJyb3JzIGFyZSBmb3IgdGVzdGluZyB0aGUgY3VycmVu
dCBzdGF0ZSBvZiB0aGUgZmVhdHVyZS4KKyAgICBpZiAoIXJlc3VsdC5zY3JpcHRFcnJvci5pc051
bGwoKSkgeworICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwu
c3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIsIHJlc3VsdC5zY3JpcHRFcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIG5l
d2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBw
YXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KKyAgICAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgogCi0gICAgU3RyaW5n
IG1lc3NhZ2U7Ci0gICAgaWYgKHJlc3VsdC5zY3JpcHRFcnJvci5pc051bGwoKSkKLSAgICAgICAg
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRV
Ukwuc3RyaW5nKCksICIgZmV0Y2hlZCB3aXRoICIsIFN0cmluZzo6bnVtYmVyKHJlc3VsdC5zY3Jp
cHQubGVuZ3RoKCkpLCAiIGNoYXJhY3RlcnMsIGJ1dCB3ZSdyZSBub3QgdXNpbmcgdGhlIHJlc3Vs
dCB5ZXQiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJTY3JpcHQg
VVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVk
IGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhc3RVcGRhdGVUaW1lID0gY3VycmVu
dFRpbWUoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1hdGNoZXMg
Ynl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCisgICAgLy8gdGhl
biByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRo
ZXIuCisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFz
c2ljIHZzIG1vZHVsZSkKKyAgICBhdXRvIHdvcmtlciA9IG1fc2VydmVyLmNyZWF0ZVdvcmtlcihj
b25uZWN0aW9uLCBtX3JlZ2lzdHJhdGlvbktleSwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwsIHJl
c3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOworfQorCit2b2lkIFNXU2VydmVyUmVn
aXN0cmF0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOwogCiAg
ICAgcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtZXNzYWdl
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGY3Njg1NDYzZGU3Li42MjY3ZTlj
NTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDggKzQ4LDkgQEAgcHVibGlj
OgogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgdm9pZCBlbnF1ZXVlSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwotCisgICAgdm9pZCBzY3JpcHRGZXRj
aEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgZGF0YSgpIGNvbnN0
OwogCiBwcml2YXRlOgpAQCAtNzcsNiArNzksOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlcldvcmtlcj4gbV9hY3RpdmVXb3JrZXI7CiAgICAgVVJMIG1fc2NvcGVVUkw7
CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IG1fdXBkYXRl
VmlhQ2FjaGU7CisgICAgCisgICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRpbWUgeyAwLjAgfTsKIAog
ICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCA0YTdmZGNkMDZjMi4uMmE2NmYzZTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBA
IC0yOCwxOSArMjgsMTkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFVSTCYgdXJsKQotICAgIDogbV9zY3JpcHRVUkwo
dXJsKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisg
ICAgOiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCisgICAgLCBtX3NjcmlwdFVS
TCh1cmwpCisgICAgLCBtX3NjcmlwdChzY3JpcHQpCisgICAgLCBtX3dvcmtlcklEKHdvcmtlcklE
KQorICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9
CiAKIFNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQogewotICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5k
ZXggMTJkYzM1NzNmY2UuLjEzZTNhMjk0MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0yNywxOSArMjcs
MzcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
V1NlcnZlcldvcmtlciB7CitlbnVtIGNsYXNzIFdvcmtlclR5cGU7CisKK2NsYXNzIFNXU2VydmVy
V29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVyV29ya2VyPiB7CiBw
dWJsaWM6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZjxT
V1NlcnZlcldvcmtlcj4gY3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtlcihyZWdpc3RyYXRpb25LZXksIHVybCwg
c2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOworICAgIH0KKyAgICAKICAgICBTV1NlcnZlcldvcmtl
cihjb25zdCBTV1NlcnZlcldvcmtlciYpID0gZGVsZXRlOwogICAgIH5TV1NlcnZlcldvcmtlcigp
OwotICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7
IH0KIAorICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRV
Ukw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
OyB9CisgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAg
Y29uc3QgU3RyaW5nJiB3b3JrZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VySUQ7IH0KKyAg
ICAKIHByaXZhdGU6CisgICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgVVJMIG1fc2NyaXB0VVJMOworICAgIFN0cmlu
ZyBtX3NjcmlwdDsKKyAgICBTdHJpbmcgbV93b3JrZXJJRDsKKyAgICBXb3JrZXJUeXBlIG1fdHlw
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggZDhlNmMyNDVmNGUuLjU0OTg5NjNjNzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzIsMTIgKzMyLDE1IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgUEFMOwpAQCAtNDgsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQogICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24oc2VydmVyLCBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKLSAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9jb250ZW50Q29u
bmVjdGlvbihjb25uZWN0aW9uKQogewogfQogCkBAIC03Niw2ICs3OSwzMyBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpvYklk
ZW50aWZpZXIpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIGlmIChzZW5kVG9Db250ZXh0UHJvY2VzcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChpZGVudGlmaWVy
KCksIGRhdGEpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFz
LmFwcGVuZChkYXRhKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNzYWdlKQoreworICAgIGlm
ICghbV9jb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY29udGV4dENvbm5lY3Rpb24tPnNlbmQ8VT4oV1RGTW92ZShtZXNzYWdlKSwgMCk7Cit9
CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNv
bm5lY3Rpb247CisKKyAgICAvLyBXZSBjYW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ug
d29ya2VyIGNvbnRleHRzLgorICAgIGZvciAoYXV0byYgcGVuZGluZ0NvbnRleHREYXRhIDogbV9w
ZW5kaW5nQ29udGV4dERhdGFzKQorICAgICAgICBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHBl
bmRpbmdDb250ZXh0RGF0YSk7CisgICAgCisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFy
KCk7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCBi
M2NlNzZjOTVlOS4uZGUxYjg3YTY5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4
Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSwyMCArNDYsMjkgQEAgcHVibGljOgogICAgIH5XZWJT
V1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJvbVdl
YlByb2Nlc3MoKTsKKyAgICB2b2lkIHNldENvbnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpD
b25uZWN0aW9uCisgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdl
cyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1
aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmlu
YWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmKSBmaW5hbDsKICAg
ICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSBm
aW5hbDsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBm
aW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICAvLyBNZXNzYWdlcyB0byB0
aGUgU1cgaG9zdCBXZWJQcm9jZXNzIChNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNz
KQorICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOworICAgIAorICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRl
bnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworICAgIAog
ICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5l
Y3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZXh0Q29ubmVjdGlvbjsK
KyAgICAKKyAgICBEZXF1ZTxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fcGVu
ZGluZ0NvbnRleHREYXRhczsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggM2IzNjNlYzVkZDQuLmUxMDgwOWM5ODY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KQEAgLTMyOSw2ICszMzAsNjMgQEAgU1dT
ZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICByZXR1
cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CisKK0lQQzo6Q29ubmVjdGlvbiogU3RvcmFn
ZVByb2Nlc3M6OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJu
IG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAg
IGlmIChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24gPSB0cnVlOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bigpLCAwKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24pOworICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbiA9IGZhbHNlOworCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOworI2VsaWYgT1MoREFSV0lO
KQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihl
bmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKKworICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZp
ZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAgIExPR19FUlJPUigiU3Rv
cmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiAtIFJlY2Vp
dmVkIG51bGwgY29ubmVjdGlvbiBpZGVudGlmaWVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwor
ICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgCisgICAg
Zm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9zdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMp
CisgICAgICAgIGNvbm5lY3Rpb24tPndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0
ZWQoKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRGYWls
ZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYg
d29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVj
dGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdp
c3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNzYWdlKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vz
czo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQoreworICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLmFkZChj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOworfQorCit2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOworfQogI2VuZGlmCiAK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmgKaW5kZXggZjQwODMzNDJhYzQuLjA0NDIzNjNiMWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0zNywxMSArMzcs
MTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVyOwogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b247CitjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZTsKIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNjcs
MTIgKzY5LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBs
ZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICBJUEM6OkNvbm5lY3Rpb24qIHdvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbigpOworICAgIHZvaWQgY3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
KCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBn
ZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQpOworICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdl
YlNXU2VydmVyQ29ubmVjdGlvbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMDEsNyArMTEw
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYpOwogICAgIHZvaWQgZGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMo
dWludDY0X3QgcmVxdWVzdElELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNl
bmRpZgotCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVk
VG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBT
dHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworI2VuZGlmCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwogI2VuZGlm
CkBAIC0xMjUsNyArMTM3LDEyIEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0
ZXg7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkQ3JlYXRl
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwor
CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb247CisgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24geyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25uZWN0aW9uczsKICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzlkZWFkZjI3YzguLjE4MDJmMGQ0Yzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTM0LDQgKzM0LDkgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9icyhWZWN0b3I8
U3RyaW5nPiBwYXRocywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRl
bnNpb25zKQogICAgIERpZEdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90
IHJlcXVlc3RJRCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRlbnNp
b25zKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgRGlkR2V0V29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFu
ZGxlKQorICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5LCBTdHJpbmcgd29ya2VySUQsIFN0cmluZyBtZXNz
YWdlKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDI3YmFkMWNk
MjJkLi4xZjQyNjQwMDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU1LDYg
KzU1LDkgQEAgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OlN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWQKIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uOjp+U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogICAgIG1fY29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOworICAgIAorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
c3dDb25uZWN0aW9ucy52YWx1ZXMoKSkKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oKmNvbm5lY3Rpb24pOwogfQogCiB2b2lk
IFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTEzOCw3ICsx
NDEsMTUgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoU1dT
ZXJ2ZXJDb25uZWN0aW9uKFNlc3Npb25JRCBzZXNzaW8KICAgICBBU1NFUlQoIW1fc3dDb25uZWN0
aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwogCiAgICAgYXV0byYg
c2VydmVyID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnN3U2VydmVyRm9yU2Vzc2lvbihz
ZXNzaW9uSUQpOwotICAgIG1fc3dDb25uZWN0aW9ucy5zZXQoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihzZXJ2ZXIsIG1f
Y29ubmVjdGlvbi5nZXQoKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlc3Npb25JRCkp
OworICAgIGF1dG8gY29ubmVjdGlvblJlc3VsdCA9IG1fc3dDb25uZWN0aW9ucy5hZGQoc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uPihzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHNlc3Npb25JRCkpOworICAgIEFTU0VSVChjb25uZWN0aW9uUmVzdWx0LmlzTmV3RW50cnkp
OworCisgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKCooY29ubmVjdGlvblJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKKworICAgIGlmIChh
dXRvKiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLndvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+c2V0Q29udGV4dENvbm5lY3Rpb24oY29ubmVjdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlV29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcikKQEAgLTE0Niw4ICsxNTcsMTggQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbjo6cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm4KICAgICBB
U1NFUlQobV9zd0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CiAKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMudGFrZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnVu
cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oKmNvbm5lY3Rpb24pOwogICAgIGNvbm5lY3Rpb24t
PmRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiB9CisKK3ZvaWQgU3RvcmFnZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKQor
eworICAgIGF1dG8qIGlwY0Nvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCku
d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGlwY0Nvbm5lY3Rp
b24pOworCisgICAgZm9yIChhdXRvJiBzd0Nvbm5lY3Rpb24gOiBtX3N3Q29ubmVjdGlvbnMudmFs
dWVzKCkpCisgICAgICAgIHN3Q29ubmVjdGlvbi0+c2V0Q29udGV4dENvbm5lY3Rpb24oaXBjQ29u
bmVjdGlvbik7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAt
MTY5LDUgKzE5MCw0IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92
ZUlEQkNvbm5lY3Rpb25Ub1NlcnZlcih1aW50NjRfdCBzZXJ2ZXJDCiB9CiAjZW5kaWYKIAotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBlZDY1ODAy
ZWRjYi4uNWI5Y2U4YWE1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ0LDYgKzQ0
LDEwIEBAIHB1YmxpYzoKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0
dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIHZvaWQgd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTVjZmZmNTM1NmUuLjc0
MmRhNWFhZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCBzdGF0aWMgdWlu
dDY0X3QgZ2VuZXJhdGVDYWxsYmFja0lEKCkKICAgICByZXR1cm4gKytjYWxsYmFja0lEOwogfQog
Ci1SZWY8U3RvcmFnZVByb2Nlc3NQcm94eT4gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK1JlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wp
KTsKIH0KIAotU3RvcmFnZVByb2Nlc3NQcm94eTo6U3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9j
ZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi0gICAgOiBDaGlsZFByb2Nlc3NQcm94eShwcm9jZXNzUG9v
bC0+YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KCkpCitTdG9yYWdlUHJvY2Vzc1Byb3h5
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKKyAgICA6
IENoaWxkUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eSgpKQogICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKICAgICAsIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQogewpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgU3Rv
cmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICAgICBtX3BlbmRp
bmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuY2xlYXIoKTsKIAogICAgIC8v
IFRlbGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRoaXMgc3RvcmFnZSBwcm9jZXNzLiBU
aGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgotICAgIG1fcHJvY2Vzc1Bvb2wtPnN0b3Jh
Z2VQcm9jZXNzQ3Jhc2hlZCh0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29sLnN0b3JhZ2VQcm9jZXNz
Q3Jhc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCkBAIC0y
MjAsNCArMjIwLDIwIEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAgICAgbV9udW1QZW5kaW5n
Q29ubmVjdGlvblJlcXVlc3RzID0gMDsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
K3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fd2FpdGluZ09uV29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uKTsKKyAgICBtX3dhaXRpbmdPbldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IHRydWU7CisgICAgCisgICAgbV9wcm9jZXNzUG9vbC5nZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZEdldFdv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5l
Y3Rpb24pCit7CisgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEdldFdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKSwgMCk7Cit9CisKKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYzJkMmViYTYwOTIuLmZjOTE3
MTkzZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGE7
CiAKIGNsYXNzIFN0b3JhZ2VQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHkg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZVByb2Nlc3NQcm94eT4gY3JlYXRlKFdl
YlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+U3RvcmFnZVByb2Nlc3NQcm94eSgpOwogCiAgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CkBAIC01Nyw4ICs1NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbik7CisjZW5kaWYKKwogcHJpdmF0ZToK
LSAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sKik7CisgICAgU3RvcmFnZVBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwogCiAgICAgLy8gQ2hpbGRQcm9jZXNzUHJveHkK
ICAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25z
Jikgb3ZlcnJpZGU7CkBAIC03OSwxMSArODMsMTUgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0FO
REJPWF9FWFRFTlNJT05TKQogICAgIHZvaWQgZ2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmls
ZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZ2V0V29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgYm9vbCBtX3dhaXRpbmdPbldvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIC8vIFByb2Nlc3NMYXVu
Y2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIAotICAgIFdlYlByb2Nl
c3NQb29sKiBtX3Byb2Nlc3NQb29sOworICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29s
OwogCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwogICAgIERl
cXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJhNzhhNmIxYzcxLi5iOWZjZDE5OTczZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNCArMzAsOCBAQCBtZXNzYWdlcyAt
PiBTdG9yYWdlUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0FOREJP
WF9FWFRFTlNJT05TKQogICAgIEdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2
NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
KQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggNGI0MGRlZmY1NmIuLjAyNTQ4OGI0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmUqIHIKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgbV9zdG9yYWdlUHJvY2VzcyA9
IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9zdG9yYWdlUHJv
Y2VzcyA9IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcyk7CiAgICAgICAgIG1fc3Rv
cmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vi
c2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKSwgMCk7CiAgICAgfQogCkBAIC01NzQsNiArNTc0LDI5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJv
Y2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2Vzc1ByCiAgICAgbV9zdG9yYWdlUHJvY2VzcyA9IG51bGxw
dHI7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oU3RvcmFnZVByb2Nlc3NQcm94eSYg
cHJveHkpCit7CisgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5ID09IG1fc3RvcmFnZVBy
b2Nlc3MpOworICAgIAorICAgIGlmICghbV93b3JrZXJDb250ZXh0UHJvY2VzcykgeworICAgICAg
ICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOworICAg
ICAgICBhdXRvJiBuZXdQcm9jZXNzID0gY3JlYXRlTmV3V2ViUHJvY2VzcyhtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nl
c3MgPSAmbmV3UHJvY2VzczsKKyAgICB9CisgICAgCisgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24o
KSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZEdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCit7CisgICAg
aWYgKCFtX3N0b3JhZ2VQcm9jZXNzKQorICAgICAgICByZXR1cm47CisgICAgbV9zdG9yYWdlUHJv
Y2Vzcy0+ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
fQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJy
b3dzaW5nKCkKIHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogYWxsUHJvY2Vzc1Bvb2xz
KCkpCkBAIC04ODIsNiArOTA1LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiBwcm90ZWN0KHByb2Nlc3MpOwogICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID09
IHByb2Nlc3MpCiAgICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBudWxscHRyOworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAobV93b3JrZXJDb250ZXh0UHJvY2VzcyA9
PSBwcm9jZXNzKQorICAgICAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzID0gbnVsbHB0cjsKKyNl
bmRpZgogCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50
PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKHByb2Nlc3Mp
OwogCkBAIC05NjAsNiArOTg3LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICB9IGVs
c2UKICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNp
dGVEYXRhU3RvcmUoKSk7CiAKKyAgICBBU1NFUlQocHJvY2Vzcy5nZXQoKSAhPSBtX3dvcmtlckNv
bnRleHRQcm9jZXNzKTsKKwogICAgIHJldHVybiBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggN2M3YThlYzkxZWYuLjEwMTdlY2I3NTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMxOSw2ICszMTks
OSBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3MoKSB7
IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9CiAgICAgdm9pZCBnZXRTdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHN0b3JhZ2VQcm9j
ZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5Kik7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorICAgIHZvaWQgZ2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKFN0b3JhZ2VQ
cm9jZXNzUHJveHkmKTsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBw
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3Q7CkBAIC00MTIsNiArNDE1LDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdWludDY0X3QgcmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlz
dGVuZXIoRnVuY3Rpb248dm9pZChXZWJQcm9jZXNzUG9vbCYpPiYmKTsKICAgICBzdGF0aWMgdm9p
ZCB1bnJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVhdGlvbkxpc3RlbmVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlv
bik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CkBAIC00NzcsNiArNDg0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVJbml0aWFsRW1w
dHlQcm9jZXNzOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hl
OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fd29y
a2VyQ29udGV4dFByb2Nlc3MgeyBudWxscHRyIH07CisgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OworI2VuZGlmCiAKICAgICBSZWY8
V2ViUGFnZUdyb3VwPiBtX2RlZmF1bHRQYWdlR3JvdXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ3MWQ3MTg4NWUwLi5iYzc5N2M3YzhmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjE3
LDQgKzEyMTcsMTEgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBXZWJQcm9jZXNzUHJveHk6OnBs
YXRmb3JtUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkR2V0V29ya2VyQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKQoreworICAg
IG1fcHJvY2Vzc1Bvb2wtPmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTYyMmU0N2Y5ZDQuLjQyNTY0Zjkz
M2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTgx
LDYgKzE4MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdCB7IHJldHVybiBtX2lzVW5kZXJNZW1vcnlQcmVzc3VyZTsgfQogICAgIHZvaWQgZGlkRXhj
ZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlKCk7CiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihjb25zdCBJ
UEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pOworI2VuZGlmCisKICAgICB2b2lkIHByb2Nlc3NU
ZXJtaW5hdGVkKCk7CiAKICAgICB2b2lkIGRpZEV4Y2VlZENQVUxpbWl0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YWQ2OWM1MmY0MDAuLjE5MWJlNGEyM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01NCw0ICs1NCw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBNZW1vcnlQcmVz
c3VyZVN0YXR1c0NoYW5nZWQoYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUpCiAgICAgRGlkRXhj
ZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlKCkKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICBEaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbikKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGM4OGM4ZjY2NDg3Li4yZjJmYWNkZDIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgi
CiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKQEAg
LTEwNSw2ICsxMDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0
b3IuaD4KQEAgLTE2MTQsNCArMTYxNiw0NCBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNz
OjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQordm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCit7Cisg
ICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uKTsKKworI2lmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWly
ID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoc29ja2V0UGFpci5z
ZXJ2ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQ
YWlyLmNsaWVudCk7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5n
UG9ydDsKKyAgICBpZiAobWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hf
UE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAg
ICAgICBDUkFTSCgpOworCisgICAgaWYgKG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90YXNr
X3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtF
X1NFTkQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgQ1JBU0goKTsKKworICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KTsK
KyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOworI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisKKyAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uID0gSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVy
LCAqdGhpcyk7CisgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOworCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihj
b25uZWN0aW9uQ2xpZW50UG9ydCksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0U2Vy
dmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogSGVy
ZSBpcyB3aGVyZSB3ZSB3aWxsIGFjdHVhbGx5IHN0YXJ0IHRoZSBzY3JpcHQuCisgICAgLy8gRm9y
IG5vdyB3ZSBib3VuY2UgYmFjayBhIGZhaWx1cmUgbWVzc2FnZSB0byB0aGUgcmVxdWVzdGluZyBw
cm9jZXNzIGZvciB0ZXN0IGNvdmVyYWdlLgorCisgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggIiwgU3Ry
aW5nOjpudW1iZXIoZGF0YS5zY3JpcHQubGVuZ3RoKCkpKTsKKyAgICBtX3dvcmtlckNvbnRleHRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNv
bnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lz
dHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwgbWVzc2FnZSksIDApOworfQorCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCA3MzlhODU3ZGRiMS4uNWMyZTZjNzZkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtNzEsNiArNzEsMTAgQEAgY2xhc3MgVXNlckdlc3R1cmVUb2tlbjsKIHN0
cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIHN0cnVjdCBTb3Vw
TmV0d29ya1Byb3h5U2V0dGluZ3M7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitzdHJ1
Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMjkwLDEwICsyOTQsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdhbWVwYWRDb25u
ZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmKTsKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQo
dW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCi0KICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldE5l
dHdvcmtQcm94eVNldHRpbmdzKGNvbnN0IFdlYkNvcmU6OlNvdXBOZXR3b3JrUHJveHlTZXR0aW5n
cyYpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZ2V0V29y
a2VyQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRl
eHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
d29ya2VyQ29udGV4dENvbm5lY3Rpb247CisjZW5kaWYKIAogICAgIHZvaWQgcmVsZWFzZVBhZ2VD
YWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDA4ZjY5NzEzNzA1Li4yMjA2MzYwMWUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExMyw0ICsxMTMsOSBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBVU0UoU09VUCkK
ICAgICBTZXROZXR3b3JrUHJveHlTZXR0aW5ncyhzdHJ1Y3QgV2ViQ29yZTo6U291cE5ldHdvcmtQ
cm94eVNldHRpbmdzIHNldHRpbmdzKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQorICAgIFN0YXJ0U2VydmljZVdv
cmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCisjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323387</attachid>
            <date>2017-10-10 22:12:02 -0700</date>
            <delta_ts>2017-10-10 22:57:55 -0700</delta_ts>
            <desc>EWS run</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46397</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkZTkyYTg5Zjc2Zi4uYWY2ZDVmZjFjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NjQsNiArMjQ2NCw3IEBACiAJ
CTUxQzYxQjBCMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzYxQjA5
MURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUM4MUI4OTBDNDQy
MkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg3MEM0NDIyRjcwMDE5RUNFMyAvKiBG
VFBEaXJlY3RvcnlQYXJzZXIuY3BwICovOyB9OwogCQk1MUM4MUI4QTBDNDQyMkY3MDAxOUVDRTMg
LyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFy
c2VyLmggKi87IH07CisJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUNC
RkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0JGQzk4MEQxMEU0ODMw
MDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEyNDhCMUU3MzYyN0YwMDJCMjgyMCAv
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNTFEMTI0OEQxRTczNjRBQTAwMkIyODIw
IC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tICovOyB9
OwpAQCAtMTAzNjMsNiArMTAzNjQsNyBAQAogCQk1MUM2MUIwOTFERTUzNkU3MDA4QTIxMkQgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUM4MUI4NzBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4MUI4ODBDNDQyMkY3
MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQkZDOTgwRDEwRTQ4MzAw
MkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjEyLDYgKzE5MjE0LDcgQEAKIAkJCQk1MUYxNzU1ODFGM0VC
QzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgKi8sCiAJCQkJNTFGMTc1
NTcxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLywKIAkJCQk1
MUYxNzU1NjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5pZGwgKi8s
CisJCQkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oICovLAogCQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQuaCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk1MUYxNzU1NDFGM0VCQzBDMDBDNzQ5NTAgLyog
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggKi8sCkBAIC0yNzM2NCw2ICsyNzM2Nyw3IEBACiAJ
CQkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MUNBN0VFOTFGODgzMzkwMDAzRDMxMzEgLyogU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3
NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdF
QTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUQ4QzM3QTE4
M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YzYzOWU3ODUwMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CisgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSByZWdpc3RyYXRpb25LZXk7CisgICAgU3RyaW5nIHdvcmtlcklEOworICAgIFN0cmluZyBz
Y3JpcHQ7CisgICAgCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCByZWdpc3Ry
YXRpb25LZXkgPDwgd29ya2VySUQgPDwgc2NyaXB0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byByZWdp
c3RyYXRpb25LZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpkZWNvZGUoZGVjb2Rl
cik7CisgICAgaWYgKCFyZWdpc3RyYXRpb25LZXkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBTdHJpbmcgd29ya2VySUQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3b3Jr
ZXJJRCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgc2NyaXB0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwg
V1RGTW92ZSh3b3JrZXJJRCksIFdURk1vdmUoc2NyaXB0KSB9fTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA2
ZjgxYWIyNjkxMS4uMDU1OTAwYzYzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgorI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCisjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzUsNyArNzgsMTIgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGEK
IAogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBtX3NlcnZl
ci5zY3JpcHRGZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hG
aW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKK30KKwordm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
KnRoaXMsIHJlZ2lzdHJhdGlvbktleSwgd29ya2VySUQsIG1lc3NhZ2UpOwogfQogCiBTV1NlcnZl
cjo6U1dTZXJ2ZXIoKQpAQCAtMTI4LDcgKzEzNiw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAgICAgY29ubmVj
dGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpKTsKIH0K
IAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiBy
ZXN1bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0
RmV0Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJSIgUFJJdTY0ICItJSIgUFJJdTY0ICIgaW4g
Y2xpZW50IiwgcmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXN1bHQuam9iSWRlbnRpZmll
cik7CiAKQEAgLTEzOCw3ICsxNDYsMjcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5p
c2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIXJl
Z2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRG
ZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRGZXRjaEZpbmlz
aGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgU3RyaW5nJiB3b3JrZXJJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgCisgICAgaWYgKGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKKyAgICAg
ICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25uZWN0aW9uLCB3
b3JrZXJJRCwgbWVzc2FnZSk7Cit9CisKK1JlZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OmNy
ZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQoreworICAgIFN0cmluZyB3b3JrZXJJRCA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29y
a2Vyc0J5SUQuYWRkKHdvcmtlcklELCBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIHdvcmtlcklEKSk7CisgICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAKKyAgICBjb25uZWN0aW9uLnN0YXJ0U2VydmljZVdvcmtlckNvbnRl
eHQoeyByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBzY3JpcHQgfSk7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRh
c2tUaHJlYWRFbnRyeVBvaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhMWZjNWQzMzk4OS4uM2FhZmI4MGY3ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUg
IlNXU2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRRdWV1ZS5oPgpAQCAtNDIsNyArNDEsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNXU2VydmVyV29ya2VyOwog
c3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YTsKIApAQCAtNTMsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CiAKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgV0VCQ09SRV9FWFBP
UlQgQ29ubmVjdGlvbihTV1NlcnZlciYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgICAgICBT
V1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KQEAgLTYxLDEwICs2NCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwg
Y29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVK
b2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAKKyAgICAgICAgLy8gTWVz
c2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9
IDA7CisKICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07CiAKQEAgLTc5LDYgKzg2
LDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAg
IHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAKKyAgICBSZWY8U1dTZXJ2
ZXJXb3JrZXI+IGNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJU
eXBlKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVj
dGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYpOwpAQCAt
ODYsMTEgKzk1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0YXNrVGhyZWFkRW50cnlQb2ludCgp
OwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJlYWQoKTsKIAotICAgIHZvaWQg
c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAg
ICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBTdHJp
bmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
PiBtX3JlZ2lzdHJhdGlvbnM7CiAKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNXU2VydmVyV29y
a2VyPj4gbV93b3JrZXJzQnlJRDsKKwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGFza1RocmVhZDsK
ICAgICBMb2NrIG1fdGFza1RocmVhZExvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggZDUxMWRkZGRmZDUuLjEwZGViOTZlNTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcApAQCAtNjQsMTggKzY0LDMyIEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmVucXVl
dWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAgICAgICAgIG1fam9i
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1
bHQpCit2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYmIG1fY3VycmVudEpvYi0+
aWRlbnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKIAotICAgIC8vIEZJWE1FOiBX
ZSBmZXRjaGVkIHRoZSBzY3JpcHQgY29udGVudHMgYnV0IGRvbid0IGRvIGFueXRoaW5nIHdpdGgg
dGhlbSB5ZXQuCi0gICAgLy8gVGhlc2UgZXJyb3JzIGFyZSBmb3IgdGVzdGluZyB0aGUgY3VycmVu
dCBzdGF0ZSBvZiB0aGUgZmVhdHVyZS4KKyAgICBpZiAoIXJlc3VsdC5zY3JpcHRFcnJvci5pc051
bGwoKSkgeworICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwu
c3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIsIHJlc3VsdC5zY3JpcHRFcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIG5l
d2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBw
YXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KKyAgICAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgogCi0gICAgU3RyaW5n
IG1lc3NhZ2U7Ci0gICAgaWYgKHJlc3VsdC5zY3JpcHRFcnJvci5pc051bGwoKSkKLSAgICAgICAg
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRV
Ukwuc3RyaW5nKCksICIgZmV0Y2hlZCB3aXRoICIsIFN0cmluZzo6bnVtYmVyKHJlc3VsdC5zY3Jp
cHQubGVuZ3RoKCkpLCAiIGNoYXJhY3RlcnMsIGJ1dCB3ZSdyZSBub3QgdXNpbmcgdGhlIHJlc3Vs
dCB5ZXQiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJTY3JpcHQg
VVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVk
IGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhc3RVcGRhdGVUaW1lID0gY3VycmVu
dFRpbWUoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1hdGNoZXMg
Ynl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCisgICAgLy8gdGhl
biByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRo
ZXIuCisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFz
c2ljIHZzIG1vZHVsZSkKKyAgICBhdXRvIHdvcmtlciA9IG1fc2VydmVyLmNyZWF0ZVdvcmtlcihj
b25uZWN0aW9uLCBtX3JlZ2lzdHJhdGlvbktleSwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwsIHJl
c3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOworfQorCit2b2lkIFNXU2VydmVyUmVn
aXN0cmF0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOwogCiAg
ICAgcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtZXNzYWdl
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGY3Njg1NDYzZGU3Li42MjY3ZTlj
NTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDggKzQ4LDkgQEAgcHVibGlj
OgogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgdm9pZCBlbnF1ZXVlSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwotCisgICAgdm9pZCBzY3JpcHRGZXRj
aEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgZGF0YSgpIGNvbnN0
OwogCiBwcml2YXRlOgpAQCAtNzcsNiArNzksOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlcldvcmtlcj4gbV9hY3RpdmVXb3JrZXI7CiAgICAgVVJMIG1fc2NvcGVVUkw7
CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IG1fdXBkYXRl
VmlhQ2FjaGU7CisgICAgCisgICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRpbWUgeyAwLjAgfTsKIAog
ICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCA0YTdmZGNkMDZjMi4uMmE2NmYzZTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBA
IC0yOCwxOSArMjgsMTkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFVSTCYgdXJsKQotICAgIDogbV9zY3JpcHRVUkwo
dXJsKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisg
ICAgOiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCisgICAgLCBtX3NjcmlwdFVS
TCh1cmwpCisgICAgLCBtX3NjcmlwdChzY3JpcHQpCisgICAgLCBtX3dvcmtlcklEKHdvcmtlcklE
KQorICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9
CiAKIFNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQogewotICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5k
ZXggMTJkYzM1NzNmY2UuLjEzZTNhMjk0MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0yNywxOSArMjcs
MzcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
V1NlcnZlcldvcmtlciB7CitlbnVtIGNsYXNzIFdvcmtlclR5cGU7CisKK2NsYXNzIFNXU2VydmVy
V29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVyV29ya2VyPiB7CiBw
dWJsaWM6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZjxT
V1NlcnZlcldvcmtlcj4gY3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtlcihyZWdpc3RyYXRpb25LZXksIHVybCwg
c2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOworICAgIH0KKyAgICAKICAgICBTV1NlcnZlcldvcmtl
cihjb25zdCBTV1NlcnZlcldvcmtlciYpID0gZGVsZXRlOwogICAgIH5TV1NlcnZlcldvcmtlcigp
OwotICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7
IH0KIAorICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRV
Ukw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
OyB9CisgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAg
Y29uc3QgU3RyaW5nJiB3b3JrZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VySUQ7IH0KKyAg
ICAKIHByaXZhdGU6CisgICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgVVJMIG1fc2NyaXB0VVJMOworICAgIFN0cmlu
ZyBtX3NjcmlwdDsKKyAgICBTdHJpbmcgbV93b3JrZXJJRDsKKyAgICBXb3JrZXJUeXBlIG1fdHlw
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggZDhlNmMyNDVmNGUuLjU0OTg5NjNjNzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzIsMTIgKzMyLDE1IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgUEFMOwpAQCAtNDgsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQogICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24oc2VydmVyLCBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKLSAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9jb250ZW50Q29u
bmVjdGlvbihjb25uZWN0aW9uKQogewogfQogCkBAIC03Niw2ICs3OSwzMyBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpvYklk
ZW50aWZpZXIpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIGlmIChzZW5kVG9Db250ZXh0UHJvY2VzcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChpZGVudGlmaWVy
KCksIGRhdGEpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFz
LmFwcGVuZChkYXRhKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNzYWdlKQoreworICAgIGlm
ICghbV9jb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY29udGV4dENvbm5lY3Rpb24tPnNlbmQ8VT4oV1RGTW92ZShtZXNzYWdlKSwgMCk7Cit9
CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXRDb250ZXh0Q29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgbV9jb250ZXh0Q29ubmVjdGlvbiA9IGNv
bm5lY3Rpb247CisKKyAgICAvLyBXZSBjYW4gbm93IHN0YXJ0IGFueSBwZW5kaW5nIHNlcnZpY2Ug
d29ya2VyIGNvbnRleHRzLgorICAgIGZvciAoYXV0byYgcGVuZGluZ0NvbnRleHREYXRhIDogbV9w
ZW5kaW5nQ29udGV4dERhdGFzKQorICAgICAgICBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHBl
bmRpbmdDb250ZXh0RGF0YSk7CisgICAgCisgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFy
KCk7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCBi
M2NlNzZjOTVlOS4uYjJiZTA0MDZmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4
Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSwyMCArNDYsMjkgQEAgcHVibGljOgogICAgIH5XZWJT
V1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJvbVdl
YlByb2Nlc3MoKTsKKyAgICB2b2lkIHNldENvbnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpD
b25uZWN0aW9uCisgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdl
cyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1
aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmlu
YWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmKSBmaW5hbDsKICAg
ICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSBm
aW5hbDsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBm
aW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICAvLyBNZXNzYWdlcyB0byB0
aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCisgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOworICAg
IAorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7
IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1l
c3NhZ2UpOworICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCi0gICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb250
ZXh0Q29ubmVjdGlvbjsKKyAgICAKKyAgICBEZXF1ZTxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVy
Q29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggM2IzNjNlYzVkZDQuLmUxMDgw
OWM5ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KQEAgLTMyOSw2
ICszMzAsNjMgQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CisKK0lQQzo6Q29u
bmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigp
Cit7CisgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLmdldCgpOwor
fQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3dhaXRpbmdGb3JXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkdldFdvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkR2V0
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX3dhaXRpbmdGb3JXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOworCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpOwor
I2VsaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyNlbHNl
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKworICAgIGlmIChJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKSB7CisgICAgICAg
IExPR19FUlJPUigiU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiAtIFJlY2VpdmVkIG51bGwgY29ubmVjdGlvbiBpZGVudGlmaWVyIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgKnRoaXMpOworICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uLT5vcGVu
KCk7CisgICAgCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9zdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPndvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbkNyZWF0ZWQoKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXks
IGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBp
ZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5zY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChyZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNzYWdlKTsKK30KKwordm9p
ZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgbV9zd1NlcnZlckNv
bm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgJmNvbm5lY3Rpb24pOworfQor
Cit2b2lkIFN0b3JhZ2VQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNX
U2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9zd1NlcnZlckNv
bm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkgPT0gJmNvbm5lY3Rpb24pOwor
ICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkp
OworfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggZjQwODMzNDJhYzQuLmNhNDE1NTM2
YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5o
CkBAIC0zNywxMSArMzcsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVy
Owogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczsKIApAQCAtNjcsMTIgKzY5LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFjY2Vzc1RvVGVt
cG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWw7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBJUEM6OkNvbm5lY3Rpb24qIHdvcmtlckNv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgY3JlYXRlV29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lP
TlMpCiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZv
clNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC0xMDEsNyArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRl
bnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwogICAgIHZvaWQgZGlkR2V0U2FuZGJveEV4dGVuc2lv
bnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYmKTsKICNlbmRpZgotCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZv
aWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNo
bWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlcnZpY2VXb3Jr
ZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFN0
cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisjZW5kaWYKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAjZW5kaWYK
QEAgLTEyNSw3ICsxMzcsMTIgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fc3RvcmFnZVRhc2tNdXRl
eDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBkaWRDcmVhdGVX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CisK
KyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbjsKKyAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjOWRlYWRmMjdjOC4uMTgwMmYwZDRjODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMzQsNCArMzQsOSBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKFZlY3RvcjxT
dHJpbmc+IHBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVu
c2lvbnMpCiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3Qg
cmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lv
bnMpCiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUpCisgICAgU2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFN0cmluZyB3b3JrZXJJRCwgU3RyaW5nIG1lc3Nh
Z2UpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMjdiYWQxY2Qy
MmQuLjFmNDI2NDAwNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNTUsNiAr
NTUsOSBAQCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6U3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZAogU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246On5TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9z
d0Nvbm5lY3Rpb25zLnZhbHVlcygpKQorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9u
KCkudW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbigqY29ubmVjdGlvbik7CiB9CiAKIHZvaWQg
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTM4LDcgKzE0
MSwxNSBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogICAgIEFTU0VSVCghbV9zd0Nvbm5lY3Rp
b25zLmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAKICAgICBhdXRvJiBz
ZXJ2ZXIgPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNl
c3Npb25JRCk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zLnNldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9j
b25uZWN0aW9uLmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7
CisgICAgYXV0byBjb25uZWN0aW9uUmVzdWx0ID0gbV9zd0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rp
b24+KHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgc2Vzc2lvbklEKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb25SZXN1bHQuaXNOZXdFbnRyeSk7
CisKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oKihjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOworCisgICAgaWYgKGF1
dG8qIGNvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb25SZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5zZXRDb250ZXh0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICBlbHNlCisgICAg
ICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6
cmVtb3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKQpAQCAtMTQ2LDggKzE1NywxOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uOjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubgogICAgIEFT
U0VSVChtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KTsKIAogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy50YWtlKHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkudW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbigqY29ubmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi0+
ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKIH0KKwordm9pZCBTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpCit7
CisgICAgYXV0byogaXBjQ29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoaXBjQ29ubmVjdGlv
bik7CisKKyAgICBmb3IgKGF1dG8mIHN3Q29ubmVjdGlvbiA6IG1fc3dDb25uZWN0aW9ucy52YWx1
ZXMoKSkKKyAgICAgICAgc3dDb25uZWN0aW9uLT5zZXRDb250ZXh0Q29ubmVjdGlvbihpcGNDb25u
ZWN0aW9uKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0x
NjksNSArMTkwLDQgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3Zl
SURCQ29ubmVjdGlvblRvU2VydmVyKHVpbnQ2NF90IHNlcnZlckMKIH0KICNlbmRpZgogCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGVkNjU4MDJl
ZGNiLi41YjljZThhYTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDQsNiArNDQs
MTAgQEAgcHVibGljOgogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1
cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgdm9pZCB3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1NWNmZmY1MzU2ZS4uNzQy
ZGE1YWFkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQogICAgIHJldHVybiArK2NhbGxiYWNrSUQ7CiB9CiAK
LVJlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQorUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IFN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCkp
OwogfQogCi1TdG9yYWdlUHJvY2Vzc1Byb3h5OjpTdG9yYWdlUHJvY2Vzc1Byb3h5KFdlYlByb2Nl
c3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IENoaWxkUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29s
LT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKK1N0b3JhZ2VQcm9jZXNzUHJveHk6
OlN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDog
Q2hpbGRQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9y
aXR5KCkpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQogICAgICwgbV9udW1QZW5k
aW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCiB7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIG1fcGVuZGlu
Z0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5jbGVhcigpOwogCiAgICAgLy8g
VGVsbCBQcm9jZXNzUG9vbCB0byBmb3JnZXQgYWJvdXQgdGhpcyBzdG9yYWdlIHByb2Nlc3MuIFRo
aXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC0+c3RvcmFn
ZVByb2Nlc3NDcmFzaGVkKHRoaXMpOworICAgIG1fcHJvY2Vzc1Bvb2wuc3RvcmFnZVByb2Nlc3ND
cmFzaGVkKHRoaXMpOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTIy
MCw0ICsyMjAsMjAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAgICBtX251bVBlbmRpbmdD
b25uZWN0aW9uUmVxdWVzdHMgPSAwOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
dm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24oKQoreworICAgIEFTU0VSVCghbV93YWl0aW5nT25Xb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pOworICAgIG1fd2FpdGluZ09uV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0g
dHJ1ZTsKKyAgICAKKyAgICBtX3Byb2Nlc3NQb29sLmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkR2V0V29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVj
dGlvbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkR2V0V29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pLCAwKTsKK30KKworI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAppbmRleCBjMmQyZWJhNjA5Mi4uZmM5MTcx
OTNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YTsK
IAogY2xhc3MgU3RvcmFnZVByb2Nlc3NQcm94eSA6IHB1YmxpYyBDaGlsZFByb2Nlc3NQcm94eSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IGNyZWF0
ZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5TdG9yYWdlUHJvY2Vzc1Byb3h5KCk7CiAKICAgICB2
b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKQEAgLTU3LDggKzU3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgot
ICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBTdG9yYWdlUHJv
Y2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3NQcm94eQog
ICAgIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
KSBvdmVycmlkZTsKQEAgLTc5LDExICs4MywxNSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5E
Qk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxl
cyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBib29sIG1fd2FpdGluZ09uV29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgLy8gUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgV2ViUHJvY2Vz
c1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7CisgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7
CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVx
dWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmE3OGE2YjFjNzEuLmI5ZmNkMTk5NzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMCw0ICszMCw4IEBAIG1lc3NhZ2VzIC0+
IFN0b3JhZ2VQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTQU5EQk9Y
X0VYVEVOU0lPTlMpCiAgICAgR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0
X3QgcmVxdWVzdElELCBWZWN0b3I8U3RyaW5nPiBwYXRocykKICNlbmRpZgorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorICAgIEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigp
CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCA0YjQwZGVmZjU2Yi4uMDI1NDg4YjQ2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFT
dG9yZSogcgogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0g
U3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX3N0b3JhZ2VQcm9j
ZXNzID0gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgbV9zdG9y
YWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJz
aXRlRGF0YVN0b3JlKHBhcmFtZXRlcnMpLCAwKTsKICAgICB9CiAKQEAgLTU3NCw2ICs1NzQsMjkg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9j
ZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzUHIKICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gbnVsbHB0
cjsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihTdG9yYWdlUHJvY2Vzc1Byb3h5JiBw
cm94eSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9zdG9yYWdlUHJv
Y2Vzcyk7CisgICAgCisgICAgaWYgKCFtX3dvcmtlckNvbnRleHRQcm9jZXNzKSB7CisgICAgICAg
IGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAg
ICAgIGF1dG8mIG5ld1Byb2Nlc3MgPSBjcmVhdGVOZXdXZWJQcm9jZXNzKG1fd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2Vz
cyA9ICZuZXdQcm9jZXNzOworICAgIH0KKyAgICAKKyAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigp
LCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbikKK3sKKyAgICBp
ZiAoIW1fc3RvcmFnZVByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0b3JhZ2VQcm9j
ZXNzLT5kaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9
CisjZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJv
d3NpbmcoKQogewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBhbGxQcm9jZXNzUG9vbHMo
KSkKQEAgLTg4Miw2ICs5MDUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IHByb3RlY3QocHJvY2Vzcyk7CiAgICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0g
cHJvY2VzcykKICAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3dvcmtlckNvbnRleHRQcm9jZXNzID09
IHByb2Nlc3MpCisgICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3MgPSBudWxscHRyOworI2Vu
ZGlmCiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7
CiAKQEAgLTk2MCw2ICs5ODcsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIH0gZWxz
ZQogICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vz
c0NvdW50TGltaXQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKIAorICAgIEFTU0VSVChwcm9jZXNzLmdldCgpICE9IG1fd29ya2VyQ29u
dGV4dFByb2Nlc3MpOworCiAgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNs
aWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA3YzdhOGVjOTFlZi4uMTAxN2VjYjc1MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzE5LDYgKzMxOSw5
IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2VzcygpIHsg
cmV0dXJuIG1fc3RvcmFnZVByb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIGdldFN0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgc3RvcmFnZVByb2Nl
c3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oU3RvcmFnZVBy
b2Nlc3NQcm94eSYpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdDsKQEAgLTQxMiw2ICs0MTUsMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0
ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2b2lk
IHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRpZmll
cik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9u
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAK
QEAgLTQ3Nyw2ICs0ODQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZUluaXRpYWxFbXB0
eVByb2Nlc3M7CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGU7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlByb2Nlc3NQcm94eSogbV93b3Jr
ZXJDb250ZXh0UHJvY2VzcyB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fd2FpdGluZ0Zvcldvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIFJlZjxX
ZWJQYWdlR3JvdXA+IG1fZGVmYXVsdFBhZ2VHcm91cDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDcxZDcxODg1ZTAuLmJjNzk3YzdjOGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEyMTcs
NCArMTIxNywxMSBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIFdlYlByb2Nlc3NQcm94eTo6cGxh
dGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRHZXRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCit7CisgICAg
bV9wcm9jZXNzUG9vbC0+ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjIyZTQ3ZjlkNC4uNDI1NjRmOTMz
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xODEs
NiArMTgxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNVbmRlck1lbW9yeVByZXNzdXJlOyB9CiAgICAgdm9pZCBkaWRFeGNl
ZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYgY29ubmVjdGlvbik7CisjZW5kaWYKKwogICAgIHZvaWQgcHJvY2Vzc1Rl
cm1pbmF0ZWQoKTsKIAogICAgIHZvaWQgZGlkRXhjZWVkQ1BVTGltaXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBh
ZDY5YzUyZjQwMC4uMTkxYmU0YTIzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTU0LDQgKzU0LDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIE1lbW9yeVByZXNz
dXJlU3RhdHVzQ2hhbmdlZChib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSkKICAgICBEaWRFeGNl
ZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIERpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggYzg4YzhmNjY0ODcuLjJmMmZhY2RkMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpAQCAt
MTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oPgpAQCAtMTYxNCw0ICsxNjE2LDQ0IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCit2b2lkIFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAg
ICBBU1NFUlQoIW1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24pOworCisjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIg
PSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihzb2NrZXRQYWlyLnNl
cnZlcik7CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KHNvY2tldFBh
aXIuY2xpZW50KTsKKyNlbGlmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQ
b3J0OworICAgIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9Q
T1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAg
ICAgIENSQVNIKCk7CisKKyAgICBpZiAobWFjaF9wb3J0X2luc2VydF9yaWdodChtYWNoX3Rhc2tf
c2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0Vf
U0VORCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICBDUkFTSCgpOworCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpOwor
ICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCk7CisjZWxzZQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKKworICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
ICp0aGlzKTsKKyAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNv
bm5lY3Rpb25DbGllbnRQb3J0KSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRTZXJ2
aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBIZXJl
IGlzIHdoZXJlIHdlIHdpbGwgYWN0dWFsbHkgc3RhcnQgdGhlIHNjcmlwdC4KKyAgICAvLyBGb3Ig
bm93IHdlIGJvdW5jZSBiYWNrIGEgZmFpbHVyZSBtZXNzYWdlIHRvIHRoZSByZXF1ZXN0aW5nIHBy
b2Nlc3MgZm9yIHRlc3QgY292ZXJhZ2UuCisKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCAiLCBTdHJp
bmc6Om51bWJlcihkYXRhLnNjcmlwdC5sZW5ndGgoKSkpOworICAgIG1fd29ya2VyQ29udGV4dENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dEZhaWxlZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0
cmF0aW9uS2V5LCBkYXRhLndvcmtlcklELCBtZXNzYWdlKSwgMCk7Cit9CisKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDczOWE4NTdkZGIxLi41YzJlNmM3NmRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC03MSw2ICs3MSwxMCBAQCBjbGFzcyBVc2VyR2VzdHVyZVRva2VuOwogc3Ry
dWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IFNvdXBO
ZXR3b3JrUHJveHlTZXR0aW5nczsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3N0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0yOTAsMTAgKzI5NCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZENvbm5l
Y3RlZChjb25zdCBHYW1lcGFkRGF0YSYpOwogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1
bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKLQogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0TmV0
d29ya1Byb3h5U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdz
Jik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBnZXRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbigpOworICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4
dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93
b3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKKyNlbmRpZgogCiAgICAgdm9pZCByZWxlYXNlUGFnZUNh
Y2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMDhmNjk3MTM3MDUuLjIyMDYzNjAxZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDQgKzExMyw5IEBA
IG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFVTRShTT1VQKQog
ICAgIFNldE5ldHdvcmtQcm94eVNldHRpbmdzKHN0cnVjdCBXZWJDb3JlOjpTb3VwTmV0d29ya1By
b3h5U2V0dGluZ3Mgc2V0dGluZ3MpCiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICBHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisgICAgU3RhcnRTZXJ2aWNlV29y
a2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKKyNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323389</attachid>
            <date>2017-10-10 22:57:55 -0700</date>
            <delta_ts>2017-10-11 09:45:53 -0700</delta_ts>
            <desc>EWS run</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>49580</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggMzRmNjQ5NmRlNzEuLjg3YzVmYjI4MDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDQwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogc2VydmljZVdvcmsKIENPTlNPTEUgTUVTU0FHRTogbGluZSA1MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBt
dXN0IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwYXRoIGRvZXMgbm90IGNvbnRh
aW4gJyUyZicgb3IgJyU1YycKIENPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBlaXRoZXIgSFRUUCBvciBIVFRQUwogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDcwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogU2NvcGUgVVJMIHByb3ZpZGVkIHRvIHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBjYW5u
b3QgaGF2ZSBhIHBhdGggdGhhdCBjb250YWlucyAnJTJmJyBvciAnJTVjJwotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJv
cjogU2NyaXB0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd29ya2Vycy9zZXJ2aWNlL2ltYWdl
LW1pbWUtdHlwZS5waHAgZmV0Y2hlZCB3aXRoIDAgY2hhcmFjdGVycywgYnV0IHdlJ3JlIG5vdCB1
c2luZyB0aGUgcmVzdWx0IHlldAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRp
b24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZp
Y2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggMAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDgwOiBS
ZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFNlY3VyaXR5RXJyb3I6IFNjcmlwdCBvcmln
aW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbgogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDkxOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFNlY3Vy
aXR5RXJyb3I6IFNjb3BlIG9yaWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xp
ZW50J3Mgb3JpZ2luCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4cGVjdGVkLnR4dAppbmRleCA0
OTQwNzc4NGFiZi4uNTEzM2JiMmZjZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IFJlZ2lzdHJh
dGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBTY3JpcHQgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2VtcHR5LXdvcmtlci5qcyBm
ZXRjaGVkIHdpdGggNDEgY2hhcmFjdGVycywgYnV0IHdlJ3JlIG5vdCB1c2luZyB0aGUgcmVzdWx0
IHlldAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGgg
ZXJyb3I6IFVua25vd25FcnJvcjogU2NyaXB0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9lbXB0eS13b3JrZXItZG9lc250LWV4aXN0LmpzIGZldGNo
ZWQgd2l0aCAwIGNoYXJhY3RlcnMsIGJ1dCB3ZSdyZSBub3QgdXNpbmcgdGhlIHJlc3VsdCB5ZXQK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9y
OiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2Yg
bGVuZ3RoIDQxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IFJlZ2lzdHJhdGlvbiBmYWlsZWQg
d2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIg
c2NyaXB0IG9mIGxlbmd0aCAwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3Ry
YXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0ZWQudHh0CmluZGV4IGY5MTRmNTAw
MWQyLi5jMWEwNjM1MDYzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3Ry
YXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEsMiBA
QAotQUxFUlQ6IERvbmUKK0FMRVJUOiBVbmV4cGVjdGVkIGVycm9yIHJlY2VpdmVkIGZyb20gc2Vy
dmVyOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQg
b2YgbGVuZ3RoIDQxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkZTkyYTg5Zjc2Zi4uYWY2ZDVmZjFjNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0NjQs
NiArMjQ2NCw3IEBACiAJCTUxQzYxQjBCMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzYxQjA5MURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MUM4MUI4OTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg3MEM0NDIy
RjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwICovOyB9OwogCQk1MUM4MUI4QTBD
NDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyog
RlRQRGlyZWN0b3J5UGFyc2VyLmggKi87IH07CisJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAv
KiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MUNCRkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
Q0JGQzk4MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEyNDhCMUU3
MzYyN0YwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDhBMUU3MzYyNUMwMDJC
MjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNTFEMTI0OEQx
RTczNjRBQTAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tp
ZUNvY29hLm1tICovOyB9OwpAQCAtMTAzNjMsNiArMTAzNjQsNyBAQAogCQk1MUM2MUIwOTFERTUz
NkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4MUI4NzBDNDQyMkY3MDAxOUVDRTMgLyogRlRQ
RGlyZWN0b3J5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFD
QkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgyMCAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2llQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjEyLDYgKzE5MjE0LDcgQEAKIAkJ
CQk1MUYxNzU1ODFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAg
Ki8sCiAJCQkJNTFGMTc1NTcxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaCAqLywKIAkJCQk1MUYxNzU1NjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNv
bnRhaW5lci5pZGwgKi8sCisJCQkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oICovLAogCQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMwQSAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBDMDBDNzQ5
NTAgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk1MUYxNzU1NDFGM0VC
QzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggKi8sCkBAIC0yNzM2NCw2
ICsyNzM2Nyw3IEBACiAJCQkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJj
ZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2JVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAv
KiBCb3JkZXJEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUNBN0VFOTFGODgzMzkwMDAzRDMx
MzEgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODk1
NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RUQ4QzM3QTE4M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43YzYzOWU3ODUwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CisgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXk7CisgICAgU3RyaW5nIHdvcmtlcklE
OworICAgIFN0cmluZyBzY3JpcHQ7CisgICAgCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCByZWdpc3RyYXRpb25LZXkgPDwgd29ya2VySUQgPDwgc2NyaXB0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgYXV0byByZWdpc3RyYXRpb25LZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFyZWdpc3RyYXRpb25LZXkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgd29ya2VySUQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh3b3JrZXJJRCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBTdHJpbmcgc2NyaXB0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0KSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVn
aXN0cmF0aW9uS2V5KSwgV1RGTW92ZSh3b3JrZXJJRCksIFdURk1vdmUoc2NyaXB0KSB9fTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA2ZjgxYWIyNjkxMS4uMDU1OTAwYzYzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMiw4ICsz
MiwxMSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKKyNpbmNsdWRlICJTV1NlcnZlcldv
cmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzUsNyArNzgsMTIgQEAgdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iRGEKIAogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkK
IHsKLSAgICBtX3NlcnZlci5zY3JpcHRGZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgbV9zZXJ2
ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKK30KKwordm9pZCBTV1NlcnZl
cjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBTdHJpbmcmIHdvcmtl
cklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoKnRoaXMsIHJlZ2lzdHJhdGlvbktleSwgd29ya2VySUQsIG1lc3NhZ2Up
OwogfQogCiBTV1NlcnZlcjo6U1dTZXJ2ZXIoKQpAQCAtMTI4LDcgKzEzNiw3IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRh
dGEpCiAgICAgY29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRl
bnRpZmllcigpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlw
dEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIg
aGFuZGxpbmcgc2NyaXB0RmV0Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJSIgUFJJdTY0ICIt
JSIgUFJJdTY0ICIgaW4gY2xpZW50IiwgcmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXN1
bHQuam9iSWRlbnRpZmllcik7CiAKQEAgLTEzOCw3ICsxNDYsMjcgQEAgdm9pZCBTV1NlcnZlcjo6
c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3Vs
dCkKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0
cmF0aW9uLT5zY3JpcHRGZXRjaEZpbmlzaGVkKHJlc3VsdCk7CisgICAgcmVnaXN0cmF0aW9uLT5z
Y3JpcHRGZXRjaEZpbmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3Qg
U3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgCisg
ICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0
aW9uS2V5KSkKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChjb25uZWN0aW9uLCB3b3JrZXJJRCwgbWVzc2FnZSk7Cit9CisKK1JlZjxTV1NlcnZlcldvcmtl
cj4gU1dTZXJ2ZXI6OmNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQoreworICAgIFN0cmlu
ZyB3b3JrZXJJRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICAKKyAgICBhdXRv
IHJlc3VsdCA9IG1fd29ya2Vyc0J5SUQuYWRkKHdvcmtlcklELCBTV1NlcnZlcldvcmtlcjo6Y3Jl
YXRlKHJlZ2lzdHJhdGlvbktleSwgdXJsLCBzY3JpcHQsIHR5cGUsIHdvcmtlcklEKSk7CisgICAg
QVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAKKyAgICBjb25uZWN0aW9uLnN0YXJ0U2Vy
dmljZVdvcmtlckNvbnRleHQoeyByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBzY3JpcHQgfSk7
CisgICAgCisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnRhc2tUaHJlYWRFbnRyeVBvaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhMWZjNWQzMzk4OS4uM2Fh
ZmI4MGY3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAotI2luY2x1ZGUgIlNXU2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckpvYi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIK
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgpAQCAtNDIsNyArNDEsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNX
U2VydmVyV29ya2VyOwogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIApAQCAtNTMsNiArNTQsOCBAQCBwdWJsaWM6
CiAgICAgcHVibGljOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9u
KCk7CiAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3
b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlvbihTV1NlcnZlciYsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwogICAgICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KQEAg
LTYxLDEwICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2Vi
UHJvY2VzcwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQodWludDY0X3Qg
am9iSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSA9IDA7CiAK
KyAgICAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmKSA9IDA7CisKICAgICAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIH07
CiAKQEAgLTc5LDYgKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJl
YWRUYXNrJiYpOwogICAgIHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAK
KyAgICBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBXb3JrZXJUeXBlKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckNv
bm5lY3Rpb24oQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oQ29u
bmVjdGlvbiYpOwpAQCAtODYsMTEgKzk1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0YXNrVGhy
ZWFkRW50cnlQb2ludCgpOwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJlYWQo
KTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFz
aE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CiAKKyAgICBIYXNoTWFwPFN0cmluZywg
UmVmPFNXU2VydmVyV29ya2VyPj4gbV93b3JrZXJzQnlJRDsKKwogICAgIFJlZlB0cjxUaHJlYWQ+
IG1fdGFza1RocmVhZDsKICAgICBMb2NrIG1fdGFza1RocmVhZExvY2s7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKaW5kZXggZDUxMWRkZGRmZDUuLjEwZGViOTZlNTZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNjQsMTggKzY0LDMyIEBAIHZvaWQgU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OmVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEp
CiAgICAgICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRGZXRj
aEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNl
V29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYm
IG1fY3VycmVudEpvYi0+aWRlbnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKIAot
ICAgIC8vIEZJWE1FOiBXZSBmZXRjaGVkIHRoZSBzY3JpcHQgY29udGVudHMgYnV0IGRvbid0IGRv
IGFueXRoaW5nIHdpdGggdGhlbSB5ZXQuCi0gICAgLy8gVGhlc2UgZXJyb3JzIGFyZSBmb3IgdGVz
dGluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZmVhdHVyZS4KKyAgICBpZiAoIXJlc3VsdC5z
Y3JpcHRFcnJvci5pc051bGwoKSkgeworICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlv
bkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50
Sm9iLT5zY3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIsIHJl
c3VsdC5zY3JpcHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKKyAgICAgICAgCisg
ICAgICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0
aW9uIGFsZ29yaXRobSBwYXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4K
KyAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0
LgogCi0gICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKHJlc3VsdC5zY3JpcHRFcnJvci5pc051
bGwoKSkKLSAgICAgICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJy
ZW50Sm9iLT5zY3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2hlZCB3aXRoICIsIFN0cmluZzo6bnVt
YmVyKHJlc3VsdC5zY3JpcHQubGVuZ3RoKCkpLCAiIGNoYXJhY3RlcnMsIGJ1dCB3ZSdyZSBub3Qg
dXNpbmcgdGhlIHJlc3VsdCB5ZXQiKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAi
IGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhc3RVcGRh
dGVUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlw
dCBkYXRhIG1hdGNoZXMgYnl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3Jr
ZXIsCisgICAgLy8gdGhlbiByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5n
IGFueXRoaW5nIGZ1cnRoZXIuCisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdv
cmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKKyAgICBhdXRvIHdvcmtlciA9IG1fc2VydmVy
LmNyZWF0ZVdvcmtlcihjb25uZWN0aW9uLCBtX3JlZ2lzdHJhdGlvbktleSwgbV9jdXJyZW50Sm9i
LT5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOworfQorCit2
b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1Nl
cnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBVTlVTRURfUEFSQU0o
d29ya2VySUQpOwogCiAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93
bkVycm9yLCBtZXNzYWdlIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGY3Njg1
NDYzZGU3Li42MjY3ZTljNTg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU1dTZXJ2
ZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDgg
KzQ4LDkgQEAgcHVibGljOgogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgdm9p
ZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBzY3Jp
cHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwotCisgICAg
dm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgZGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzcsNiArNzksOCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlcldvcmtlcj4gbV9hY3RpdmVXb3JrZXI7CiAgICAg
VVJMIG1fc2NvcGVVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlh
Q2FjaGU+IG1fdXBkYXRlVmlhQ2FjaGU7CisgICAgCisgICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRp
bWUgeyAwLjAgfTsKIAogICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAgU1dTZXJ2ZXImIG1fc2Vy
dmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA0YTdmZGNkMDZjMi4uMmE2NmYzZTBkNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC0yOCwxOSArMjgsMTkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIAotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0IFVSTCYgdXJsKQotICAg
IDogbV9zY3JpcHRVUkwodXJsKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgd29ya2VySUQpCisgICAgOiBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb25LZXkpCisg
ICAgLCBtX3NjcmlwdFVSTCh1cmwpCisgICAgLCBtX3NjcmlwdChzY3JpcHQpCisgICAgLCBtX3dv
cmtlcklEKHdvcmtlcklEKQorICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiB9CiAKIFNXU2VydmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQogewot
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKaW5kZXggMTJkYzM1NzNmY2UuLjEzZTNhMjk0MTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CkBAIC0yNywxOSArMjcsMzcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTV1NlcnZlcldvcmtlciB7CitlbnVtIGNsYXNzIFdvcmtlclR5cGU7CisK
K2NsYXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2Vy
dmVyV29ya2VyPiB7CiBwdWJsaWM6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgVVJMJik7Cisg
ICAgc3RhdGljIFJlZjxTV1NlcnZlcldvcmtlcj4gY3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtlcihyZWdpc3Ry
YXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOworICAgIH0KKyAgICAKICAg
ICBTV1NlcnZlcldvcmtlcihjb25zdCBTV1NlcnZlcldvcmtlciYpID0gZGVsZXRlOwogICAgIH5T
V1NlcnZlcldvcmtlcigpOwotICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRVUkw7IH0KIAorICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JpcHRVUkw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0OyB9CisgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisgICAgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2VySUQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBXb3JrZXJUeXBlLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgVVJMIG1fc2NyaXB0
VVJMOworICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBTdHJpbmcgbV93b3JrZXJJRDsKKyAgICBX
b3JrZXJUeXBlIG1fdHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZDhlNmMyNDVmNGUuLjU0OTg5NjNj
NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzIsMTIg
KzMyLDE1IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgUEFMOwpAQCAtNDgsNyArNTEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKFNX
U2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgY29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQogICAgIDogU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyLCBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAg
ICwgbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQogewogfQogCkBAIC03Niw2ICs3OSwz
MyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIpKTsKIH0K
IAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQo
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIGlmIChzZW5kVG9D
b250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dChpZGVudGlmaWVyKCksIGRhdGEpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5k
aW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNz
YWdlKQoreworICAgIGlmICghbV9jb250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIG1fY29udGV4dENvbm5lY3Rpb24tPnNlbmQ8VT4oV1RGTW92ZSht
ZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXRDb250ZXh0
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgbV9jb250ZXh0
Q29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisKKyAgICAvLyBXZSBjYW4gbm93IHN0YXJ0IGFueSBw
ZW5kaW5nIHNlcnZpY2Ugd29ya2VyIGNvbnRleHRzLgorICAgIGZvciAoYXV0byYgcGVuZGluZ0Nv
bnRleHREYXRhIDogbV9wZW5kaW5nQ29udGV4dERhdGFzKQorICAgICAgICBzdGFydFNlcnZpY2VX
b3JrZXJDb250ZXh0KHBlbmRpbmdDb250ZXh0RGF0YSk7CisgICAgCisgICAgbV9wZW5kaW5nQ29u
dGV4dERhdGFzLmNsZWFyKCk7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCBiM2NlNzZjOTVlOS4uYjJiZTA0MDZmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NSwyMCArNDYsMjkgQEAgcHVi
bGljOgogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgZGlz
Y29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKKyAgICB2b2lkIHNldENvbnRleHRDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgLy8gSW1wbGVt
ZW50IFNXU2VydmVyOjpDb25uZWN0aW9uCisgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25u
ZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWpl
Y3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0X3Qg
am9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBq
b2JJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICAv
LyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCisgICAgdm9pZCBzdGFydFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYpIGZpbmFsOworICAgIAorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVu
dGlmaWVyKCk7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQ29udGV4
dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOworICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogCi0gICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29u
bmVjdGlvbj4gbV9jb250ZXh0Q29ubmVjdGlvbjsKKyAgICAKKyAgICBEZXF1ZTxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKIH07IC8vIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggM2Iz
NjNlYzVkZDQuLmUxMDgwOWM5ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0b3Jh
Z2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURh
dGEuaD4KQEAgLTMyOSw2ICszMzAsNjMgQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpzd1Nl
cnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFTU0VSVChyZXN1
bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CiB9CisKK0lQQzo6Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OndvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uLmdldCgpOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3dhaXRp
bmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6Okdl
dFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKK30KKwordm9pZCBTdG9yYWdl
UHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6
QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIEFTU0VSVCht
X3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1fd2FpdGlu
Z0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOworCisjaWYgVVNFKFVO
SVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxl
RGVzY3JpcHRvcigpOworI2VsaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKworICAg
IGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZp
ZXIpKSB7CisgICAgICAgIExPR19FUlJPUigiU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtlckNv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbiAtIFJlY2VpdmVkIG51bGwgY29ubmVjdGlvbiBpZGVudGlm
aWVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihj
b25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uLT5vcGVuKCk7CisgICAgCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9z
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPndvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKTsKK30KKwordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9u
cy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5z
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNz
YWdlKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVCghbV9z
d1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7Cisg
ICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgJmNv
bm5lY3Rpb24pOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NF
UlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkgPT0g
JmNvbm5lY3Rpb24pOworICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlv
bi5pZGVudGlmaWVyKCkpOworfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggZjQwODMz
NDJhYzQuLmNhNDE1NTM2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oCkBAIC0zNywxMSArMzcsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNXU2VydmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK3N0cnVjdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBTdG9yYWdlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNjcsMTIgKzY5LDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkgZmlu
YWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBJUEM6OkNvbm5l
Y3Rpb24qIHdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgY3JlYXRl
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShT
QU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2Vy
dmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVnaXN0
ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC0xMDEsNyArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
cmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhz
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwogICAgIHZvaWQgZGlkR2V0
U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICNlbmRpZgotCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2
b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAjZW5kaWYKQEAgLTEyNSw3ICsxMzcsMTIgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1f
c3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
dm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpB
dHRhY2htZW50Jik7CisKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPj4gbV9zd1NlcnZlcnM7CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKj4gbV9zd1NlcnZlckNvbm5lY3Rp
b25zOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjOWRlYWRmMjdjOC4uMTgwMmYw
ZDRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsNCArMzQsOSBAQCBtZXNzYWdlcyAtPiBTdG9y
YWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9uc0Zv
ckJsb2JzKFZlY3RvcjxTdHJpbmc+IHBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IGV4dGVuc2lvbnMpCiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9i
RmlsZXModWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IGV4dGVuc2lvbnMpCiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBEaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50
IGNvbm5lY3Rpb25IYW5kbGUpCisgICAgU2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFN0cmluZyB3b3JrZXJJ
RCwgU3RyaW5nIG1lc3NhZ2UpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggMjdiYWQxY2QyMmQuLjQ1NDViYzRhMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtNTUsNiArNTUsMTEgQEAgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OlN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWQKIFN0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uOjp+U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewogICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3dDb25uZWN0aW9ucy52YWx1
ZXMoKSkKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oKmNvbm5lY3Rpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgU3RvcmFnZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTM4LDcgKzE0MywxNSBAQCB2
b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogICAgIEFTU0VSVCghbV9zd0Nvbm5lY3Rpb25zLmNvbnRh
aW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAKICAgICBhdXRvJiBzZXJ2ZXIgPSBT
dG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7
Ci0gICAgbV9zd0Nvbm5lY3Rpb25zLnNldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9jb25uZWN0aW9u
LmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7CisgICAgYXV0
byBjb25uZWN0aW9uUmVzdWx0ID0gbV9zd0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZl
ciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lv
bklEKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb25SZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBT
dG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oKihj
b25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOworCisgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5z
ZXRDb250ZXh0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIFN0b3Jh
Z2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIH0KIAogdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlU1dT
ZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAt
MTQ2LDggKzE1OSwxOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1v
dmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubgogICAgIEFTU0VSVChtX3N3
Q29ubmVjdGlvbnMuY29udGFpbnMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIAogICAg
IGF1dG8gY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy50YWtlKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclNX
U2VydmVyQ29ubmVjdGlvbigqY29ubmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi0+ZGlzY29ubmVj
dGVkRnJvbVdlYlByb2Nlc3MoKTsKIH0KKwordm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpCit7CisgICAgYXV0
byogaXBjQ29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoaXBjQ29ubmVjdGlvbik7CisKKyAg
ICBmb3IgKGF1dG8mIHN3Q29ubmVjdGlvbiA6IG1fc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkKKyAg
ICAgICAgc3dDb25uZWN0aW9uLT5zZXRDb250ZXh0Q29ubmVjdGlvbihpcGNDb25uZWN0aW9uKTsK
K30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNjksNSArMTky
LDQgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlSURCQ29ubmVj
dGlvblRvU2VydmVyKHVpbnQ2NF90IHNlcnZlckMKIH0KICNlbmRpZgogCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGVkNjU4MDJlZGNiLi41Yjlj
ZThhYTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDQsNiArNDQsMTAgQEAgcHVi
bGljOgogCiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25u
ZWN0aW9uLmdldCgpOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCB3
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1NWNmZmY1MzU2ZS4uNzQyZGE1YWFkNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZUNhbGxiYWNrSUQoKQogICAgIHJldHVybiArK2NhbGxiYWNrSUQ7CiB9CiAKLVJlZjxTdG9y
YWdlUHJvY2Vzc1Byb3h5PiBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sKQorUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCkpOwogfQogCi1T
dG9yYWdlUHJvY2Vzc1Byb3h5OjpTdG9yYWdlUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLSAgICA6IENoaWxkUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLT5hbHdheXNS
dW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKK1N0b3JhZ2VQcm9jZXNzUHJveHk6OlN0b3JhZ2VQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogQ2hpbGRQcm9j
ZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KCkpCiAg
ICAgLCBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVj
dGlvblJlcXVlc3RzKDApCiB7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIG1fcGVuZGluZ0RlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5jbGVhcigpOwogCiAgICAgLy8gVGVsbCBQcm9j
ZXNzUG9vbCB0byBmb3JnZXQgYWJvdXQgdGhpcyBzdG9yYWdlIHByb2Nlc3MuIFRoaXMgbWF5IGNh
dXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV9wcm9jZXNzUG9vbC0+c3RvcmFnZVByb2Nlc3ND
cmFzaGVkKHRoaXMpOworICAgIG1fcHJvY2Vzc1Bvb2wuc3RvcmFnZVByb2Nlc3NDcmFzaGVkKHRo
aXMpOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKQEAgLTIyMCw0ICsyMjAs
MjAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9u
UmVxdWVzdHMgPSAwOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBTdG9y
YWdlUHJvY2Vzc1Byb3h5OjpnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQorewor
ICAgIEFTU0VSVCghbV93YWl0aW5nT25Xb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgIG1fd2FpdGluZ09uV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKKyAg
ICAKKyAgICBtX3Byb2Nlc3NQb29sLmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigq
dGhpcyk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkR2V0V29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkR2V0V29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pLCAwKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuaAppbmRleCBjMmQyZWJhNjA5Mi4uZmM5MTcxOTNkOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAogY2xhc3Mg
U3RvcmFnZVByb2Nlc3NQcm94eSA6IHB1YmxpYyBDaGlsZFByb2Nlc3NQcm94eSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bv
b2wqKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9j
ZXNzUG9vbCYpOwogICAgIH5TdG9yYWdlUHJvY2Vzc1Byb3h5KCk7CiAKICAgICB2b2lkIGZldGNo
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKQEAg
LTU3LDggKzU3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgotICAgIFN0b3Jh
Z2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5
KFdlYlByb2Nlc3NQb29sJik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3NQcm94eQogICAgIHZvaWQg
Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSBvdmVycmlk
ZTsKQEAgLTc5LDExICs4MywxNSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKKyAgICBib29sIG1fd2FpdGluZ09uV29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGll
bnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgV2ViUHJvY2Vzc1Bvb2wqIG1f
cHJvY2Vzc1Bvb2w7CisgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7CiAKICAgICB1
bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMmE3OGE2YjFjNzEuLmI5ZmNkMTk5NzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMCw0ICszMCw4IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lP
TlMpCiAgICAgR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVz
dElELCBWZWN0b3I8U3RyaW5nPiBwYXRocykKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpCisjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA0YjQw
ZGVmZjU2Yi4uMDI1NDg4YjQ2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1
cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcgog
ICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gU3RvcmFnZVBy
b2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgbV9zdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0
b3JlKHBhcmFtZXRlcnMpLCAwKTsKICAgICB9CiAKQEAgLTU3NCw2ICs1NzQsMjkgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkq
IHN0b3JhZ2VQcm9jZXNzUHIKICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gbnVsbHB0cjsKIH0KIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihTdG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94eSkKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9zdG9yYWdlUHJvY2Vzcyk7Cisg
ICAgCisgICAgaWYgKCFtX3dvcmtlckNvbnRleHRQcm9jZXNzKSB7CisgICAgICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgIGF1dG8m
IG5ld1Byb2Nlc3MgPSBjcmVhdGVOZXdXZWJQcm9jZXNzKG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2VzcyA9ICZuZXdQ
cm9jZXNzOworICAgIH0KKyAgICAKKyAgICBtX3dvcmtlckNvbnRleHRQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpLCAwKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbikKK3sKKyAgICBpZiAoIW1fc3Rv
cmFnZVByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0b3JhZ2VQcm9jZXNzLT5kaWRH
ZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbik7Cit9CisjZW5kaWYK
Kwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKQog
ewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBhbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTg4
Miw2ICs5MDUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb3Rl
Y3QocHJvY2Vzcyk7CiAgICAgaWYgKG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykK
ICAgICAgICAgbV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9IG51bGxwdHI7CisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIGlmIChtX3dvcmtlckNvbnRleHRQcm9jZXNzID09IHByb2Nlc3Mp
CisgICAgICAgIG1fd29ya2VyQ29udGV4dFByb2Nlc3MgPSBudWxscHRyOworI2VuZGlmCiAKICAg
ICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJvY2Vzcyk7CiAKQEAgLTk2
MCw2ICs5ODcsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIH0gZWxzZQogICAgICAg
ICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGlt
aXQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKIAorICAgIEFTU0VSVChwcm9jZXNzLmdldCgpICE9IG1fd29ya2VyQ29udGV4dFByb2Nl
c3MpOworCiAgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCA3YzdhOGVjOTFlZi4uMTAxN2VjYjc1MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzE5LDYgKzMxOSw5IEBAIHB1Ymxp
YzoKICAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2VzcygpIHsgcmV0dXJuIG1f
c3RvcmFnZVByb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgc3RvcmFnZVByb2Nlc3NDcmFzaGVk
KFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAg
dm9pZCBnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oU3RvcmFnZVByb2Nlc3NQcm94
eSYpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQoKSBjb25zdDsKQEAgLTQxMiw2ICs0MTUsMTAgQEAgcHVibGljOgogICAg
IHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcihGdW5j
dGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0
ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTQ3Nyw2
ICs0ODQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3M7
CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGU7CisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlByb2Nlc3NQcm94eSogbV93b3JrZXJDb250ZXh0
UHJvY2VzcyB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIFJlZjxXZWJQYWdlR3Jv
dXA+IG1fZGVmYXVsdFBhZ2VHcm91cDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggZDcxZDcxODg1ZTAuLmJjNzk3YzdjOGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEyMTcsNCArMTIxNywx
MSBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1QYXRo
c1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCit7CisgICAgbV9wcm9jZXNz
UG9vbC0+ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjIyZTQ3ZjlkNC4uNDI1NjRmOTMzZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xODEsNiArMTgxLDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNVbmRlck1lbW9yeVByZXNzdXJlOyB9CiAgICAgdm9pZCBkaWRFeGNlZWRJbmFjdGl2
ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNo
bWVudCYgY29ubmVjdGlvbik7CisjZW5kaWYKKwogICAgIHZvaWQgcHJvY2Vzc1Rlcm1pbmF0ZWQo
KTsKIAogICAgIHZvaWQgZGlkRXhjZWVkQ1BVTGltaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhZDY5YzUyZjQw
MC4uMTkxYmU0YTIzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTU0LDQgKzU0LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIE1lbW9yeVByZXNzdXJlU3RhdHVz
Q2hhbmdlZChib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSkKICAgICBEaWRFeGNlZWRJbmFjdGl2
ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIERpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggYzg4YzhmNjY0ODcuLjJmMmZhY2RkMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpAQCAtMTA1LDYgKzEw
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgpAQCAt
MTYxNCw0ICsxNjE2LDQ0IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJU
Q05ldHdvcmsoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lk
IFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQo
IW1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24pOworCisjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihzb2NrZXRQYWlyLnNlcnZlcik7Cisg
ICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KHNvY2tldFBhaXIuY2xpZW50
KTsKKyNlbGlmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OworICAg
IGlmIChtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hU
X1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIENSQVNI
KCk7CisKKyAgICBpZiAobWFjaF9wb3J0X2luc2VydF9yaWdodChtYWNoX3Rhc2tfc2VsZigpLCBs
aXN0ZW5pbmdQb3J0LCBsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkgIT0g
S0VSTl9TVUNDRVNTKQorICAgICAgICBDUkFTSCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpOworICAgIElQQzo6
QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19U
WVBFX01PVkVfU0VORCk7CisjZWxzZQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisjZW5kaWYKKworICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsK
KyAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb25D
bGllbnRQb3J0KSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRTZXJ2aWNlV29ya2Vy
Q29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBIZXJlIGlzIHdoZXJl
IHdlIHdpbGwgYWN0dWFsbHkgc3RhcnQgdGhlIHNjcmlwdC4KKyAgICAvLyBGb3Igbm93IHdlIGJv
dW5jZSBiYWNrIGEgZmFpbHVyZSBtZXNzYWdlIHRvIHRoZSByZXF1ZXN0aW5nIHByb2Nlc3MgZm9y
IHRlc3QgY292ZXJhZ2UuCisKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQg
dG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCAiLCBTdHJpbmc6Om51bWJl
cihkYXRhLnNjcmlwdC5sZW5ndGgoKSkpOworICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxl
ZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5
LCBkYXRhLndvcmtlcklELCBtZXNzYWdlKSwgMCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDczOWE4
NTdkZGIxLi41YzJlNmM3NmRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC03MSw2ICs3MSwxMCBAQCBjbGFzcyBVc2VyR2VzdHVyZVRva2VuOwogc3RydWN0IFBsdWdp
bkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IFNvdXBOZXR3b3JrUHJv
eHlTZXR0aW5nczsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3N0cnVjdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
OTAsMTAgKzI5NCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChjb25z
dCBHYW1lcGFkRGF0YSYpOwogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBp
bmRleCk7CiAjZW5kaWYKLQogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0TmV0d29ya1Byb3h5
U2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzJik7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbigpOworICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJik7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250
ZXh0Q29ubmVjdGlvbjsKKyNlbmRpZgogCiAgICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMDhmNjk3MTM3MDUuLjIyMDYzNjAxZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDQgKzExMyw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFVTRShTT1VQKQogICAgIFNldE5l
dHdvcmtQcm94eVNldHRpbmdzKHN0cnVjdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGlu
Z3Mgc2V0dGluZ3MpCiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBH
ZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisgICAgU3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4
dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKKyNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323392</attachid>
            <date>2017-10-10 23:32:13 -0700</date>
            <delta_ts>2017-10-11 09:46:28 -0700</delta_ts>
            <desc>PFR</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>56659</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MGU4NWE1OWRjNy4uYTJiYzUzYTgxOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0xMC0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGEgU1cgY29udGV4dCBwcm9jZXNzICh3aGVyZSBTVyBzY3JpcHRzIHdpbGwgYWN0dWFsbHkg
ZXhlY3V0ZSkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzgxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4Y2VwdGlvbnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9yZWdpc3RyYXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0ZWQudHh0Ogor
CiAyMDE3LTEwLTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEVuYWJsZSBjdXN0b20gcGFzdGVib2FyZCBkYXRhIGluIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJL
aXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4Y2VwdGlvbnMt
ZXhwZWN0ZWQudHh0CmluZGV4IDM0ZjY0OTZkZTcxLi44N2M1ZmIyODAyNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhj
ZXB0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKQEAgLTQsNyAr
NCw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRo
IGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTA6
IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBzZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlwdCBVUkwgd2hvc2UgcGF0aCBk
b2VzIG5vdCBjb250YWluICclMmYnIG9yICclNWMnCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6
IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBTY29wZSBVUkwgcHJv
dmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgZWl0aGVyIEhUVFAgb3Ig
SFRUUFMKIENPTlNPTEUgTUVTU0FHRTogbGluZSA3MDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRo
IGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCkgY2Fubm90IGhhdmUgYSBwYXRoIHRoYXQgY29udGFpbnMgJyUyZicgb3IgJyU1YycK
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9y
OiBVbmtub3duRXJyb3I6IFNjcmlwdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dvcmtlcnMv
c2VydmljZS9pbWFnZS1taW1lLXR5cGUucGhwIGZldGNoZWQgd2l0aCAwIGNoYXJhY3RlcnMsIGJ1
dCB3ZSdyZSBub3QgdXNpbmcgdGhlIHJlc3VsdCB5ZXQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
MDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0
byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDAKIENPTlNPTEUgTUVTU0FH
RTogbGluZSA4MDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBTZWN1cml0eUVycm9y
OiBTY3JpcHQgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGllbnQncyBv
cmlnaW4KIENPTlNPTEUgTUVTU0FHRTogbGluZSA5MTogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRo
IGVycm9yOiBTZWN1cml0eUVycm9yOiBTY29wZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJl
Z2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3Rl
ZC50eHQKaW5kZXggNDk0MDc3ODRhYmYuLjUxMzNiYjJmY2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVn
aXN0ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogU2NyaXB0
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9lbXB0
eS13b3JrZXIuanMgZmV0Y2hlZCB3aXRoIDQxIGNoYXJhY3RlcnMsIGJ1dCB3ZSdyZSBub3QgdXNp
bmcgdGhlIHJlc3VsdCB5ZXQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IFNjcmlwdCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvZW1wdHktd29ya2VyLWRvZXNudC1l
eGlzdC5qcyBmZXRjaGVkIHdpdGggMCBjaGFyYWN0ZXJzLCBidXQgd2UncmUgbm90IHVzaW5nIHRo
ZSByZXN1bHQgeWV0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IFJlZ2lzdHJhdGlvbiBmYWls
ZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3Jr
ZXIgc2NyaXB0IG9mIGxlbmd0aCA0MQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBSZWdpc3Ry
YXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogRmFpbGVkIHRvIHN0YXJ0IHNl
cnZpY2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdGFzay1xdWV1ZS1zY2hl
ZHVsaW5nLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4dApp
bmRleCBmOTE0ZjUwMDFkMi4uYzFhMDYzNTA2MzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxp
bmctMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4dApA
QCAtMSwyICsxLDIgQEAKLUFMRVJUOiBEb25lCitBTEVSVDogVW5leHBlY3RlZCBlcnJvciByZWNl
aXZlZCBmcm9tIHNlcnZlcjogVW5rbm93bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3
b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCA0MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDcxMjYwMGU4NTAuLmM5
MWJkZDExMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMTAtMTAgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFNXIGNvbnRleHQg
cHJvY2VzcyAod2hlcmUgU1cgc2NyaXB0cyB3aWxsIGFjdHVhbGx5IGV4ZWN1dGUpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU2CisgICAgICAg
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKENvdmVyZWQgYnkgY2hhbmdlcyB0byBleGlzdGluZyB0ZXN0cykuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGFuIGF1eGlsaWFyeSAiU2VydmljZVdvcmtlciBjb250ZXh0IiBXZWJQ
cm9jZXNzIHRvIGEgV2ViUHJvY2Vzc1Bvb2wuCisKKyAgICAgICAgVGhpcyBwcm9jZXNzIGlzIHdo
ZXJlIFNlcnZpY2VXb3JrZXIgc2NyaXB0cyB3aWxsIGV4ZWN1dGUsIHNlcGFyYXRlIGZyb20gdGhl
IGNsaWVudCBXZWJQcm9jZXNzCisgICAgICAgIGhvc3RpbmcgdGhlIHBhZ2UocykgdGhleSBhcmUg
c2VydmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhbGwgb2YgdGhlIHBsdW1i
aW5nIHRvIHBhc3MgYWxvbmcgYSBmZXRjaGVkIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB0byB0aGlz
CisgICAgICAgIGNvbnRleHQgV2ViUHJvY2VzcywgYXMgd2VsbCBhcyBtZXNzYWdlIGJhY2sgZmFp
bHVyZSB0byBhY3R1YWxseSBzdGFydCB0aGUgc2NyaXB0IHNvIHdlIGNhbiB0ZXN0LgorCisgICAg
ICAgIFRvdWNoZXMgbG90cyBvZiBjb2RlIHNpdGVzIGJ1dCBpcyBiYXNpY2FsbHkganVzdCBhIGxv
dCBvZiBwbHVtYmluZy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpkZWNvZGUpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNo
RmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29u
bmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjpjcmVhdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
cmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldv
cmtlcjo6flNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHRVUkwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6d29ya2VySUQgY29uc3QpOgorCiAyMDE3LTEwLTEwICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBjdXN0b20gcGFz
dGVib2FyZCBkYXRhIGluIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGU5MmE4OWY3NmYuLmFmNmQ1ZmYxYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDY0LDYgKzI0NjQsNyBAQAogCQk1MUM2
MUIwQjFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM2MUIwOTFERTUz
NkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDODFCODkwQzQ0MjJGNzAw
MTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4MUI4NzBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGly
ZWN0b3J5UGFyc2VyLmNwcCAqLzsgfTsKIAkJNTFDODFCOEEwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZU
UERpcmVjdG9yeVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFDODFCODgwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5o
ICovOyB9OworCQk1MUNBN0VFOTFGODgzMzkwMDAzRDMxMzEgLyogU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUNBN0VFNzFGODgzMkUwMDAzRDMxMzEgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDQkZDOTkw
RDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNCRkM5ODBEMTBFNDgzMDAyREJG
NTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQxMjQ4QjFFNzM2MjdGMDAyQjI4MjAgLyogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTUxRDEyNDhEMUU3MzY0QUEwMDJCMjgyMCAvKiBD
b29raWVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDEyNDhDMUU3MzY0NTYwMDJCMjgyMCAvKiBDb29raWVDb2NvYS5tbSAqLzsgfTsKQEAg
LTEwMzYzLDYgKzEwMzY0LDcgQEAKIAkJNTFDNjFCMDkxREU1MzZFNzAwOEEyMTJEIC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFDODFCODcwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRlRQRGlyZWN0b3J5UGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDODFCODgwQzQ0MjJGNzAwMTlF
Q0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRlRQRGlyZWN0b3J5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUQxMjQ4QTFFNzM2MjVDMDAyQjI4MjAgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFE
MTI0OEMxRTczNjQ1NjAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTIxMiw2ICsxOTIxNCw3IEBACiAJCQkJNTFGMTc1NTgxRjNFQkMwQzAw
Qzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwICovLAogCQkJCTUxRjE3NTU3MUYz
RUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi8sCiAJCQkJNTFGMTc1
NTYxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaWRsICovLAorCQkJ
CTUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCAq
LywKIAkJCQk1MTdBNTM1QzFGNTg5OUYyMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckZldGNoUmVz
dWx0LmggKi8sCiAJCQkJNTFGMTc1NTUxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNTFGMTc1NTQxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oICovLApAQCAtMjczNjQsNiArMjczNjcsNyBAQAogCQkJCTJF
QjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzVFQjVFMTBFODFCRTg3MDBCMjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTFDQTdFRTkxRjg4MzM5MDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAz
IC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNURCMEU4MUI3RUEwMEIy
NTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVEOEMzN0ExODNCRkY4
QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2M2MzllNzg1MDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgeworICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
cmVnaXN0cmF0aW9uS2V5OworICAgIFN0cmluZyB3b3JrZXJJRDsKKyAgICBTdHJpbmcgc2NyaXB0
OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9u
S2V5IDw8IHdvcmtlcklEIDw8IHNjcmlwdDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcmVnaXN0cmF0
aW9uS2V5ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZGVjb2RlKGRlY29kZXIpOwor
ICAgIGlmICghcmVnaXN0cmF0aW9uS2V5KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgU3RyaW5nIHdvcmtlcklEOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUod29ya2VySUQp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU3RyaW5nIHNjcmlwdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1v
dmUod29ya2VySUQpLCBXVEZNb3ZlKHNjcmlwdCkgfX07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggNmY4MWFi
MjY5MTEuLjA1NTkwMGM2MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzIsOCArMzIsMTEgQEAKICNpbmNsdWRlICJF
eGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNXU2VydmVy
UmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc1LDcgKzc4LDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNj
aGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhCiAKIHZv
aWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgbV9zZXJ2ZXIuc2Ny
aXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOworICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNo
ZWQoKnRoaXMsIHJlc3VsdCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0aGlz
LCByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNzYWdlKTsKIH0KIAogU1dTZXJ2ZXI6OlNX
U2VydmVyKCkKQEAgLTEyOCw3ICsxMzYsNyBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZl
dGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogICAgIGNvbm5lY3Rpb24t
PnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JiByZXN1bHQpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0
KQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNo
RmluaXNoZWQgZm9yIGN1cnJlbnQgam9iICUiIFBSSXU2NCAiLSUiIFBSSXU2NCAiIGluIGNsaWVu
dCIsIHJlc3VsdC5jb25uZWN0aW9uSWRlbnRpZmllciwgcmVzdWx0LmpvYklkZW50aWZpZXIpOwog
CkBAIC0xMzgsNyArMTQ2LDI3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQo
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiAgICAgaWYgKCFyZWdpc3Ry
YXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhdGlvbi0+c2NyaXB0RmV0Y2hG
aW5pc2hlZChyZXN1bHQpOworICAgIHJlZ2lzdHJhdGlvbi0+c2NyaXB0RmV0Y2hGaW5pc2hlZChj
b25uZWN0aW9uLCByZXN1bHQpOworfQorCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlu
cyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOworICAgIAorICAgIGlmIChhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCisgICAgICAgIHJl
Z2lzdHJhdGlvbi0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlvbiwgd29ya2Vy
SUQsIG1lc3NhZ2UpOworfQorCitSZWY8U1dTZXJ2ZXJXb3JrZXI+IFNXU2VydmVyOjpjcmVhdGVX
b3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKK3sKKyAgICBTdHJpbmcgd29ya2VySUQgPSBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgCisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNC
eUlELmFkZCh3b3JrZXJJRCwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25LZXks
IHVybCwgc2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7CisgICAgCisgICAgY29ubmVjdGlvbi5zdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHsg
cmVnaXN0cmF0aW9uS2V5LCB3b3JrZXJJRCwgc2NyaXB0IH0pOworICAgIAorICAgIHJldHVybiBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCiB2b2lkIFNXU2VydmVyOjp0YXNrVGhy
ZWFkRW50cnlQb2ludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKaW5kZXggYTFmYzVkMzM5ODkuLjNhYWZiODBmN2VkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJTV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkUXVldWUuaD4KQEAgLTQyLDcgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb247CitjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVj
dCBFeGNlcHRpb25EYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGE7CiAKQEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Q29ubmVjdGlvbigpOwogCisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIENv
bm5lY3Rpb24oU1dTZXJ2ZXImLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICAgICAgU1dTZXJ2
ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CkBAIC02MSwxMCArNjQsMTQgQEAgcHVi
bGljOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICAvLyBNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0
IEV4Y2VwdGlvbkRhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlSm9iSW5D
bGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5D
bGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllcikgPSAwOwogCisgICAgICAgIC8vIE1lc3NhZ2Vz
IHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJikgPSAwOwor
CiAgICAgICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKICAgICB9OwogCkBAIC03OSw2ICs4Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lk
IHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCisgICAgUmVmPFNXU2VydmVyV29y
a2VyPiBjcmVhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSk7
CisgICAgCiBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24m
KTsKICAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mKTsKQEAgLTg2LDEx
ICs5NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdGFza1RocmVhZEVudHJ5UG9pbnQoKTsKICAg
ICB2b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CiAKLSAgICB2b2lkIHNjcmlw
dEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9p
ZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3
b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IENvbm5lY3Rpb24qPiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9y
ZWdpc3RyYXRpb25zOwogCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxTV1NlcnZlcldvcmtlcj4+
IG1fd29ya2Vyc0J5SUQ7CisKICAgICBSZWZQdHI8VGhyZWFkPiBtX3Rhc2tUaHJlYWQ7CiAgICAg
TG9jayBtX3Rhc2tUaHJlYWRMb2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4
IGQ1MTFkZGRkZmQ1Li4xMGRlYjk2ZTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
QEAgLTY0LDE4ICs2NCwzMiBAQCB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjplbnF1ZXVlSm9i
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogICAgICAgICBtX2pvYlRpbWVy
LnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3Jp
cHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQor
dm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiBy
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50
aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CiAKLSAgICAvLyBGSVhNRTogV2UgZmV0
Y2hlZCB0aGUgc2NyaXB0IGNvbnRlbnRzIGJ1dCBkb24ndCBkbyBhbnl0aGluZyB3aXRoIHRoZW0g
eWV0LgotICAgIC8vIFRoZXNlIGVycm9ycyBhcmUgZm9yIHRlc3RpbmcgdGhlIGN1cnJlbnQgc3Rh
dGUgb2YgdGhlIGZlYXR1cmUuCisgICAgaWYgKCFyZXN1bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkp
IHsKKyAgICAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9y
LCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmlu
ZygpLCAiIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSkgfSk7CisgICAgICAgIAorICAgICAgICAvLyBJZiBuZXdlc3RX
b3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lzdHJhdGlvbiBhbGdvcml0aG0gcGFzc2lu
ZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1lbnQuCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBoYXZlICJjbGVhciByZWdpc3RyYXRpb24iIHlldC4KIAotICAgIFN0cmluZyBtZXNz
YWdlOwotICAgIGlmIChyZXN1bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0
cmluZygpLCAiIGZldGNoZWQgd2l0aCAiLCBTdHJpbmc6Om51bWJlcihyZXN1bHQuc2NyaXB0Lmxl
bmd0aCgpKSwgIiBjaGFyYWN0ZXJzLCBidXQgd2UncmUgbm90IHVzaW5nIHRoZSByZXN1bHQgeWV0
Iik7Ci0gICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gbWFrZVN0cmluZygiU2NyaXB0IFVSTCAi
LCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVSTC5zdHJpbmcoKSwgIiBmZXRjaCByZXN1bHRlZCBpbiBl
cnJvcjogIiwgcmVzdWx0LnNjcmlwdEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXN0VXBkYXRlVGltZSA9IGN1cnJlbnRUaW1l
KCk7CisgICAgCisgICAgLy8gRklYTUU6IElmIHRoZSBzY3JpcHQgZGF0YSBtYXRjaGVzIGJ5dGUt
Zm9yLWJ5dGUgd2l0aCB0aGUgZXhpc3RpbmcgbmV3ZXN0V29ya2VyLAorICAgIC8vIHRoZW4gcmVz
b2x2ZSBhbmQgZmluaXNoIHRoZSBqb2Igd2l0aG91dCBkb2luZyBhbnl0aGluZyBmdXJ0aGVyLgor
CisgICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xhc3NpYyB2
cyBtb2R1bGUpCisgICAgYXV0byB3b3JrZXIgPSBtX3NlcnZlci5jcmVhdGVXb3JrZXIoY29ubmVj
dGlvbiwgbV9yZWdpc3RyYXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQu
c2NyaXB0LCBXb3JrZXJUeXBlOjpDbGFzc2ljKTsKK30KKwordm9pZCBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fY3VycmVudEpvYik7CisgICAgVU5VU0VEX1BBUkFNKHdvcmtlcklEKTsKIAogICAgIHJl
amVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWVzc2FnZSB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCBmNzY4NTQ2M2RlNy4uNjI2N2U5YzU4NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC00Nyw4ICs0OCw5IEBAIHB1YmxpYzoKICAg
ICB+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAogICAgIHZvaWQgZW5xdWV1ZUpvYihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYpOwotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKLQorICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5p
c2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
ICAgIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKIAog
cHJpdmF0ZToKQEAgLTc3LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1dTZXJ2ZXJXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwogICAgIFVSTCBtX3Njb3BlVVJMOwogICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlPiBtX3VwZGF0ZVZpYUNh
Y2hlOworICAgIAorICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1lIHsgMC4wIH07CiAKICAgICBU
aW1lciBtX2pvYlRpbWVyOwogICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggNGE3ZmRjZDA2YzIuLjJhNjZmM2UwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjgs
MTkgKzI4LDE5IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNXU2VydmVyV29ya2Vy
OjpTV1NlcnZlcldvcmtlcihjb25zdCBVUkwmIHVybCkKLSAgICA6IG1fc2NyaXB0VVJMKHVybCkK
K1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQorICAgIDog
bV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uS2V5KQorICAgICwgbV9zY3JpcHRVUkwodXJs
KQorICAgICwgbV9zY3JpcHQoc2NyaXB0KQorICAgICwgbV93b3JrZXJJRCh3b3JrZXJJRCkKKyAg
ICAsIG1fdHlwZSh0eXBlKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogfQogCiBT
V1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDEy
ZGMzNTczZmNlLi4xM2UzYTI5NDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMjcsMTkgKzI3LDM3IEBA
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1dTZXJ2
ZXJXb3JrZXIgeworZW51bSBjbGFzcyBXb3JrZXJUeXBlOworCitjbGFzcyBTV1NlcnZlcldvcmtl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGlj
OgotICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8U1dTZXJ2
ZXJXb3JrZXI+IGNyZWF0ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2Vy
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1dTZXJ2ZXJXb3JrZXIocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlw
dCwgdHlwZSwgd29ya2VySUQpKTsKKyAgICB9CisgICAgCiAgICAgU1dTZXJ2ZXJXb3JrZXIoY29u
c3QgU1dTZXJ2ZXJXb3JrZXImKSA9IGRlbGV0ZTsKICAgICB+U1dTZXJ2ZXJXb3JrZXIoKTsKLSAg
ICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAK
KyAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9
CisgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQor
ICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0
IFN0cmluZyYgd29ya2VySUQoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlcklEOyB9CisgICAgCiBw
cml2YXRlOgorICAgIFNXU2VydmVyV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwgY29u
c3QgU3RyaW5nJiB3b3JrZXJJRCk7CisKKyAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFVSTCBtX3NjcmlwdFVSTDsKKyAgICBTdHJpbmcgbV9z
Y3JpcHQ7CisgICAgU3RyaW5nIG1fd29ya2VySUQ7CisgICAgV29ya2VyVHlwZSBtX3R5cGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmNWIyOTE5NmFmLi5jYWMz
ZmUwNzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNy0xMC0xMCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgU1cgY29udGV4dCBwcm9j
ZXNzICh3aGVyZSBTVyBzY3JpcHRzIHdpbGwgYWN0dWFsbHkgZXhlY3V0ZSkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYW4g
YXV4aWxpYXJ5ICJTZXJ2aWNlV29ya2VyIGNvbnRleHQiIFdlYlByb2Nlc3MgdG8gYSBXZWJQcm9j
ZXNzUG9vbC4KKworICAgICAgICBUaGlzIHByb2Nlc3MgaXMgd2hlcmUgU2VydmljZVdvcmtlciBz
Y3JpcHRzIHdpbGwgZXhlY3V0ZSwgc2VwYXJhdGUgZnJvbSB0aGUgY2xpZW50IFdlYlByb2Nlc3MK
KyAgICAgICAgaG9zdGluZyB0aGUgcGFnZShzKSB0aGV5IGFyZSBzZXJ2aW5nLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGFsbCBvZiB0aGUgcGx1bWJpbmcgdG8gcGFzcyBhbG9uZyBh
IGZldGNoZWQgc2VydmljZSB3b3JrZXIgc2NyaXB0IHRvIHRoaXMKKyAgICAgICAgY29udGV4dCBX
ZWJQcm9jZXNzLCBhcyB3ZWxsIGFzIG1lc3NhZ2UgYmFjayBmYWlsdXJlIHRvIGFjdHVhbGx5IHN0
YXJ0IHRoZSBzY3JpcHQgc28gd2UgY2FuIHRlc3QuCisKKyAgICAgICAgVG91Y2hlcyBsb3RzIG9m
IGNvZGUgc2l0ZXMgYnV0IGlzIGJhc2ljYWxseSBqdXN0IGEgbG90IG9mIHBsdW1iaW5nLgorCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBTdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorCisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vz
czo6c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp+U3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp3b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6
OlN0b3JhZ2VQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6Omdl
dFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRHZXRX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpnZXRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0U2Vy
dmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0x
MCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgY3Vz
dG9tIHBhc3RlYm9hcmQgZGF0YSBpbiBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5l
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkOGU2YzI0NWY0
ZS4uNTQ5ODk2M2M3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC0zMiwxMiArMzIsMTUgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0Ns
aWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CkBAIC00OCw3ICs1MSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1
aW50NjRfdCBjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vzc2lvbklEJiBzZXNzaW9uSUQp
CiAgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlvbihzZXJ2ZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVy
KQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKGNvbm5l
Y3Rpb24pCisgICAgLCBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiB7CiB9CiAKQEAg
LTc2LDYgKzc5LDMzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZl
dGNoSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllcikKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OlN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoam9iSWRlbnRp
ZmllcikpOwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29y
a2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7CisgICAg
aWYgKHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGlkZW50aWZpZXIoKSwgZGF0YSkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuYXBwZW5kKGRhdGEpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nl
c3MoVSYmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbi0+c2VuZDxV
PihXVEZNb3ZlKG1lc3NhZ2UpLCAwKTsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnNldENvbnRleHRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAg
ICBtX2NvbnRleHRDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKworICAgIC8vIFdlIGNhbiBub3cg
c3RhcnQgYW55IHBlbmRpbmcgc2VydmljZSB3b3JrZXIgY29udGV4dHMuCisgICAgZm9yIChhdXRv
JiBwZW5kaW5nQ29udGV4dERhdGEgOiBtX3BlbmRpbmdDb250ZXh0RGF0YXMpCisgICAgICAgIHN0
YXJ0U2VydmljZVdvcmtlckNvbnRleHQocGVuZGluZ0NvbnRleHREYXRhKTsKKyAgICAKKyAgICBt
X3BlbmRpbmdDb250ZXh0RGF0YXMuY2xlYXIoKTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGIzY2U3NmM5NWU5Li5iMmJlMDQwNmY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDIwICs0
NiwyOSBAQCBwdWJsaWM6CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIHZvaWQgc2V0Q29udGV4
dENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAg
ICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24KKyAgICAvLyBJbXBsZW1lbnQgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAg
ICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVKb2JJbkNsaWVu
dCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KHVpbnQ2NF90IGpvYklkZW50aWZpZXIpIGZpbmFsOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5wdHIo
KTsgfQorICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKKyAgICB2
b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJikgZmluYWw7CisgICAgCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRy
KCk7IH0KICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsg
cmV0dXJuIGlkZW50aWZpZXIoKTsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBz
ZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CisgICAgCiAgICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CiAKLSAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWZQ
dHI8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRleHRDb25uZWN0aW9uOworICAgIAorICAgIERlcXVl
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFz
OwogfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNw
cAppbmRleCAzYjM2M2VjNWRkNC4uZTEwODA5Yzk4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSURCS2V5RGF0YS5oPgpAQCAtMzI5LDYgKzMzMCw2MyBAQCBTV1NlcnZlciYgU3RvcmFnZVBy
b2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
QVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKIH0KKworSVBDOjpDb25uZWN0aW9uKiBTdG9yYWdlUHJvY2Vzczo6d29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV93b3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0
ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fd2FpdGluZ0Zv
cldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7Cisg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3NQcm94eTo6R2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCksIDApOworfQorCit2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgSVBDOjpBdHRhY2htZW50JiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpCit7Cisg
ICAgQVNTRVJUKG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Cisg
ICAgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gZmFsc2U7CisK
KyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCkpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorCisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0
aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJTdG9yYWdlUHJvY2Vzczo6ZGlk
R2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIC0gUmVjZWl2ZWQgbnVsbCBjb25uZWN0
aW9uIGlkZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fd29ya2Vy
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRD
b25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CisgICAgbV93b3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24tPm9wZW4oKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIGNvbm5l
Y3Rpb24gOiBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVj
dGlvbi0+d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOworfQorCit2b2lk
IFN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZl
ckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNv
bm5lY3Rpb24tPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KHJlZ2lzdHJhdGlvbktleSwgd29y
a2VySUQsIG1lc3NhZ2UpOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNXU2Vy
dmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAg
QVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlm
aWVyKCkpKTsKKyAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpLCAmY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0
ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIEFTU0VSVChtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSA9PSAmY29ubmVjdGlvbik7CisgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92
ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7Cit9CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApp
bmRleCBmNDA4MzM0MmFjNC4uY2E0MTU1MzZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTM3LDExICszNywxMyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU1dTZXJ2ZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwor
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFN0
b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCkBAIC02NywxMiArNjksMTkgQEAgcHVi
bGljOgogICAgIHZvaWQgYWNjZXNzVG9UZW1wb3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5n
JiBwYXRoKSBmaW5hbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IElQQzo6Q29ubmVjdGlvbiogd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAg
dm9pZCBjcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKICAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNp
b25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIFdURjo6RnVu
Y3Rpb248dm9pZCAoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2Vi
Q29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CisgICAg
dm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEwMSw3ICsxMTAsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9icyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGF0aHMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Jik7CiAgICAg
dm9pZCBkaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50NjRfdCByZXF1ZXN0
SUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogI2VuZGlmCi0KKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIpOworICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29u
c3QgU3RyaW5nJiBwYXRoKTsKICNlbmRpZgpAQCAtMTI1LDcgKzEzNywxMiBAQCBwcml2YXRlOgog
ICAgIExvY2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKKworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uOworICAgIGJvb2wgbV93YWl0aW5nRm9yV29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6
U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVy
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTV1NlcnZlckNvbm5lY3Rpb24qPiBtX3N3U2Vy
dmVyQ29ubmVjdGlvbnM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGM5ZGVhZGYy
N2M4Li4xODAyZjBkNGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw0ICszNCw5IEBAIG1lc3Nh
Z2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHcmFudFNhbmRib3hF
eHRlbnNpb25zRm9yQmxvYnMoVmVjdG9yPFN0cmluZz4gcGF0aHMsIFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9ucykKICAgICBEaWRHZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9ucykKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIERpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZh
aWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3Ry
aW5nIHdvcmtlcklELCBTdHJpbmcgbWVzc2FnZSkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCAyN2JhZDFjZDIyZC4uNDU0NWJjNGEyNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC01NSw2ICs1NSwxMSBAQCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbjo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJ
ZAogU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246On5TdG9yYWdlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbigpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9zd0Nvbm5l
Y3Rpb25zLnZhbHVlcygpKQorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkudW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbigqY29ubmVjdGlvbik7CisjZW5kaWYKIH0KIAogdm9p
ZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0xMzgsNyAr
MTQzLDE1IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFibGlzaFNX
U2VydmVyQ29ubmVjdGlvbihTZXNzaW9uSUQgc2Vzc2lvCiAgICAgQVNTRVJUKCFtX3N3Q29ubmVj
dGlvbnMuY29udGFpbnMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKIAogICAgIGF1dG8m
IHNlcnZlciA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5zd1NlcnZlckZvclNlc3Npb24o
c2Vzc2lvbklEKTsKLSAgICBtX3N3Q29ubmVjdGlvbnMuc2V0KHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4oc2VydmVyLCBt
X2Nvbm5lY3Rpb24uZ2V0KCksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9uSUQp
KTsKKyAgICBhdXRvIGNvbm5lY3Rpb25SZXN1bHQgPSBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVj
dGlvbj4oc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzZXNzaW9uSUQpKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvblJlc3VsdC5pc05ld0VudHJ5
KTsKKworICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbigqKGNvbm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CisKKyAgICBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvblJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPnNldENvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworICAgIGVsc2UKKyAg
ICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbigpOwogfQogCiB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
OjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCkBAIC0xNDYsOCArMTU5LDE4IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OnJlbW92ZVNXU2VydmVyQ29ubmVjdGlvbih1aW50NjRfdCBzZXJ2ZXJDb25uCiAgICAg
QVNTRVJUKG1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikpOwogCiAgICAgYXV0byBjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLnRha2Uoc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS51
bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKCpjb25uZWN0aW9uKTsKICAgICBjb25uZWN0aW9u
LT5kaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogfQorCit2b2lkIFN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKCkK
K3sKKyAgICBhdXRvKiBpcGNDb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigp
LndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIEFTU0VSVChpcGNDb25uZWN0
aW9uKTsKKworICAgIGZvciAoYXV0byYgc3dDb25uZWN0aW9uIDogbV9zd0Nvbm5lY3Rpb25zLnZh
bHVlcygpKQorICAgICAgICBzd0Nvbm5lY3Rpb24tPnNldENvbnRleHRDb25uZWN0aW9uKGlwY0Nv
bm5lY3Rpb24pOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAg
LTE2OSw1ICsxOTIsNCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpyZW1v
dmVJREJDb25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQwogfQogI2VuZGlmCiAKLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZWQ2NTgw
MmVkY2IuLjViOWNlOGFhNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00NCw2ICs0
NCwxMCBAQCBwdWJsaWM6CiAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJl
dHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICB2b2lkIHdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDU1Y2ZmZjUzNTZlLi43
NDJkYTVhYWQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgc3RhdGljIHVp
bnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCiAgICAgcmV0dXJuICsrY2FsbGJhY2tJRDsKIH0K
IAotUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCitSZWY8U3RvcmFnZVByb2Nlc3NQcm94eT4gU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29s
KSk7CiB9CiAKLVN0b3JhZ2VQcm9jZXNzUHJveHk6OlN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogQ2hpbGRQcm9jZXNzUHJveHkocHJvY2Vzc1Bv
b2wtPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQorU3RvcmFnZVByb2Nlc3NQcm94
eTo6U3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCisgICAg
OiBDaGlsZFByb2Nlc3NQcm94eShwcm9jZXNzUG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJp
b3JpdHkoKSkKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCiAgICAgLCBtX251bVBl
bmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgbV9wZW5k
aW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmNsZWFyKCk7CiAKICAgICAv
LyBUZWxsIFByb2Nlc3NQb29sIHRvIGZvcmdldCBhYm91dCB0aGlzIHN0b3JhZ2UgcHJvY2Vzcy4g
VGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLT5zdG9y
YWdlUHJvY2Vzc0NyYXNoZWQodGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC5zdG9yYWdlUHJvY2Vz
c0NyYXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQpAQCAt
MjIwLDQgKzIyMCwyMCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogICAgIG1fbnVtUGVuZGlu
Z0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Cit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbigpCit7CisgICAgQVNTRVJUKCFtX3dhaXRpbmdPbldvcmtlckNvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbik7CisgICAgbV93YWl0aW5nT25Xb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24g
PSB0cnVlOworICAgIAorICAgIG1fcHJvY2Vzc1Bvb2wuZ2V0V29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRHZXRX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25u
ZWN0aW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbiksIDApOworfQorCisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCmluZGV4IGMyZDJlYmE2MDkyLi5mYzkx
NzE5M2Q5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRh
OwogCiBjbGFzcyBTdG9yYWdlUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IGNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCopOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZVByb2Nlc3NQcm94eT4gY3Jl
YXRlKFdlYlByb2Nlc3NQb29sJik7CiAgICAgflN0b3JhZ2VQcm9jZXNzUHJveHkoKTsKIAogICAg
IHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFdURjo6RnVuY3Rpb248dm9pZChXZWJzaXRlRGF0YSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwpAQCAtNTcsOCArNTcsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pOworI2VuZGlmCisKIHByaXZhdGU6
Ci0gICAgU3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCopOworICAgIFN0b3JhZ2VQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKIAogICAgIC8vIENoaWxkUHJvY2Vzc1Byb3h5
CiAgICAgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYpIG92ZXJyaWRlOwpAQCAtNzksMTEgKzgzLDE1IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKICAgICB2b2lkIGdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZp
bGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICNl
bmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGdldFdvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGJvb2wgbV93YWl0aW5nT25Xb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OworI2VuZGlmCiAKICAgICAvLyBQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKLSAgICBXZWJQcm9j
ZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9v
bDsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKICAgICBE
ZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYTc4YTZiMWM3MS4uYjlmY2QxOTk3M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDQgKzMwLDggQEAgbWVzc2FnZXMg
LT4gU3RvcmFnZVByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNBTkRC
T1hfRVhURU5TSU9OUykKICAgICBHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50
NjRfdCByZXF1ZXN0SUQsIFZlY3RvcjxTdHJpbmc+IHBhdGhzKQogI2VuZGlmCisKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
KCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IDRiNDBkZWZmNTZiLi4wMjU0ODhiNDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlKiByCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fc3RvcmFnZVByb2Nlc3Mg
PSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fc3RvcmFnZVBy
b2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBtX3N0
b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdl
YnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwogICAgIH0KIApAQCAtNTc0LDYgKzU3NCwy
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVBy
b2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcgogICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBudWxs
cHRyOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKFN0b3JhZ2VQcm9jZXNzUHJveHkm
IHByb3h5KQoreworICAgIEFTU0VSVF9VTlVTRUQocHJveHksICZwcm94eSA9PSBtX3N0b3JhZ2VQ
cm9jZXNzKTsKKyAgICAKKyAgICBpZiAoIW1fd29ya2VyQ29udGV4dFByb2Nlc3MpIHsKKyAgICAg
ICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAg
ICAgICAgYXV0byYgbmV3UHJvY2VzcyA9IGNyZWF0ZU5ld1dlYlByb2Nlc3MobV93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzID0gJm5ld1Byb2Nlc3M7CisgICAgfQorICAgIAorICAgIG1fd29ya2VyQ29udGV4dFByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KCksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKQoreworICAg
IGlmICghbV9zdG9yYWdlUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RvcmFnZVBy
b2Nlc3MtPmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVC
cm93c2luZygpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29s
cygpKQpAQCAtODgyLDYgKzkwNSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9
PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fd29ya2VyQ29udGV4dFByb2Nlc3Mg
PT0gcHJvY2VzcykKKyAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2VzcyA9IG51bGxwdHI7Cisj
ZW5kaWYKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVu
dDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNz
KTsKIApAQCAtOTYwLDYgKzk4Nyw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgfSBl
bHNlCiAgICAgICAgIHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9j
ZXNzQ291bnRMaW1pdChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJz
aXRlRGF0YVN0b3JlKCkpOwogCisgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgIT0gbV93b3JrZXJD
b250ZXh0UHJvY2Vzcyk7CisKICAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdl
Q2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDdjN2E4ZWM5MWVmLi4xMDE3ZWNiNzUwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zMTksNiArMzE5
LDkgQEAgcHVibGljOgogICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzKCkg
eyByZXR1cm4gbV9zdG9yYWdlUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAgICAgdm9pZCBzdG9yYWdlUHJv
Y2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSopOworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyAgICB2b2lkIGdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihTdG9yYWdl
UHJvY2Vzc1Byb3h5Jik7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwpAQCAtNDEyLDYgKzQxNSwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHVpbnQ2NF90IHJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVhdGlvbkxp
c3RlbmVyKEZ1bmN0aW9uPHZvaWQoV2ViUHJvY2Vzc1Bvb2wmKT4mJik7CiAgICAgc3RhdGljIHZv
aWQgdW5yZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcih1aW50NjRfdCBpZGVudGlm
aWVyKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEdldFdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rp
b24pOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IApAQCAtNDc3LDYgKzQ4NCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXZlSW5pdGlhbEVt
cHR5UHJvY2VzczsKIAogICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3dv
cmtlckNvbnRleHRQcm9jZXNzIHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV93YWl0aW5nRm9yV29y
a2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgUmVm
PFdlYlBhZ2VHcm91cD4gbV9kZWZhdWx0UGFnZUdyb3VwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNzFkNzE4ODVlMC4uYmM3OTdjN2M4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIx
Nyw0ICsxMjE3LDExIEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCkKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEdldFdvcmtlckNv
bnRleHRDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbikKK3sKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29u
bmVjdGlvbik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDk2MjJlNDdmOWQ0Li40MjU2NGY5
MzNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE4
MSw2ICsxODEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmU7IH0KICAgICB2b2lkIGRpZEV4
Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpOwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29uc3Qg
SVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwcm9jZXNz
VGVybWluYXRlZCgpOwogCiAgICAgdm9pZCBkaWRFeGNlZWRDUFVMaW1pdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGFkNjljNTJmNDAwLi4xOTFiZTRhMjNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTQsNCArNTQsOCBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgTWVtb3J5UHJl
c3N1cmVTdGF0dXNDaGFuZ2VkKGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKQogICAgIERpZEV4
Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgRGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb24pCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBjODhjOGY2NjQ4Ny4uMmYyZmFjZGQyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5o
IgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCisjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBA
IC0xMDUsNiArMTA2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmg+CkBAIC0xNjE0LDQgKzE2MTYsNDQgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vz
czo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKK3ZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQorewor
ICAgIEFTU0VSVCghbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbik7CisKKyNpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFp
ciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKHNvY2tldFBhaXIu
c2VydmVyKTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQoc29ja2V0
UGFpci5jbGllbnQpOworI2VsaWYgT1MoREFSV0lOKQorICAgIG1hY2hfcG9ydF90IGxpc3Rlbmlu
Z1BvcnQ7CisgICAgaWYgKG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNI
X1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpICE9IEtFUk5fU1VDQ0VTUykKKyAg
ICAgICAgQ1JBU0goKTsKKworICAgIGlmIChtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0KG1hY2hfdGFz
a19zZWxmKCksIGxpc3RlbmluZ1BvcnQsIGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFL
RV9TRU5EKSAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIENSQVNIKCk7CisKKyAgICBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCk7
CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKKyNlbHNlCisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorCisgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmll
ciwgKnRoaXMpOworICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPm9wZW4oKTsKKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24o
Y29ubmVjdGlvbkNsaWVudFBvcnQpLCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpzdGFydFNl
cnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7CisgICAgLy8gRklYTUU6IEhl
cmUgaXMgd2hlcmUgd2Ugd2lsbCBhY3R1YWxseSBzdGFydCB0aGUgc2NyaXB0LgorICAgIC8vIEZv
ciBub3cgd2UgYm91bmNlIGJhY2sgYSBmYWlsdXJlIG1lc3NhZ2UgdG8gdGhlIHJlcXVlc3Rpbmcg
cHJvY2VzcyBmb3IgdGVzdCBjb3ZlcmFnZS4KKworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkZhaWxlZCB0byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoICIsIFN0
cmluZzo6bnVtYmVyKGRhdGEuc2NyaXB0Lmxlbmd0aCgpKSk7CisgICAgbV93b3JrZXJDb250ZXh0
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RmFpbGVkVG9TdGFydChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdp
c3RyYXRpb25LZXksIGRhdGEud29ya2VySUQsIG1lc3NhZ2UpLCAwKTsKK30KKworI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggNzM5YTg1N2RkYjEuLjVjMmU2Yzc2ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTcxLDYgKzcxLDEwIEBAIGNsYXNzIFVzZXJHZXN0dXJlVG9rZW47CiBz
dHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU291
cE5ldHdvcmtQcm94eVNldHRpbmdzOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTI5MCwxMCArMjk0LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkQ29u
bmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJik7CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVk
KHVuc2lnbmVkIGluZGV4KTsKICNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRO
ZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGlu
Z3MmKTsKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGdldFdv
cmtlckNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBt
X3dvcmtlckNvbnRleHRDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VQYWdl
Q2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAwOGY2OTcxMzcwNS4uMjIwNjM2MDFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTMsNCArMTEzLDkg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgVVNFKFNPVVAp
CiAgICAgU2V0TmV0d29ya1Byb3h5U2V0dGluZ3Moc3RydWN0IFdlYkNvcmU6OlNvdXBOZXR3b3Jr
UHJveHlTZXR0aW5ncyBzZXR0aW5ncykKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorICAgIEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKKyAgICBTdGFydFNlcnZpY2VX
b3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQorI2VuZGlmCiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323423</attachid>
            <date>2017-10-11 09:45:55 -0700</date>
            <delta_ts>2017-10-11 10:27:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178156-20171011094555.patch</filename>
            <type>text/plain</type>
            <size>58575</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDcxMjYwMGU4NTA2NDkz
ZjU4ZWJhODAzMzgwOWI1NWQ4Yzk4ZTEwYi4uNTk4NTMwYzhmNGQzYmFkMzJmYzVmMzJlMTk3ZWRm
MGY0ZDY5Yjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTEwLTEwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBTVyBjb250ZXh0
IHByb2Nlc3MgKHdoZXJlIFNXIHNjcmlwdHMgd2lsbCBhY3R1YWxseSBleGVjdXRlKS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE1NgorICAgICAg
ICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKENvdmVyZWQgYnkgY2hhbmdlcyB0byBleGlzdGluZyB0ZXN0cykuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGFuIGF1eGlsaWFyeSAiU2VydmljZVdvcmtlciBjb250ZXh0IiBXZWJQcm9j
ZXNzIHRvIGEgV2ViUHJvY2Vzc1Bvb2wuCisKKyAgICAgICAgVGhpcyBwcm9jZXNzIGlzIHdoZXJl
IFNlcnZpY2VXb3JrZXIgc2NyaXB0cyB3aWxsIGV4ZWN1dGUsIHNlcGFyYXRlIGZyb20gdGhlIGNs
aWVudCBXZWJQcm9jZXNzCisgICAgICAgIGhvc3RpbmcgdGhlIHBhZ2UocykgdGhleSBhcmUgc2Vy
dmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhbGwgb2YgdGhlIHBsdW1iaW5n
IHRvIHBhc3MgYWxvbmcgYSBmZXRjaGVkIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB0byB0aGlzCisg
ICAgICAgIGNvbnRleHQgV2ViUHJvY2VzcywgYXMgd2VsbCBhcyBtZXNzYWdlIGJhY2sgZmFpbHVy
ZSB0byBhY3R1YWxseSBzdGFydCB0aGUgc2NyaXB0IHNvIHdlIGNhbiB0ZXN0LgorCisgICAgICAg
IFRvdWNoZXMgbG90cyBvZiBjb2RlIHNpdGVzIGJ1dCBpcyBiYXNpY2FsbHkganVzdCBhIGxvdCBv
ZiBwbHVtYmluZy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVj
dGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpjcmVhdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlw
dEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
V29ya2VyOjpTV1NlcnZlcldvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtl
cjo6flNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHRVUkwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcldvcmtlcjo6d29ya2VySUQgY29uc3QpOgorCiAyMDE3LTEwLTEwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBjdXN0b20gcGFzdGVi
b2FyZCBkYXRhIGluIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDVmNWIyOTE5NmFmMjBmNzY1MjY0ZWIzYzI1MDY4Yzc4YTAzYWRlYjMuLmVkZGNlNzlhYmE1
YzdkN2Q3YWZjYmZiMGI1Mjk1MmE3M2NkYmZmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAK
KzIwMTctMTAtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIFNXIGNvbnRleHQgcHJvY2VzcyAod2hlcmUgU1cgc2NyaXB0cyB3aWxsIGFjdHVhbGx5
IGV4ZWN1dGUpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4MTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYW4gYXV4aWxpYXJ5ICJTZXJ2aWNlV29ya2VyIGNvbnRleHQiIFdlYlBy
b2Nlc3MgdG8gYSBXZWJQcm9jZXNzUG9vbC4KKworICAgICAgICBUaGlzIHByb2Nlc3MgaXMgd2hl
cmUgU2VydmljZVdvcmtlciBzY3JpcHRzIHdpbGwgZXhlY3V0ZSwgc2VwYXJhdGUgZnJvbSB0aGUg
Y2xpZW50IFdlYlByb2Nlc3MKKyAgICAgICAgaG9zdGluZyB0aGUgcGFnZShzKSB0aGV5IGFyZSBz
ZXJ2aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGFsbCBvZiB0aGUgcGx1bWJp
bmcgdG8gcGFzcyBhbG9uZyBhIGZldGNoZWQgc2VydmljZSB3b3JrZXIgc2NyaXB0IHRvIHRoaXMK
KyAgICAgICAgY29udGV4dCBXZWJQcm9jZXNzLCBhcyB3ZWxsIGFzIG1lc3NhZ2UgYmFjayBmYWls
dXJlIHRvIGFjdHVhbGx5IHN0YXJ0IHRoZSBzY3JpcHQgc28gd2UgY2FuIHRlc3QuCisKKyAgICAg
ICAgVG91Y2hlcyBsb3RzIG9mIGNvZGUgc2l0ZXMgYnV0IGlzIGJhc2ljYWxseSBqdXN0IGEgbG90
IG9mIHBsdW1iaW5nLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNldENvbnRleHRDb25uZWN0aW9u
KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6d29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZl
ckNvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6
CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisK
KyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp+U3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXU2VydmVy
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uOjp3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBT
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VQcm9jZXNzUHJveHk6OlN0b3JhZ2VQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZEdldFdvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlU3RvcmFnZVByb2Nlc3NB
bmRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omdl
dFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRHZXRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKwogMjAxNy0xMC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBFbmFibGUgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpbiBEdW1wUmVuZGVyVHJlZSBh
bmQgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRlOTJhODlmNzZmZWI5OGYyNTBmM2FhYzZhZjYwZWQy
NjJhY2Q5ZGEuLjk5ZDQxODJlZmI0ZmRkMWMyODIxN2UzMTU4M2M1MTNmMGY4OTA3ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI0NjQsNiArMjQ2NCw3IEBACiAJCTUxQzYxQjBCMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQzYxQjA5MURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUM4MUI4OTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg3
MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwICovOyB9OwogCQk1MUM4
MUI4QTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVD
RTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi87IH07CisJCTUxQ0E3RUU5MUY4ODMzOTAwMDNE
MzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUNCRkM5OTBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRDEy
NDhCMUU3MzYyN0YwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDhBMUU3MzYy
NUMwMDJCMjgyMCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNTFE
MTI0OEQxRTczNjRBQTAwMkIyODIwIC8qIENvb2tpZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OEMxRTczNjQ1NjAwMkIyODIwIC8q
IENvb2tpZUNvY29hLm1tICovOyB9OwpAQCAtMTAzNjMsNiArMTAzNjQsNyBAQAogCQk1MUM2MUIw
OTFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4MUI4NzBDNDQyMkY3MDAxOUVDRTMg
LyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDhBMUU3MzYyNUMwMDJCMjgy
MCAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQ4QzFFNzM2NDU2MDAyQjI4MjAgLyogQ29va2ll
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjEyLDYgKzE5MjE0LDcg
QEAKIAkJCQk1MUYxNzU1ODFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAgKi8sCiAJCQkJNTFGMTc1NTcxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJD
b250YWluZXIuaCAqLywKIAkJCQk1MUYxNzU1NjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdv
cmtlckNvbnRhaW5lci5pZGwgKi8sCisJCQkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oICovLAogCQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMw
QSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBD
MDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLywKIAkJCQk1MUYxNzU1
NDFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggKi8sCkBAIC0z
MDE1Miw2ICszMDE1NSw3IEBACiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVEMUYzRUJD
ODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1
RjFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTFDQTdFRTkxRjg4MzM5MDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUzNUQxRjU4OTlGRTAwRENEQzBBIC8qIFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NjExRjNF
QkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFGMTc1NjMxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJKb2IuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNjM5ZTc4NTAxYjA1ZjYx
YjA1ZWRlNjBmNTFkOTlmZmFhZGNkZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeworICAg
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5OworICAgIFN0cmlu
ZyB3b3JrZXJJRDsKKyAgICBTdHJpbmcgc2NyaXB0OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8IHdvcmtlcklEIDw8IHNjcmlwdDsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uS2V5ID0gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleTo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghcmVnaXN0cmF0aW9uS2V5KQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU3RyaW5nIHdvcmtlcklEOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUod29ya2VySUQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlw
dCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUod29ya2VySUQpLCBXVEZNb3ZlKHNjcmlw
dCkgfX07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKaW5kZXggNmY4MWFiMjY5MTE0ODVjMWY0YjZmYjk2YWIyNTI0YWYx
MTBlZGI1Mi4uMDU1OTAwYzYzNzA1M2U2NjAzNGVhMmZiY2E3MDgyYmMyZDcxMjQzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
QEAgLTMyLDggKzMyLDExIEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTV1NlcnZlclJlZ2lzdHJhdGlvbi5oIgorI2luY2x1ZGUg
IlNXU2VydmVyV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw3ICs3OCwxMiBA
QCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYQogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYgcmVzdWx0KQogewotICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsK
KyAgICBtX3NlcnZlci5zY3JpcHRGZXRjaEZpbmlzaGVkKCp0aGlzLCByZXN1bHQpOworfQorCit2
b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0
cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NlcnZlci5z
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgcmVnaXN0cmF0aW9uS2V5LCB3b3JrZXJJ
RCwgbWVzc2FnZSk7CiB9CiAKIFNXU2VydmVyOjpTV1NlcnZlcigpCkBAIC0xMjgsNyArMTM2LDcg
QEAgdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYgam9iRGF0YSkKICAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQo
am9iRGF0YS5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBTV1Nl
cnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBMT0coU2VydmljZVdvcmtl
ciwgIlNlcnZlciBoYW5kbGluZyBzY3JpcHRGZXRjaEZpbmlzaGVkIGZvciBjdXJyZW50IGpvYiAl
IiBQUkl1NjQgIi0lIiBQUkl1NjQgIiBpbiBjbGllbnQiLCByZXN1bHQuY29ubmVjdGlvbklkZW50
aWZpZXIsIHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKIApAQCAtMTM4LDcgKzE0NiwyNyBAQCB2b2lk
IFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYgcmVzdWx0KQogICAgIGlmICghcmVnaXN0cmF0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICByZWdpc3RyYXRpb24tPnNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKKyAgICByZWdp
c3RyYXRpb24tPnNjcmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKK30KKwor
dm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkp
KTsKKyAgICAKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdl
dChyZWdpc3RyYXRpb25LZXkpKQorICAgICAgICByZWdpc3RyYXRpb24tPnNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIHdvcmtlcklELCBtZXNzYWdlKTsKK30KKworUmVmPFNX
U2VydmVyV29ya2VyPiBTV1NlcnZlcjo6Y3JlYXRlV29ya2VyKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCit7
CisgICAgU3RyaW5nIHdvcmtlcklEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAg
IAorICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQod29ya2VySUQsIFNXU2VydmVy
V29ya2VyOjpjcmVhdGUocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwgdHlwZSwgd29ya2Vy
SUQpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworICAgIAorICAgIGNvbm5lY3Rp
b24uc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lzdHJhdGlvbktleSwgd29ya2VySUQs
IHNjcmlwdCB9KTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dGFza1RocmVhZEVudHJ5UG9pbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGExZmM1
ZDMzOTg5YWExYWFmZjFhNGEzZWY2NzQ5OTI3NzViZDU3NzQuLjNhYWZiODBmN2VkMDhhNWFjNWVm
YTJjODg1MzdhNmRhMDM4MWYyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNXU2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgpAQCAtNDIsNyAr
NDEsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlv
bjsKK2NsYXNzIFNXU2VydmVyV29ya2VyOwogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dDsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIApAQCAtNTMsNiArNTQs
OCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5Db25uZWN0aW9uKCk7CiAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29u
c3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlvbihTV1NlcnZlciYsIHVpbnQ2
NF90IGlkZW50aWZpZXIpOwogICAgICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9z
ZXJ2ZXI7IH0KQEAgLTYxLDEwICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQmKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRo
ZSBjbGllbnQgV2ViUHJvY2VzcwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGll
bnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlm
aWVyKSA9IDA7CiAKKyAgICAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2Vz
cworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSA9IDA7CisKICAgICAgICAgU1dTZXJ2ZXImIG1fc2Vy
dmVyOwogICAgIH07CiAKQEAgLTc5LDYgKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFRh
c2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1RocmVh
ZFRhc2smJik7CiAKKyAgICBSZWY8U1dTZXJ2ZXJXb3JrZXI+IGNyZWF0ZVdvcmtlcihDb25uZWN0
aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9p
ZCByZWdpc3RlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNv
bm5lY3Rpb24oQ29ubmVjdGlvbiYpOwpAQCAtODYsMTEgKzk1LDE0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB0YXNrVGhyZWFkRW50cnlQb2ludCgpOwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNP
bk1haW5UaHJlYWQoKTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlv
bnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1
ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CiAKKyAgICBIYXNo
TWFwPFN0cmluZywgUmVmPFNXU2VydmVyV29ya2VyPj4gbV93b3JrZXJzQnlJRDsKKwogICAgIFJl
ZlB0cjxUaHJlYWQ+IG1fdGFza1RocmVhZDsKICAgICBMb2NrIG1fdGFza1RocmVhZExvY2s7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZDUxMWRkZGRmZDVhMTIzYTI2NzUxNjVl
MmFmM2YxMWUxMGVlYmZiMi4uZDE3YTQ3NmEzYWQ2OTVhOGFhYzUyNmI0NmM4MDkzN2Y0NDE5YTc5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY0LDE4ICs2NCwzMiBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjplbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiBqb2JEYXRhKQogICAgICAgICBtX2pvYlRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQog
Ci12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
Y3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRl
bnRpZmllcik7CiAKLSAgICAvLyBGSVhNRTogV2UgZmV0Y2hlZCB0aGUgc2NyaXB0IGNvbnRlbnRz
IGJ1dCBkb24ndCBkbyBhbnl0aGluZyB3aXRoIHRoZW0geWV0LgotICAgIC8vIFRoZXNlIGVycm9y
cyBhcmUgZm9yIHRlc3RpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGZlYXR1cmUuCisgICAg
aWYgKCFyZXN1bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgcmVqZWN0Q3VycmVu
dEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJM
ICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVkIGlu
IGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7
CisgICAgICAgIAorICAgICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENs
ZWFyIFJlZ2lzdHJhdGlvbiBhbGdvcml0aG0gcGFzc2luZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBp
dHMgYXJndW1lbnQuCisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBoYXZlICJjbGVhciByZWdp
c3RyYXRpb24iIHlldC4KIAotICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChyZXN1bHQuc2Ny
aXB0RXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJTY3JpcHQg
VVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoZWQgd2l0aCAi
LCBTdHJpbmc6Om51bWJlcihyZXN1bHQuc2NyaXB0Lmxlbmd0aCgpKSwgIiBjaGFyYWN0ZXJzLCBi
dXQgd2UncmUgbm90IHVzaW5nIHRoZSByZXN1bHQgeWV0Iik7Ci0gICAgZWxzZQotICAgICAgICBt
ZXNzYWdlID0gbWFrZVN0cmluZygiU2NyaXB0IFVSTCAiLCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVS
TC5zdHJpbmcoKSwgIiBmZXRjaCByZXN1bHRlZCBpbiBlcnJvcjogIiwgcmVzdWx0LnNjcmlwdEVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9sYXN0VXBkYXRlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgCisgICAgLy8gRklYTUU6
IElmIHRoZSBzY3JpcHQgZGF0YSBtYXRjaGVzIGJ5dGUtZm9yLWJ5dGUgd2l0aCB0aGUgZXhpc3Rp
bmcgbmV3ZXN0V29ya2VyLAorICAgIC8vIHRoZW4gcmVzb2x2ZSBhbmQgZmluaXNoIHRoZSBqb2Ig
d2l0aG91dCBkb2luZyBhbnl0aGluZyBmdXJ0aGVyLgorCisgICAgLy8gRklYTUU6IFN1cHBvcnQg
dGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xhc3NpYyB2cyBtb2R1bGUpCisgICAgbV9zZXJ2ZXIu
Y3JlYXRlV29ya2VyKGNvbm5lY3Rpb24sIG1fcmVnaXN0cmF0aW9uS2V5LCBtX2N1cnJlbnRKb2It
PnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7Cit9CisKK3Zv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworICAgIFVOVVNFRF9QQVJBTSh3
b3JrZXJJRCk7CiAKICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1lc3NhZ2UgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZjc2ODU0
NjNkZTc4MWEzYmFiYjk1YmNjNmI1ZDgyMGM1NGFkMzc0Ny4uN2NjZjEyMWFjMjFhMTNlY2E3NjYz
ZGQ4Yjk3OGJkNjFmNmNhNmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU1dTZXJ2
ZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDgg
KzQ4LDkgQEAgcHVibGljOgogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCiAgICAgdm9p
ZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBzY3Jp
cHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwotCisgICAg
dm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgCiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgZGF0YSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzcsNiArNzksOCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlcldvcmtlcj4gbV9hY3RpdmVXb3JrZXI7CiAgICAg
VVJMIG1fc2NvcGVVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlh
Q2FjaGU+IG1fdXBkYXRlVmlhQ2FjaGU7CisgICAgCisgICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRp
bWUgeyAwIH07CiAKICAgICBUaW1lciBtX2pvYlRpbWVyOwogICAgIFNXU2VydmVyJiBtX3NlcnZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggNGE3ZmRjZDA2YzI5MjhhNzA5Yjc0MDQzZGMyMzE4N2Iz
NTcwMzIxNy4uMmE2NmYzZTBkNzkzMjgyYTRiYThmMmNjN2FmMDk2Y2E4NmY3YjJiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAKQEAgLTI4LDE5ICsyOCwxOSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoY29uc3QgVVJMJiB1cmwpCi0gICAg
OiBtX3NjcmlwdFVSTCh1cmwpCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiB3b3JrZXJJRCkKKyAgICA6IG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbktleSkKKyAg
ICAsIG1fc2NyaXB0VVJMKHVybCkKKyAgICAsIG1fc2NyaXB0KHNjcmlwdCkKKyAgICAsIG1fd29y
a2VySUQod29ya2VySUQpCisgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIH0KIAogU1dTZXJ2ZXJXb3JrZXI6On5TV1NlcnZlcldvcmtlcigpCiB7Ci0g
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaAppbmRleCAxMmRjMzU3M2ZjZWQyNGUxMjEyYzkxNTBlNGY0YzI2MzExZjBkOGEw
Li4xM2UzYTI5NDE5OTgxODE2MmVlYjhmODlkZjBkNzA5YTNkYjljZmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CkBAIC0yNywxOSArMjcsMzcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTV1NlcnZlcldvcmtlciB7CitlbnVtIGNsYXNzIFdvcmtlclR5cGU7CisK
K2NsYXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2Vy
dmVyV29ya2VyPiB7CiBwdWJsaWM6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgVVJMJik7Cisg
ICAgc3RhdGljIFJlZjxTV1NlcnZlcldvcmtlcj4gY3JlYXRlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTV1NlcnZlcldvcmtlcihyZWdpc3Ry
YXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOworICAgIH0KKyAgICAKICAg
ICBTV1NlcnZlcldvcmtlcihjb25zdCBTV1NlcnZlcldvcmtlciYpID0gZGVsZXRlOwogICAgIH5T
V1NlcnZlcldvcmtlcigpOwotICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRVUkw7IH0KIAorICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JpcHRVUkw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0OyB9CisgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisgICAgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2VySUQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgU1dTZXJ2ZXJXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBXb3JrZXJUeXBlLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgVVJMIG1fc2NyaXB0
VVJMOworICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBTdHJpbmcgbV93b3JrZXJJRDsKKyAgICBX
b3JrZXJUeXBlIG1fdHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZDhlNmMyNDVmNGVkYzY4YjhjMDVj
ZWNkMDg0NDcxYTI3MGMxYTBlMS4uNTQ5ODk2M2M3NDVlOTUyMjBjNmNhOGQ0OGMzNTRlZmI4NzVl
N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMyLDEy
ICszMiwxNSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKQEAgLTQ4LDcgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbihT
V1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICA6IFNX
U2VydmVyOjpDb25uZWN0aW9uKHNlcnZlciwgY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKIHsKIH0KIApAQCAtNzYsNiArNzks
MzMgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVu
dCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6U3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihqb2JJZGVudGlmaWVyKSk7CiB9
CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoc2VuZFRv
Q29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0U2VydmljZVdvcmtlckNv
bnRleHQoaWRlbnRpZmllcigpLCBkYXRhKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGVu
ZGluZ0NvbnRleHREYXRhcy5hcHBlbmQoZGF0YSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVz
c2FnZSkKK3sKKyAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9uLT5zZW5kPFU+KFdURk1vdmUo
bWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2V0Q29udGV4
dENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAgIG1fY29udGV4
dENvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworCisgICAgLy8gV2UgY2FuIG5vdyBzdGFydCBhbnkg
cGVuZGluZyBzZXJ2aWNlIHdvcmtlciBjb250ZXh0cy4KKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdD
b250ZXh0RGF0YSA6IG1fcGVuZGluZ0NvbnRleHREYXRhcykKKyAgICAgICAgc3RhcnRTZXJ2aWNl
V29ya2VyQ29udGV4dChwZW5kaW5nQ29udGV4dERhdGEpOworICAgIAorICAgIG1fcGVuZGluZ0Nv
bnRleHREYXRhcy5jbGVhcigpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKaW5kZXggYjNjZTc2Yzk1ZTlkOGY0ZmYyYzk2OWFlY2VmMDQxZmI4ODY3ZWYzYS4u
YjJiZTA0MDZmNTQ2NGRhNGVmYzhkMzZhZGYwMGQ4N2ExYjgyZDgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1LDIwICs0NiwyOSBAQCBw
dWJsaWM6CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCiAgICAgdm9pZCBk
aXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOworICAgIHZvaWQgc2V0Q29udGV4dENvbm5lY3Rp
b24oSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICAvLyBJbXBs
ZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24KKyAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJl
amVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90
IGpvYklkZW50aWZpZXIpIGZpbmFsOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5wdHIoKTsgfQorICAg
IC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKKyAgICB2b2lkIHN0YXJ0
U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhJikgZmluYWw7CisgICAgCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIGlk
ZW50aWZpZXIoKTsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kVG9Db250
ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CisgICAgCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CiAKLSAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKKyAgICBSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiBtX2NvbnRleHRDb25uZWN0aW9uOworICAgIAorICAgIERlcXVlPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwogfTsgLy8g
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCAz
YjM2M2VjNWRkNDdiNWFhZTgxNGU0NjJlMzliMDJmZTYyZDA0YTc3Li5lMTA4MDljOTg2NjIzZGQ0
OGU1NmFlODQ0YjRiYzgzMjAyOWI1ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktl
eURhdGEuaD4KQEAgLTMyOSw2ICszMzAsNjMgQEAgU1dTZXJ2ZXImIFN0b3JhZ2VQcm9jZXNzOjpz
d1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIEFTU0VSVChy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiB9CisKK0lQQzo6Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OndvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uLmdldCgpOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3dh
aXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOworICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6
OkdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKK30KKwordm9pZCBTdG9y
YWdlUHJvY2Vzczo6ZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIEFTU0VS
VChtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIG1fd2Fp
dGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOworCisjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VG
aWxlRGVzY3JpcHRvcigpOworI2VsaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucG9ydCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKwor
ICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50
aWZpZXIpKSB7CisgICAgICAgIExPR19FUlJPUigiU3RvcmFnZVByb2Nlc3M6OmRpZEdldFdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiAtIFJlY2VpdmVkIG51bGwgY29ubmVjdGlvbiBpZGVu
dGlmaWVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIG1fd29ya2VyQ29udGV4dFByb2Nl
c3NDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV9zdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24tPndv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNyZWF0ZWQoKTsKK30KKwordm9pZCBTdG9yYWdl
UHJvY2Vzczo6c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0
aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChyZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBt
ZXNzYWdlKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVCgh
bV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7
CisgICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwg
JmNvbm5lY3Rpb24pOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBB
U1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkg
PT0gJmNvbm5lY3Rpb24pOworICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOworfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggZjQw
ODMzNDJhYzQwODk4OWRjMDMzNjQxMmE3MTI0ZmYyOWNkYmVjMS4uY2E0MTU1MzZhZTlkZWIzMzk0
NDFkNmNjZmNkMTY3MDE1OGFiZGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMzcsMTEgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBTV1NlcnZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitzdHJ1Y3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBzdHJ1Y3QgU3RvcmFnZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKQEAgLTY3LDEyICs2OSwxOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhY2Nlc3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShjb25zdCBTdHJpbmcmIHBhdGgp
IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgSVBDOjpD
b25uZWN0aW9uKiB3b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGNy
ZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbigpOworI2VuZGlmCisKICNpZiBFTkFC
TEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIHZvaWQgZ2V0U2FuZGJveEV4dGVuc2lvbnNGb3JC
bG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgV1RGOjpGdW5jdGlvbjx2
b2lkIChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpT
V1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHJl
Z2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOworICAgIHZv
aWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsK
ICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTAxLDcgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXRocywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICAgICB2b2lkIGRp
ZEdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAjZW5kaWYKLQorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICB2b2lkIGRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJp
bmcmIHBhdGgpOwogI2VuZGlmCkBAIC0xMjUsNyArMTM3LDEyIEBAIHByaXZhdGU6CiAgICAgTG9j
ayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYpOworCisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOworICAg
IEhhc2hNYXA8dWludDY0X3QsIFdlYlNXU2VydmVyQ29ubmVjdGlvbio+IG1fc3dTZXJ2ZXJDb25u
ZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzlkZWFkZjI3YzhhYjhk
ODg4YjQ5ZWE2NTZjM2Y4MDJjOTg0ZTU1MS4uMTgwMmYwZDRjODUzNTFlNWVlMGZmODcwNGRjYWQ0
YmIyMmMxMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw0ICszNCw5IEBAIG1lc3NhZ2VzIC0+
IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHcmFudFNhbmRib3hFeHRlbnNp
b25zRm9yQmxvYnMoVmVjdG9yPFN0cmluZz4gcGF0aHMsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9ucykKICAgICBEaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0Zv
ckJsb2JGaWxlcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgZXh0ZW5zaW9ucykKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorICAgIERpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFj
aG1lbnQgY29ubmVjdGlvbkhhbmRsZSkKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRv
U3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdv
cmtlcklELCBTdHJpbmcgbWVzc2FnZSkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCAyN2JhZDFjZDIyZDZiZmYzODY1ODI5NGU5ZDNlNjYzYWQxZjVkOWM2Li40NTQ1
YmM0YTI1MmNmOGE5YjE0MmJhOTMwZjQ0MmFhOTFmYTI2MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcApAQCAtNTUsNiArNTUsMTEgQEAgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWQKIFN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjp+U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKQogewogICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fc3dDb25uZWN0aW9u
cy52YWx1ZXMoKSkKKyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0
ZXJTV1NlcnZlckNvbm5lY3Rpb24oKmNvbm5lY3Rpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTM4LDcgKzE0Mywx
NSBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oU2Vzc2lvbklEIHNlc3NpbwogICAgIEFTU0VSVCghbV9zd0Nvbm5lY3Rpb25z
LmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAKICAgICBhdXRvJiBzZXJ2
ZXIgPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zLnNldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9jb25u
ZWN0aW9uLmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7Cisg
ICAgYXV0byBjb25uZWN0aW9uUmVzdWx0ID0gbV9zd0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
KHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
c2Vzc2lvbklEKSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb25SZXN1bHQuaXNOZXdFbnRyeSk7CisK
KyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oKihjb25uZWN0aW9uUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOworCisgICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkud29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb25SZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5zZXRDb250ZXh0Q29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAg
IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKIH0KIAogdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVt
b3ZlU1dTZXJ2ZXJDb25uZWN0aW9uKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KQpAQCAtMTQ2LDggKzE1OSwxOCBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
OjpyZW1vdmVTV1NlcnZlckNvbm5lY3Rpb24odWludDY0X3Qgc2VydmVyQ29ubgogICAgIEFTU0VS
VChtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsK
IAogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy50YWtlKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdp
c3RlclNXU2VydmVyQ29ubmVjdGlvbigqY29ubmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi0+ZGlz
Y29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKIH0KKwordm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpCit7Cisg
ICAgYXV0byogaXBjQ29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS53b3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoaXBjQ29ubmVjdGlvbik7
CisKKyAgICBmb3IgKGF1dG8mIHN3Q29ubmVjdGlvbiA6IG1fc3dDb25uZWN0aW9ucy52YWx1ZXMo
KSkKKyAgICAgICAgc3dDb25uZWN0aW9uLT5zZXRDb250ZXh0Q29ubmVjdGlvbihpcGNDb25uZWN0
aW9uKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNjks
NSArMTkyLDQgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlSURC
Q29ubmVjdGlvblRvU2VydmVyKHVpbnQ2NF90IHNlcnZlckMKIH0KICNlbmRpZgogCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGVkNjU4MDJlZGNi
ODI1MmIyZTFjMzI4OTcxN2E0YTU1NDI1MjhjYTkuLjViOWNlOGFhNWFjN2IzNmMzMzBkMmE5Y2I5
NzBkYmMyMDI3MTg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ0LDYgKzQ0LDEw
IEBAIHB1YmxpYzoKIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJu
IG1fY29ubmVjdGlvbi5nZXQoKTsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IHZvaWQgd29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTVjZmZmNTM1NmU4ZmVjZDNj
YTNjM2NlZWE5ZDMzY2IyZDQyMjZhYy4uNzQyZGE1YWFkNzFlM2M2NDE1OTIwM2QwZDJmMzYzNzVj
YmIwNDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgc3RhdGljIHVpbnQ2
NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCiAgICAgcmV0dXJuICsrY2FsbGJhY2tJRDsKIH0KIAot
UmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IFN0b3JhZ2VQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCitSZWY8U3RvcmFnZVByb2Nlc3NQcm94eT4gU3RvcmFn
ZVByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sKSk7
CiB9CiAKLVN0b3JhZ2VQcm9jZXNzUHJveHk6OlN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogQ2hpbGRQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wt
PmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQorU3RvcmFnZVByb2Nlc3NQcm94eTo6
U3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCisgICAgOiBD
aGlsZFByb2Nlc3NQcm94eShwcm9jZXNzUG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3Jp
dHkoKSkKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCiAgICAgLCBtX251bVBlbmRp
bmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgbV9wZW5kaW5n
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmNsZWFyKCk7CiAKICAgICAvLyBU
ZWxsIFByb2Nlc3NQb29sIHRvIGZvcmdldCBhYm91dCB0aGlzIHN0b3JhZ2UgcHJvY2Vzcy4gVGhp
cyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLT5zdG9yYWdl
UHJvY2Vzc0NyYXNoZWQodGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC5zdG9yYWdlUHJvY2Vzc0Ny
YXNoZWQodGhpcyk7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQpAQCAtMjIw
LDQgKzIyMCwyMCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogICAgIG1fbnVtUGVuZGluZ0Nv
bm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2
b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bigpCit7CisgICAgQVNTRVJUKCFtX3dhaXRpbmdPbldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVj
dGlvbik7CisgICAgbV93YWl0aW5nT25Xb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSB0
cnVlOworICAgIAorICAgIG1fcHJvY2Vzc1Bvb2wuZ2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0
aW9uKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRHZXRXb3JrZXJD
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbiksIDApOworfQorCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCmluZGV4IGMyZDJlYmE2MDkyZGNkM2RiNTcw
YjhmOWY2MWE5YzM2ODRjNDBiNGYuLmZjOTE3MTkzZDkxOWJhMDhkNDE5ODJiZDYxZGJlMzhhMjI3
YjBiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YTsK
IAogY2xhc3MgU3RvcmFnZVByb2Nlc3NQcm94eSA6IHB1YmxpYyBDaGlsZFByb2Nlc3NQcm94eSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VQcm9jZXNzUHJveHk+IGNyZWF0
ZShXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5TdG9yYWdlUHJvY2Vzc1Byb3h5KCk7CiAKICAgICB2
b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2Vic2l0ZURhdGEpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKQEAgLTU3LDggKzU3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgot
ICAgIFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBTdG9yYWdlUHJv
Y2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3NQcm94eQog
ICAgIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
KSBvdmVycmlkZTsKQEAgLTc5LDExICs4MywxNSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5E
Qk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxl
cyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBib29sIG1fd2FpdGluZ09uV29ya2VyQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgLy8gUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgV2ViUHJvY2Vz
c1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7CisgICAgV2ViUHJvY2Vzc1Bvb2wmIG1fcHJvY2Vzc1Bvb2w7
CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVx
dWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmE3OGE2YjFjNzEzMDRmMjJiZDZkMDMzYWE0ZTg3
NGVlNTlkN2JkNS4uYjlmY2QxOTk3M2QzOWJiZjg4NjQ0MDA3MWUwY2U5ZjcxZDQ3MzJiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNCArMzAsOCBAQCBtZXNzYWdlcyAt
PiBTdG9yYWdlUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0FOREJP
WF9FWFRFTlNJT05TKQogICAgIEdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2
NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAjZW5kaWYKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
KQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggNGI0MGRlZmY1NmIyYjE1ZjcyN2ZhNGM0YmNlMGJjN2QyZDgzMzgxZi4uMDI1NDg4YjQ2
ZDBjNmRjN2E1NTQ3MmMwNDE2NTU0OGFhNmY4YTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlKiByCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fc3RvcmFnZVByb2Nlc3Mg
PSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fc3RvcmFnZVBy
b2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBtX3N0
b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdl
YnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwogICAgIH0KIApAQCAtNTc0LDYgKzU3NCwy
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVBy
b2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcgogICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBudWxs
cHRyOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKFN0b3JhZ2VQcm9jZXNzUHJveHkm
IHByb3h5KQoreworICAgIEFTU0VSVF9VTlVTRUQocHJveHksICZwcm94eSA9PSBtX3N0b3JhZ2VQ
cm9jZXNzKTsKKyAgICAKKyAgICBpZiAoIW1fd29ya2VyQ29udGV4dFByb2Nlc3MpIHsKKyAgICAg
ICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAg
ICAgICAgYXV0byYgbmV3UHJvY2VzcyA9IGNyZWF0ZU5ld1dlYlByb2Nlc3MobV93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRQcm9j
ZXNzID0gJm5ld1Byb2Nlc3M7CisgICAgfQorICAgIAorICAgIG1fd29ya2VyQ29udGV4dFByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KCksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRHZXRXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKQoreworICAg
IGlmICghbV9zdG9yYWdlUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RvcmFnZVBy
b2Nlc3MtPmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVC
cm93c2luZygpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IGFsbFByb2Nlc3NQb29s
cygpKQpAQCAtODgyLDYgKzkwNSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gcHJvdGVjdChwcm9jZXNzKTsKICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9
PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fd29ya2VyQ29udGV4dFByb2Nlc3Mg
PT0gcHJvY2VzcykKKyAgICAgICAgbV93b3JrZXJDb250ZXh0UHJvY2VzcyA9IG51bGxwdHI7Cisj
ZW5kaWYKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVu
dDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZShwcm9jZXNz
KTsKIApAQCAtOTYwLDYgKzk4Nyw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgfSBl
bHNlCiAgICAgICAgIHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9j
ZXNzQ291bnRMaW1pdChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJz
aXRlRGF0YVN0b3JlKCkpOwogCisgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgIT0gbV93b3JrZXJD
b250ZXh0UHJvY2Vzcyk7CisKICAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdl
Q2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDdjN2E4ZWM5MWVmNzliYWJjMGU4MTZjY2Vm
MGE0ZjJiZmU5NTBmNjcuLjEwMTdlY2I3NTA2MzQ1MTRiNGNiMTRiNGVhOTliMWZjM2QxMjk0YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzE5LDYgKzMx
OSw5IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2Vzcygp
IHsgcmV0dXJuIG1fc3RvcmFnZVByb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIGdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgc3RvcmFnZVBy
b2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oU3RvcmFn
ZVByb2Nlc3NQcm94eSYpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29s
IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25zdDsKQEAgLTQxMiw2ICs0MTUsMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25M
aXN0ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2
b2lkIHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRp
Zmllcik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBkaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0
aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CiAKQEAgLTQ3Nyw2ICs0ODQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZUluaXRpYWxF
bXB0eVByb2Nlc3M7CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2Fj
aGU7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlByb2Nlc3NQcm94eSogbV93
b3JrZXJDb250ZXh0UHJvY2VzcyB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fd2FpdGluZ0Zvcldv
cmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIFJl
ZjxXZWJQYWdlR3JvdXA+IG1fZGVmYXVsdFBhZ2VHcm91cDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDcxZDcxODg1ZTA0M2ZmMDFhZmMzOTli
NzRlNzJhN2I2NjFmZmNmOS4uYmM3OTdjN2M4ZjU5OWJmYjNmNzVhYTY4MTRjNDhjODg4NzNiZjZk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MjE3LDQgKzEyMTcsMTEgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBXZWJQcm9jZXNzUHJveHk6
OnBsYXRmb3JtUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MoKQogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkR2V0V29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKQorewor
ICAgIG1fcHJvY2Vzc1Bvb2wtPmRpZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTYyMmU0N2Y5ZDQ0ZDI1OTM4
MjYzNTcwZTRmYjY0OTY4ZjZjZjlkNC4uNDI1NjRmOTMzZTE2YzExMTAwZjFiMDNhYWU4NTEzNGY5
NjNmYjExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAg
LTE4MSw2ICsxODEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmU7IH0KICAgICB2b2lkIGRp
ZEV4Y2VlZEluYWN0aXZlTWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpOwogCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwcm9j
ZXNzVGVybWluYXRlZCgpOwogCiAgICAgdm9pZCBkaWRFeGNlZWRDUFVMaW1pdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGFkNjljNTJmNDAwYzg2NWYzYTQ5ZWJmMGZmZGJkMmM1MmVkZWMyNjEuLjE5MWJlNGEyM2Q5
YjU5NzJhNTRlMDRlYjhkYjkwOTdlN2QzM2Y4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTU0LDQgKzU0LDggQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIE1lbW9y
eVByZXNzdXJlU3RhdHVzQ2hhbmdlZChib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSkKICAgICBE
aWRFeGNlZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIERpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKElQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggYzg4YzhmNjY0ODcxMDg5NWU4MzAzNzg2NjQ0N2UxZjQzODA3NGY3
Yi4uMmYyZmFjZGQyMjAwZGYyNjc5YzdlYmM2NWExNDg5YjRkMGY2MDYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFj
a2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKQEAgLTEwNSw2ICsxMDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaD4KQEAgLTE2MTQsNCArMTYxNiw0NCBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQ
cm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigp
Cit7CisgICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uKTsKKworI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoc29ja2V0
UGFpci5zZXJ2ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChz
b2NrZXRQYWlyLmNsaWVudCk7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlz
dGVuaW5nUG9ydDsKKyAgICBpZiAobWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCkgIT0gS0VSTl9TVUNDRVNT
KQorICAgICAgICBDUkFTSCgpOworCisgICAgaWYgKG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFj
aF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgQ1JBU0goKTsKKworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihsaXN0ZW5pbmdQ
b3J0KTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOworI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisKKyAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9u
ID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCAqdGhpcyk7CisgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOwor
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbihjb25uZWN0aW9uQ2xpZW50UG9ydCksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0
YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICAvLyBGSVhN
RTogSGVyZSBpcyB3aGVyZSB3ZSB3aWxsIGFjdHVhbGx5IHN0YXJ0IHRoZSBzY3JpcHQuCisgICAg
Ly8gRm9yIG5vdyB3ZSBib3VuY2UgYmFjayBhIGZhaWx1cmUgbWVzc2FnZSB0byB0aGUgcmVxdWVz
dGluZyBwcm9jZXNzIGZvciB0ZXN0IGNvdmVyYWdlLgorCisgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVN0cmluZygiRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGgg
IiwgU3RyaW5nOjpudW1iZXIoZGF0YS5zY3JpcHQubGVuZ3RoKCkpKTsKKyAgICBtX3dvcmtlckNv
bnRleHRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdv
cmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRh
LnJlZ2lzdHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwgbWVzc2FnZSksIDApOworfQorCisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCA3MzlhODU3ZGRiMTlmZDllNDZiYTRiMGJmMGQ0MTg0NDI5MTdjMGI0Li41YzJl
NmM3NmRmNzgyNDVhMWIzMTU0OWM2ZTAxMWZlNGY1ZDRkM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTcxLDYgKzcxLDEwIEBAIGNsYXNzIFVzZXJHZXN0dXJlVG9r
ZW47CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1
Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKyNlbmRpZgogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTI5MCwxMCArMjk0LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1l
cGFkQ29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJik7CiAgICAgdm9pZCBnYW1lcGFkRGlzY29u
bmVjdGVkKHVuc2lnbmVkIGluZGV4KTsKICNlbmRpZgotCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5
U2V0dGluZ3MmKTsKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lk
IGdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICB2b2lkIHJlbGVh
c2VQYWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAwOGY2OTcxMzcwNTdhZDRjZmI5MWI3OGE5OGY0ZTk3MmVhM2Jk
MzIyLi4yMjA2MzYwMWUwNjNhYjViMjE3OGZmN2IzNmM5Yzk5MTI4MTA3OTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDQg
KzExMyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFVT
RShTT1VQKQogICAgIFNldE5ldHdvcmtQcm94eVNldHRpbmdzKHN0cnVjdCBXZWJDb3JlOjpTb3Vw
TmV0d29ya1Byb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICBHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCisgICAgU3RhcnRT
ZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKKyNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDQwZTg1YTU5ZGM3OGZmNzBkNjk5ZmJiMDE1YzAwZGJjMzA1NjU2NDQu
LjlkZWRlOGZjYzEzMTA3N2FiOTdhZTI2ZGI1MDY3MjBiZWEzMjA4YzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0xMC0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgU1cgY29udGV4dCBwcm9jZXNzICh3aGVyZSBTVyBzY3JpcHRzIHdpbGwg
YWN0dWFsbHkgZXhlY3V0ZSkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0
aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50
eHQ6CisKIDIwMTctMTAtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRW5hYmxlIGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgaW4gRHVtcFJlbmRlclRyZWUgYW5k
IFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0
aW9ucy1leHBlY3RlZC50eHQKaW5kZXggMzRmNjQ5NmRlNzEyMjhiYjVhYjYwNmYxMDYzNzE1NzM5
MjNiMGRiMC4uODdjNWZiMjgwMjQyYWUxNjM1NjMxNGEwODk2ZjQ0NWI3NzgzZTFlMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0
ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKQEAg
LTQsNyArNCw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogUmVnaXN0cmF0aW9uIGZhaWxl
ZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBzZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlwdCBVUkwgd2hvc2Ug
cGF0aCBkb2VzIG5vdCBjb250YWluICclMmYnIG9yICclNWMnCiBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNjA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVycm9yOiBTY29wZSBV
UkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgZWl0aGVyIEhU
VFAgb3IgSFRUUFMKIENPTlNPTEUgTUVTU0FHRTogbGluZSA3MDogUmVnaXN0cmF0aW9uIGZhaWxl
ZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2aWNlV29y
a2VyLnJlZ2lzdGVyKCkgY2Fubm90IGhhdmUgYSBwYXRoIHRoYXQgY29udGFpbnMgJyUyZicgb3Ig
JyU1YycKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRo
IGVycm9yOiBVbmtub3duRXJyb3I6IFNjcmlwdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dv
cmtlcnMvc2VydmljZS9pbWFnZS1taW1lLXR5cGUucGhwIGZldGNoZWQgd2l0aCAwIGNoYXJhY3Rl
cnMsIGJ1dCB3ZSdyZSBub3QgdXNpbmcgdGhlIHJlc3VsdCB5ZXQKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxMDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZh
aWxlZCB0byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDAKIENPTlNPTEUg
TUVTU0FHRTogbGluZSA4MDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBTZWN1cml0
eUVycm9yOiBTY3JpcHQgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGll
bnQncyBvcmlnaW4KIENPTlNPTEUgTUVTU0FHRTogbGluZSA5MTogUmVnaXN0cmF0aW9uIGZhaWxl
ZCB3aXRoIGVycm9yOiBTZWN1cml0eUVycm9yOiBTY29wZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2gg
dGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1l
eHBlY3RlZC50eHQKaW5kZXggNDk0MDc3ODRhYmY4NjNmZDExZDM3OGVhYWZiNGNhN2ZkYjgzODUy
Yi4uNTEzM2JiMmZjZDg3YmNjOTdhYTI2MWI2OTlmMjE4ZGE1MDhkOWVkOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jh
c2ljLXJlZ2lzdGVyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxMDogUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6
IFNjcmlwdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvZW1wdHktd29ya2VyLmpzIGZldGNoZWQgd2l0aCA0MSBjaGFyYWN0ZXJzLCBidXQgd2UncmUg
bm90IHVzaW5nIHRoZSByZXN1bHQgeWV0Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IFJlZ2lz
dHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBTY3JpcHQgVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2VtcHR5LXdvcmtlci1k
b2VzbnQtZXhpc3QuanMgZmV0Y2hlZCB3aXRoIDAgY2hhcmFjdGVycywgYnV0IHdlJ3JlIG5vdCB1
c2luZyB0aGUgcmVzdWx0IHlldAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRp
b24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZp
Y2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggNDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTog
UmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBz
dGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVl
dWUtc2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3Rl
ZC50eHQKaW5kZXggZjkxNGY1MDAxZDIxNTZiMjNjZmY5ZDcwNjg0MDZjMWZlZmRiMTAzMi4uYzFh
MDYzNTA2MzljNTQ5YmY5YWE4OTNkMTg0ZWY3ZDQyZGUwMTczMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUt
c2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0
ZWQudHh0CkBAIC0xLDIgKzEsMiBAQAotQUxFUlQ6IERvbmUKK0FMRVJUOiBVbmV4cGVjdGVkIGVy
cm9yIHJlY2VpdmVkIGZyb20gc2VydmVyOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBz
ZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDQxCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>