<?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>208923</bug_id>
          
          <creation_ts>2020-03-11 09:47:39 -0700</creation_ts>
          <short_desc>[EME] Issue an &quot;encrypted&quot; event when a new encrypted initialization segment is encountered</short_desc>
          <delta_ts>2020-03-11 16:50:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1628694</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-11 09:47:39 -0700</bug_when>
    <thetext>[EME] Issue an &quot;encrypted&quot; event when a new encrypted initialization segment is encountered</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628754</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-11 11:02:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/59603354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628755</commentid>
    <comment_count>2</comment_count>
      <attachid>393266</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-11 11:02:53 -0700</bug_when>
    <thetext>Created attachment 393266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628767</commentid>
    <comment_count>3</comment_count>
      <attachid>393266</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-11 11:24:26 -0700</bug_when>
    <thetext>Comment on attachment 393266
Patch

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

r=me once the bots are happy

&gt; Source/WTF/wtf/LoggerHelper.h:64
&gt; +#define ALWAYS_LOG_IF_POSSIBLE(...)     if (logger()) logger()-&gt;logAlways(logChannel(), __VA_ARGS__)
&gt; +#define ERROR_LOG_IF_POSSIBLE(...)      if (logger()) logger()-&gt;error(logChannel(), __VA_ARGS__)
&gt; +#define WARNING_LOG_IF_POSSIBLE(...)    if (logger()) logger()-&gt;warning(logChannel(), __VA_ARGS__)
&gt; +#define INFO_LOG_IF_POSSIBLE(...)       if (logger()) logger()-&gt;info(logChannel(), __VA_ARGS__)
&gt; +#define DEBUG_LOG_IF_POSSIBLE(...)      if (logger()) logger()-&gt;debug(logChannel(), __VA_ARGS__)
&gt; +#define WILL_LOG_IF_POSSIBLE(_level_)   if (logger()) logger()-&gt;willLog(logChannel(), _level_)

It might be a good idea to use a method with a different name, since currently &apos;logger()&apos; always return a ref. Maybe loggerPtr()?

    if (loggerPtr()) loggerPtr()-&gt;log...

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySystemAccess.cpp:66
&gt; +    m_taskQueue.enqueueTask([this, document = makeRef(document), promise = WTFMove(promise)] () mutable {

Do you need to keep the document alive, can&apos;t you use makeWeakPtr()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628787</commentid>
    <comment_count>4</comment_count>
      <attachid>393273</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-11 12:26:26 -0700</bug_when>
    <thetext>Created attachment 393273
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628915</commentid>
    <comment_count>5</comment_count>
      <attachid>393273</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 16:50:04 -0700</bug_when>
    <thetext>Comment on attachment 393273
Patch for landing

Clearing flags on attachment: 393273

Committed r258295: &lt;https://trac.webkit.org/changeset/258295&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628916</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 16:50:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393266</attachid>
            <date>2020-03-11 11:02:53 -0700</date>
            <delta_ts>2020-03-11 12:26:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208923-20200311110252.patch</filename>
            <type>text/plain</type>
            <size>69497</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZjYTI4M2M4ZmY1ZmQ0MTYwYWQxZDQx
N2YxMjRiYzRmMGFhNWI5ZTEuLmIxNzg0N2YyZWQwMGQ4ZjJjMmNjN2Q3MDIyOGFmZGQ0NjljNWJj
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDMtMTEgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VNRV0gSXNzdWUgYW4gImVuY3J5cHRlZCIgZXZlbnQg
d2hlbiBhIG5ldyBlbmNyeXB0ZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBpcyBlbmNvdW50ZXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4OTIz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
TG9nZ2VySGVscGVyLmg6CisgICAgICAgIChXVEY6OkxvZ2dlckhlbHBlcjo6Y2hpbGRMb2dJZGVu
dGlmaWVyKTogTWFkZSBzdGF0aWMuCisKIDIwMjAtMDMtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbWVtYmVyIGNvbXBsZXRlZCBzdWJyYW5nZXMgZHVy
aW5nIGluY3JlbWVudGFsIFBERiBsb2FkaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg4ZTNjN2ZmZjcxYTVl
MTgyZjliNjI3MDdhODA5NGM5NTUwMTNkYmMuLjRlZTc3ZWQ0Y2MzMDMyYzg0MGIyMDlkYTVkN2Mx
ZWZiMWQ1NGQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAyMC0wMy0xMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbRU1FXSBJc3N1ZSBhbiAi
ZW5jcnlwdGVkIiBldmVudCB3aGVuIGEgbmV3IGVuY3J5cHRlZCBpbml0aWFsaXphdGlvbiBzZWdt
ZW50IGlzIGVuY291bnRlcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDg5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXaGVuIEFWU3RyZWFtRGF0YVBhcnNlciBlbmNvdW50ZXJzIGFuIGluaXRpYWxp
emF0aW9uIHNlZ21lbnQgaW5kaWNhdGluZyBlbmNyeXB0ZWQgY29udGVudCwgaXQKKyAgICAgICAg
d2lsbCBpc3N1ZSBhIC1zdHJlYW1EYXRhUGFyc2VyOmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEOiBtZXNzYWdlCisgICAgICAgIHRvIGl0cyBk
ZWxlZ2F0ZS4gSWYgdGhlIHBhcnNlciBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBhbiBBVkNv
bnRlbnRLZXlTZXNzaW9uLCBpdCB3aWxsIGluc3RlYWQKKyAgICAgICAgYWxsb3cgdGhlIHNlc3Np
b24gdG8gaGFuZGxlIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGFuZCB0aGUgZGVsYWdldGUg
bWV0aG9kIHdpbGwgbm90IGJlIGNhbGxlZC4KKworICAgICAgICBXaGVuIHRoZSBsYXR0ZXIgc2l0
dWF0aW9uIG9jY3Vycywgd2UgY2FuIGRldGVjdCB0aGF0IHRoZSAtZGlkUHJvdmlkZVJlcXVlc3Qg
Y2FsbGJhY2sgZGlkIG5vdAorICAgICAgICBvY2N1ciBkdWUgdG8gdGhlIGNsaWVudCBjYWxsaW5n
IE1lZGlhS2V5U2Vzc2lvbi5nZW5lcmF0ZVJlcXVlc3QoKSBhbmQgdGhlcmVmb3JlIG11c3QgaGF2
ZSBiZWVuCisgICAgICAgIGR1ZSB0byBwYXJzaW5nIGFuIGVuY3J5cHRlZCBzZWdtZW50LiBJbiBy
ZXNwb25zZSwgc3RvcmUgdGhlIHJlcXVlc3QgaW4gYSBsaXN0IG9mICJ1bmV4cGVjdGVkIgorICAg
ICAgICByZXF1ZXN0cyB0byBiZSBjaGVja2VkIHRoZSBuZXh0IHRpbWUgYSBNZWRpYUtleVNlc3Np
b24gdHJpZXMgdG8gZ2VuZXJhdGVSZXF1ZXN0KCkuIFRoZW4sIHdlIHdpbGwKKyAgICAgICAgcGFz
cyB0aGUgaW5pdGFsaXphdGlvbkRhdGEgYW5kIHR5cGUgdG8gSFRNTE1lZGlhRWxlbWVudCB0aHJv
dWdoIGEgbmV3IGNsaWVudCBpbnRlcmZhY2UsIHdoZXJlIGl0CisgICAgICAgIHdpbGwgdXNlIHRo
YXQgaW5pdGlhbGl6YXRpb25EYXRhIHRvIGlzc3VlIGFuICJlbmNyeXB0ZWQiIGV2ZW50LiBJZiB0
aGUgY2xpZW50IHBhc3NlcyB0aGF0IHNhbWUKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhIGJh
Y2sgaW50byBNZWRpYUtleVNlc3Npb24sIHRoZSAidW5leHBlY3RlZCIgcmVxdWVzdCBjYW4gYmUg
Zm91bmQsIGFuZCByZS11c2VkLgorCisgICAgICAgIERyaXZlLWJ5IGZpeGVzOiBBZGRlZCBhIHRv
biBvZiBkZWJ1ZyBsb2dnaW5nIG1lc3NhZ2VzIHRvIHRoZSBDRE1Qcml2YXRlIGNsYXNzZXMuCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDRE06OkNETSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlT
eXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6
TWVkaWFLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6YXR0YWNoQ0RNQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5czo6ZGV0YWNoQ0RNQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhS2V5czo6YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tPbkNsaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6bmV4dENoaWxkSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5czo6Y2RtSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlzOjpjZG1JbnN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6
c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6c2V0TG9n
Z2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6c2V0Q2xpZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1Qcml2YXRlOjpzZXRMb2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25maWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bG9nQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjppbml0VHlw
ZUZvclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnNldExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlh
bGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRS
ZXRyeVJlcXVlc3RGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNz
aW9uRm9yUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldExvZ2dlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xv
c2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpoYXNSZXF1ZXN0IGNvbnN0KToKKwogMjAyMC0wMy0xMCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUxFQVNFX0FTU0VSVCgpIGhpdCBpbiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkltYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFjYzMzNmZhYWU2NjdiZTEzMTRjY2Nl
OWVmZmU5MzJkZGQ0NGIwZGQuLjQzYjAyYmFiY2Y4MTY4NjEwNDJjNTU2N2RiNjk4NTE1MjU5NjQz
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTExICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtFTUVdIElzc3VlIGFuICJl
bmNyeXB0ZWQiIGV2ZW50IHdoZW4gYSBuZXcgZW5jcnlwdGVkIGluaXRpYWxpemF0aW9uIHNlZ21l
bnQgaXMgZW5jb3VudGVyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaDoKKwogMjAyMC0wMy0w
OCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
TWFwcGluZyB0byBVVEkgZnJvbSB0YWcgYW5kIHRhZyBjbGFzcyBzaG91bGQgYmUgcGVyZm9ybWVk
IGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxw
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IDBkNGMyOTJiOTg4MGUy
Zjk0NGE5Y2Q5Y2I1ODE4YzY5NmI5ZmRlZDguLjA0MDZjNzU3ZDFkZTdiMzQwOTA4NDNhYjI3Njlj
MDY3MjkwMWQ3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCkBAIC01Niw3ICs1NiwxNCBAQCBwdWJs
aWM6CiAjZGVmaW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICBpZiAoY29uZGl0
aW9uKSBsb2dnZXIoKS5pbmZvKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIERF
QlVHX0xPR19JRihjb25kaXRpb24sIC4uLikgICAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS5k
ZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQogCi0gICAgY29uc3Qgdm9pZCogY2hpbGRM
b2dJZGVudGlmaWVyKGNvbnN0IHZvaWQqIHBhcmVudElkZW50aWZpZXIsIHVpbnQ2NF90IGNoaWxk
SWRlbnRpZmllcikgY29uc3QKKyNkZWZpbmUgQUxXQVlTX0xPR19JRl9QT1NTSUJMRSguLi4pICAg
ICBpZiAobG9nZ2VyKCkpIGxvZ2dlcigpLT5sb2dBbHdheXMobG9nQ2hhbm5lbCgpLCBfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgRVJST1JfTE9HX0lGX1BPU1NJQkxFKC4uLikgICAgICBpZiAobG9nZ2Vy
KCkpIGxvZ2dlcigpLT5lcnJvcihsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBX
QVJOSU5HX0xPR19JRl9QT1NTSUJMRSguLi4pICAgIGlmIChsb2dnZXIoKSkgbG9nZ2VyKCktPndh
cm5pbmcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgSU5GT19MT0dfSUZfUE9T
U0lCTEUoLi4uKSAgICAgICBpZiAobG9nZ2VyKCkpIGxvZ2dlcigpLT5pbmZvKGxvZ0NoYW5uZWwo
KSwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFQlVHX0xPR19JRl9QT1NTSUJMRSguLi4pICAgICAg
aWYgKGxvZ2dlcigpKSBsb2dnZXIoKS0+ZGVidWcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgV0lMTF9MT0dfSUZfUE9TU0lCTEUoX2xldmVsXykgICBpZiAobG9nZ2VyKCkpIGxv
Z2dlcigpLT53aWxsTG9nKGxvZ0NoYW5uZWwoKSwgX2xldmVsXykKKworICAgIHN0YXRpYyBjb25z
dCB2b2lkKiBjaGlsZExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCogcGFyZW50SWRlbnRpZmllciwg
dWludDY0X3QgY2hpbGRJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50NjRfdCBwYXJlbnRNYXNrID0gMHhmZmZmZmZmZmZmZmYwMDAwdWxsOwogICAgICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQ2NF90IG1hc2tMb3dlcldvcmQgPSAweGZmZmZ1bGw7CkBAIC04
OCw2ICs5NSwxMyBAQCBwdWJsaWM6CiAjZGVmaW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4u
KSAgICAgICAoKHZvaWQpMCkKICNkZWZpbmUgREVCVUdfTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAg
ICAgICgodm9pZCkwKQogCisjZGVmaW5lIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoLi4uKSAgICAg
KCh2b2lkKTApCisjZGVmaW5lIEVSUk9SX0xPR19JRl9QT1NTSUJMRSguLi4pICAgICAgKCh2b2lk
KTApCisjZGVmaW5lIFdBUk5JTkdfTE9HX0lGX1BPU1NJQkxFKC4uLikgICAgKCh2b2lkKTApCisj
ZGVmaW5lIElORk9fTE9HX0lGX1BPU1NJQkxFKC4uLikgICAgICAgKCh2b2lkKTApCisjZGVmaW5l
IERFQlVHX0xPR19JRl9QT1NTSUJMRSguLi4pICAgICAgKCh2b2lkKTApCisjZGVmaW5lIFdJTExf
TE9HX0lGX1BPU1NJQkxFKF9sZXZlbF8pICAgKCh2b2lkKTApCisKICNlbmRpZiAvLyBSRUxFQVNF
X0xPR19ESVNBQkxFRAogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCmluZGV4IGM1NWJlMDY0MjE2NTAwZWQwYjI3ZDVhOWU5Y2M5NjIxZjdhNGEw
MzguLmEyMDNhOTJkNzA2ZjBiZWMwODMyNzhmYzlhNTc0NzVkYWE0ZTNjMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQyLDYgKzQyLDgg
QEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgor
I2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMTIgKzY0LDE1IEBAIFJlZjxDRE0+
IENETTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAKIENETTo6Q0RNKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQpCisgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxw
ZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkK
IHsKICAgICBBU1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAgICAgZm9yIChh
dXRvKiBmYWN0b3J5IDogQ0RNRmFjdG9yeTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpKSB7CiAgICAg
ICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7CiAgICAgICAg
ICAgICBtX3ByaXZhdGUgPSBmYWN0b3J5LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICAgICAg
ICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZpZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkNThjYjBmZWUzMzMxYTg1YTgyOTNkYWYxZGY3
YzBjNDBhMTNjZGZiLi4zZDc2OWFjMTg3NjcxY2MzNzJmYTQwNTA5NGVhY2RlYTIyZTk5MzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTQwLDYg
KzQwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeTsKQEAgLTgwLDYgKzg0LDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBDRE0oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSk7CiAKKyAgICBSZWY8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1f
bG9nSWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaAppbmRleCAzYTY1YzdmNDQyODQyMDU2NWVi
Y2ZmY2I2YmEzYTgzNmI0NjZkMTU1Li4yMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjVi
ZmI3YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmgKQEAgLTMwLDE1ICszMCwyMCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAotY2xhc3MgQ0RNQ2xpZW50IHsKK2NsYXNzIENETUNsaWVudCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1D
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRv
UmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xp
ZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAKaW5kZXggODlmMGU3MDU1MGU5MWU2OTZkNTliNzk3OTE5ZTA5YmZhMjE3
MmU1Mi4uNWZmNDM2ZjFmNjU5ZDI2ZjU0NzhhNjFmMDYwNzJkNGY3MWRlYThlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcApAQCAtNjQsNyArNjQsMTAgQEAgUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFL
ZXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2UKIAog
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBi
b29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwg
UmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9s
b2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoa2V5cyA/IGtl
eXMtPm5leHRDaGlsZElkZW50aWZpZXIoKSA6IG51bGxwdHIpCisjZW5kaWYKICAgICAsIG1fa2V5
cyhXVEZNb3ZlKGtleXMpKQogICAgICwgbV9leHBpcmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkpCiAgICAgLCBtX2Nsb3NlZFByb21pc2UobWFrZVVuaXF1ZVJl
ZjxDbG9zZWRQcm9taXNlPigpKQpAQCAtOTgsNiArMTAxLDkgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBr
ZXlzLAogICAgIFVOVVNFRF9QQVJBTShtX2Nsb3NlZCk7CiAgICAgVU5VU0VEX1BBUkFNKG1fdW5p
bml0aWFsaXplZCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+c2V0TG9nZ2VyKG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZpZXIpOworI2VuZGlmCiAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnNldENsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaAppbmRleCA0MDUyMzQ3NTViMjVmOTg3NWEwMzIzNzFiNDViNWUzNTRjYjBj
MzhhLi5iNmFjZTM1ODllYzhhZGNkOWE4NTA1MDhkMTFkZTM3ZTRlM2RiYmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKQEAgLTQzLDkgKzQzLDExIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBMb2dnZXI7CiB9CisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMTMsMTAgKzExNSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFdURjo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQogICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRpYUtleVNlc3Npb24iOyB9CiAg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwotICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0jZW5kaWYKKyAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAK
ICAgICBSZWY8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyNlbmRpZgorCiAgICAgV2Vha1B0cjxNZWRpYUtleXM+IG1fa2V5czsKICAgICBT
dHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgZG91YmxlIG1fZXhwaXJhdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nl
c3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5
c3RlbUFjY2Vzcy5jcHAKaW5kZXggN2ViN2IyMDIzNWUxNWE1OTEwM2JiMThhMDNlZjNmYTEyYmQz
N2MzNi4uZGUyYzA5ZWNjZDYzNjU1YTYyMzQ0NDljM2NkNzI1MjBmYzQ4ZDQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNETS5o
IgogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCiAj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCkBAIC01NCw3ICs1NSw3IEBAIE1lZGlhS2V5U3lzdGVtQWNj
ZXNzOjpNZWRpYUtleVN5c3RlbUFjY2Vzcyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTWVkaWFL
ZXlTeXN0CiAKIE1lZGlhS2V5U3lzdGVtQWNjZXNzOjp+TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE1lZGlhS2V5U3lzdGVtQWNjZXNz
OjpjcmVhdGVNZWRpYUtleXMoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS8jZG9tLW1lZGlha2V5c3lzdGVtYWNjZXNzLWNyZWF0ZW1lZGlha2V5cwogICAgIC8vIFcz
QyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC02Miw3ICs2Myw3IEBAIHZvaWQg
TWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIExldCBwcm9t
aXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gMi4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMg
aW4gcGFyYWxsZWw6Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVl
VGFzayhbdGhpcywgZG9jdW1lbnQgPSBtYWtlUmVmKGRvY3VtZW50KSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldICgpIG11dGFibGUgewogICAgICAgICAvLyAyLjEuIExldCBjb25maWd1cmF0
aW9uIGJlIHRoZSB2YWx1ZSBvZiB0aGlzIG9iamVjdCdzIGNvbmZpZ3VyYXRpb24gdmFsdWUuCiAg
ICAgICAgIC8vIDIuMi4gTGV0IHVzZSBkaXN0aW5jdGl2ZSBpZGVudGlmaWVyIGJlIHRydWUgaWYg
dGhlIHZhbHVlIG9mIGNvbmZpZ3VyYXRpb24ncyBkaXN0aW5jdGl2ZUlkZW50aWZpZXIgbWVtYmVy
IGlzICJyZXF1aXJlZCIgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgYm9vbCB1c2VEaXN0
aW5jdGl2ZUlkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc3RpbmN0aXZlSWRlbnRpZmll
ciA9PSBNZWRpYUtleXNSZXF1aXJlbWVudDo6UmVxdWlyZWQ7CkBAIC04Niw3ICs4Nyw3IEBAIHZv
aWQgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgICAgIGF1dG8gYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
ID0gdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyID8gQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVyczo6WWVzIDogQ0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVyczo6Tm87CiAgICAgICAgIGF1dG8gYWxsb3dQZXJzaXN0ZW50U3RhdGUgPSBwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkID8gQ0RNSW5zdGFuY2U6OkFsbG93UGVyc2lzdGVudFN0YXRlOjpZZXMgOiBD
RE1JbnN0YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6Ok5vOwogCi0gICAgICAgIGluc3RhbmNl
LT5pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlvbiwgYWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW3Nlc3Npb25UeXBlcyA9
IG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVt
ZW50YXRpb24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAg
ICAgIGluc3RhbmNlLT5pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oKm1fY29uZmlndXJhdGlv
biwgYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgW2Rv
Y3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCksIHNlc3Npb25UeXBlcyA9IG1fY29uZmlndXJhdGlv
bi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVtZW50YXRpb24uY29weVJl
ZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGlu
c3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoc3Vj
Y2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC05OSw3ICsxMDAsNyBAQCB2b2lkIE1lZGlhS2V5U3lzdGVtQWNjZXNzOjpjcmVhdGVNZWRpYUtl
eXMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAgICAgLy8gMi4xMC4z
LiBMZXQgdGhlIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGJlIGJlIHRoZSB2YWx1ZSBv
ZiBjb25maWd1cmF0aW9uJ3Mgc2Vzc2lvblR5cGVzIG1lbWJlci4KICAgICAgICAgICAgIC8vIDIu
MTAuNC4gTGV0IHRoZSBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgYmUgdGhpcyBvYmplY3QncyBj
ZG0gaW1wbGVtZW50YXRpb24gdmFsdWUuCiAgICAgICAgICAgICAvLyAyLjEwLjUuIExldCB0aGUg
Y2RtIGluc3RhbmNlIHZhbHVlIGJlIGluc3RhbmNlLgotICAgICAgICAgICAgYXV0byBtZWRpYUtl
eXMgPSBNZWRpYUtleXM6OmNyZWF0ZSh1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdU
Rk1vdmUoaW5zdGFuY2UpKTsKKyAgICAgICAgICAgIGF1dG8gbWVkaWFLZXlzID0gTWVkaWFLZXlz
OjpjcmVhdGUoZG9jdW1lbnQsIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgcGVyc2lzdGVudFN0
YXRlQWxsb3dlZCwgc2Vzc2lvblR5cGVzLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92
ZShpbnN0YW5jZSkpOwogCiAgICAgICAgICAgICAvLyAyLjExLiBSZXNvbHZlIHByb21pc2Ugd2l0
aCBtZWRpYSBrZXlzLgogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5cz4+KFdURk1vdmUobWVkaWFLZXlzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3lzdGVtQWNjZXNzLmgKaW5kZXggNGY1YTE1NWM2ODBkOWVmNDE3NDYwMDNjNzcyODZhNGVmODVh
M2NjNi4uNTQ0OGY0MDM3MDllNzdmNTU2YWEyNmQ3MTdiYzQwMjUwNjE1ZmQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTeXN0ZW1BY2Nlc3MuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENETTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKK2NsYXNzIERvY3VtZW50OwogY2xh
c3MgTWVkaWFLZXlzOwogCiBjbGFzcyBNZWRpYUtleVN5c3RlbUFjY2VzcyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5U3lzdGVtQWNjZXNzPiB7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0
ZW07IH0KICAgICBjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGdldENvbmZpZ3Vy
YXRpb24oKSBjb25zdCB7IHJldHVybiAqbV9jb25maWd1cmF0aW9uOyB9Ci0gICAgdm9pZCBjcmVh
dGVNZWRpYUtleXMoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBjcmVhdGVNZWRp
YUtleXMoRG9jdW1lbnQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBNZWRpYUtleVN5c3RlbUFjY2Vzcyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiYsIFJlZjxDRE0+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNz
LmlkbAppbmRleCAxYmMxZDI3NGNkZDU5MDM1YzgyMTM2NzhmMmJhYTRiZjQ1NjMyODI4Li5iNGFh
MzY3YTIwZDM3Y2QyZGRjYTE2NjBiNWJkYjcyY2IwMmZjNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lzdGVt
QWNjZXNzLmlkbApAQCAtMzQsNSArMzQsNSBAQAogXSBpbnRlcmZhY2UgTWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5U3lzdGVtOwogICAg
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBnZXRDb25maWd1cmF0aW9uKCk7Ci0gICAgUHJv
bWlzZTxNZWRpYUtleXM+IGNyZWF0ZU1lZGlhS2V5cygpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dF0gUHJvbWlzZTxNZWRpYUtleXM+IGNyZWF0ZU1lZGlhS2V5cygpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA5
YThjY2M1ZjBkZmM1OTI4ZDhlMDVjNzRhMjA1ZDQzMDU0MDA0NTI1Li5hODljZDQwMDNkNzFlZWFm
OTEwN2E0NTdiNDQzZmI3ZTMwYzU1MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC00MCwyNiArNDAsMzEgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+Ci1pbmxpbmUgdm9pZCBpbmZvTG9nKExvZ2dlciYgbG9nZ2VyLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykKLXsKLSNpZiAhTE9HX0RJU0FCTEVEIHx8ICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGxvZ2dlci5pbmZvKExvZ0VNRSwgYXJndW1lbnRzLi4u
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGxvZ2dlcik7CisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECitzdGF0aWMgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ0VN
RTsgfQorc3RhdGljIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIHsgcmV0dXJuICJNZWRpYUtl
eXMiOyB9CiAjZW5kaWYKLX0KIAotTWVkaWFLZXlzOjpNZWRpYUtleXMoYm9vbCB1c2VEaXN0aW5j
dGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9y
PE1lZGlhS2V5U2Vzc2lvblR5cGU+JiBzdXBwb3J0ZWRTZXNzaW9uVHlwZXMsIFJlZjxDRE0+JiYg
aW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkKK01lZGlhS2V5czo6
TWVkaWFLZXlzKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vz
c2lvblR5cGU+JiBzdXBwb3J0ZWRTZXNzaW9uVHlwZXMsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRp
b24sIFJlZjxDRE1JbnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICA6IG1fdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyKHVzZURpc3RpbmN0aXZlSWRlbnRpZmllcikKICAgICAsIG1fcGVyc2lzdGVudFN0
YXRlQWxsb3dlZChwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKQogICAgICwgbV9zdXBwb3J0ZWRTZXNz
aW9uVHlwZXMoc3VwcG9ydGVkU2Vzc2lvblR5cGVzKQogICAgICwgbV9pbXBsZW1lbnRhdGlvbihX
VEZNb3ZlKGltcGxlbWVudGF0aW9uKSkKICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5j
ZSkpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5s
b2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxwZXI6OnVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKKyNlbmRpZgogeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1f
aW5zdGFuY2UtPnNldExvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSwgbV9sb2dJZGVudGlmaWVyKTsK
KyNlbmRpZgorICAgIG1faW5zdGFuY2UtPnNldENsaWVudChtYWtlV2Vha1B0cih0aGlzKSk7CiB9
CiAKIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpID0gZGVmYXVsdDsKQEAgLTY4LDI2ICs3MywyNSBA
QCBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgTQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtc2V0c2VydmVyY2VydGlmaWNhdGUKICAg
ICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJF
TUUgLSBjaGVjayBpZiBhIG5ldyBzZXNzaW9uIGNhbiBiZSBjcmVhdGVkIik7Ci0gICAgYXV0byBp
ZGVudGlmaWVyID0gV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYUtleXMiLCBf
X2Z1bmNfXywgdGhpcyk7Ci0gICAgUmVmPExvZ2dlcj4gbG9nZ2VyID0gZG9jdW1lbnQubG9nZ2Vy
KCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiRU1FIC0gY2hlY2sgaWYgYSBuZXcgc2Vzc2lvbiBjYW4gYmUgY3JlYXRlZCIp
OwogCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBt
dXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0J3Mg
c3VwcG9ydGVkIHNlc3Npb24gdHlwZXMgdmFsdWUgZG9lcyBub3QgY29udGFpbiBzZXNzaW9uVHlw
ZSwgdGhyb3cgW1dlYklETF0gYSBOb3RTdXBwb3J0ZWRFcnJvci4KICAgICBpZiAoIW1fc3VwcG9y
dGVkU2Vzc2lvblR5cGVzLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkgewotICAgICAgICBpbmZvTG9n
KGxvZ2dlciwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogdW5zdXBwb3J0ZWQgc2Vzc2lvblR5cGU6
ICIsIHNlc3Npb25UeXBlKTsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIkV4Y2VwdGlv
bjogdW5zdXBwb3J0ZWQgc2Vzc2lvblR5cGU6ICIsIHNlc3Npb25UeXBlKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbihOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgfQogCiAgICAgLy8gMi4gSWYg
dGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgTWVkaWFLZXlTZXNzaW9uIG9wZXJh
dGlvbnMgaW4gdGhlIGN1cnJlbnQgc3RhdGUsIHRocm93IFtXZWJJRExdIGFuIEludmFsaWRTdGF0
ZUVycm9yLgogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKSB7
Ci0gICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiBpbXBsZW1l
bnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNlc3Npb25zIik7CisgICAgICAgIElORk9fTE9HKGlk
ZW50aWZpZXIsICJFeGNlcHRpb246IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc2Vz
c2lvbnMiKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7CiAg
ICAgfQogCiAgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNz
aW9uKCk7CiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pIHsKLSAgICAgICAgaW5mb0xvZyhsb2dn
ZXIsIGlkZW50aWZpZXIsICJFeGNlcHRpb246IGNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwor
ICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiBjb3VsZCBub3QgY3JlYXRl
IHNlc3Npb24iKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7
CiAgICAgfQogCkBAIC05NSwzMCArOTksMjkgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vz
c2lvbj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIE0KICAg
ICAvLyBOT1RFOiBDb250aW51ZWQgaW4gTWVkaWFLZXlTZXNzaW9uLgogICAgIC8vIDQuIFJldHVy
biBzZXNzaW9uLgogICAgIGF1dG8gc2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGRv
Y3VtZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBlLCBtX3VzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNlU2Vzc2lvbi5y
ZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIiBDcmVh
dGVkIHNlc3Npb24iKTsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiQ3JlYXRlZCBzZXNzaW9u
Iik7CiAgICAgbV9zZXNzaW9ucy5hcHBlbmQoc2Vzc2lvbi5jb3B5UmVmKCkpOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQogCi12b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoY29uc3QgQnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtc2V0c2VydmVyY2VydGlmaWNhdGUKICAg
ICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIGF1dG8gaWRlbnRp
ZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFLZXlzIiwgX19mdW5j
X18sIHRoaXMpOwotICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3VtZW50LmxvZ2dlcigpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAKICAgICAvLyBXaGVuIHRoaXMg
bWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CiAgICAgLy8gMS4gSWYgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVz
ZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgZG9lcyBub3Qg
c3VwcG9ydAogICAgIC8vICAgIHNlcnZlciBjZXJ0aWZpY2F0ZXMsIHJldHVybiBhIHByb21pc2Ug
cmVzb2x2ZWQgd2l0aCBmYWxzZS4KICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkpIHsKLSAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZp
ZXIsICJSZWplY3RlZDogIXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkiKTsKKyAgICAgICAg
SU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiAhc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDIuIElmIHNlcnZlckNlcnRpZmljYXRlIGlz
IGFuIGVtcHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXcgYSBu
ZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAoIXNlcnZlckNlcnRpZmljYXRlLmxlbmd0
aCgpKSB7Ci0gICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGVt
cHR5IHNlcnZlckNlcnRpZmljYXRlIik7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJS
ZWplY3RlZDogZW1wdHkgc2VydmVyQ2VydGlmaWNhdGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzAsMTYgKzEzMywx
NiBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNlcgogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgogCiAgICAgLy8gNS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0g
aW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0ZS4KLSAgICBtX2luc3RhbmNlLT5zZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBsb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoYXV0byBzdWNjZXNzKSB7CisgICAgbV9pbnN0YW5jZS0+c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0ZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKGF1dG8gc3VjY2VzcykgewogICAgICAgICAvLyA1LjIuIElmIHRo
ZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4
Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgogICAgICAg
ICAvLyA1LjEuIFtFbHNlLF0gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KICAgICAgICAgaWYg
KHN1Y2Nlc3MgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgewotICAgICAgICAgICAgaW5mb0xvZyhs
b2dnZXIsIGlkZW50aWZpZXIsICJSZWplY3RlZCwgc2V0U2VydmVyQ2VydGlmaWNhdGUoKSBmYWls
ZWQiKTsKKyAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSAtIFJlamVj
dGVkLCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGZhaWxlZCIpOwogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiUmVzb2x2ZWQiKTsK
KyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIC0gUmVzb2x2ZWQiKTsKICAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKICAgICB9KTsKIApAQCAt
MTQ4LDIwICsxNTEsMjAgQEAgdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgQnVmZmVyU291cmNlJiBzZXIKIAogdm9pZCBNZWRpYUtl
eXM6OmF0dGFjaENETUNsaWVudChDRE1DbGllbnQmIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoIW1f
Y2RtQ2xpZW50cy5jb250YWlucygmY2xpZW50KSk7Ci0gICAgbV9jZG1DbGllbnRzLmFwcGVuZCgm
Y2xpZW50KTsKKyAgICBBU1NFUlQoIW1fY2RtQ2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAg
ICBtX2NkbUNsaWVudHMuYWRkKGNsaWVudCk7CiB9CiAKIHZvaWQgTWVkaWFLZXlzOjpkZXRhY2hD
RE1DbGllbnQoQ0RNQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKG1fY2RtQ2xpZW50cy5j
b250YWlucygmY2xpZW50KSk7Ci0gICAgbV9jZG1DbGllbnRzLnJlbW92ZUZpcnN0KCZjbGllbnQp
OworICAgIEFTU0VSVChtX2NkbUNsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jZG1D
bGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCiB2b2lkIE1lZGlhS2V5czo6YXR0ZW1wdFRvUmVz
dW1lUGxheWJhY2tPbkNsaWVudHMoKQogewotICAgIGZvciAoYXV0byogY2RtQ2xpZW50IDogbV9j
ZG1DbGllbnRzKQotICAgICAgICBjZG1DbGllbnQtPmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrSWZOZWNlc3NhcnkoKTsKKyAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKKyAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNr
SWZOZWNlc3NhcnkoKTsKIH0KIAogYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNv
bnN0CkBAIC0xNzIsNiArMTc1LDE5IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMo
KSBjb25zdAogICAgICAgICB9KTsKIH0KIAordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit7CisgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBt
X2NkbUNsaWVudHMpCisgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsK
K30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorY29uc3Qgdm9pZCogTWVkaWFLZXlzOjpu
ZXh0Q2hpbGRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nZ2VySGVscGVyOjpj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fY2hpbGRJZGVudGlmaWVyU2Vl
ZCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDNhYjY4NGM4YWNkNDkyYjM0ZGJlZmE5NTE2YzJj
YzJiZDE5Mzc4OGMuLmNlOWRlMTUwMjE1Y2E4NjMyMTc1YzMxNjBiZjZmYWUwNTYxZjY0MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aApAQCAtMzAsMTIgKzMwLDE4IEBACiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisj
aW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIk1lZGlhS2V5U2Vzc2lvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIExvZ2dlcjsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE07CkBAIC00NiwxOSArNTIsMjEgQEAg
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYUtleVNl
c3Npb247CiAKLWNsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5cz4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYUtleXM+IHsKK2NsYXNzIE1lZGlhS2V5cyBmaW5h
bAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlzPgorICAgICwgcHVibGljIENETUlu
c3RhbmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB1c2luZyBLZXlTZXNzaW9uVHlwZSA9IE1lZGlh
S2V5U2Vzc2lvblR5cGU7CiAKLSAgICBzdGF0aWMgUmVmPE1lZGlhS2V5cz4gY3JlYXRlKGJvb2wg
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNv
bnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBS
ZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCisg
ICAgc3RhdGljIFJlZjxNZWRpYUtleXM+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wg
dXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNv
bnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBS
ZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleXModXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBzdXBwb3J0ZWRTZXNzaW9uVHlw
ZXMsIFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKGluc3RhbmNlKSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleXMoZG9jdW1lbnQsIHVzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgc3VwcG9ydGVkU2Vzc2lvblR5cGVz
LCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZSkpKTsKICAgICB9CiAK
ICAgICB+TWVkaWFLZXlzKCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9u
Pj4gY3JlYXRlU2Vzc2lvbihEb2N1bWVudCYsIE1lZGlhS2V5U2Vzc2lvblR5cGUpOwotICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoRG9jdW1lbnQmLCBjb25zdCBCdWZmZXJTb3VyY2UmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBh
dHRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CiAgICAgdm9pZCBkZXRhY2hDRE1DbGllbnQoQ0RN
Q2xpZW50Jik7CkBAIC02OCw4ICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2UmIGNk
bUluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQogICAgIGNvbnN0IENETUluc3RhbmNl
JiBjZG1JbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KIAorICAgIGNvbnN0
IHZvaWQqIG5leHRDaGlsZElkZW50aWZpZXIoKSBjb25zdDsKKwogcHJvdGVjdGVkOgotICAgIE1l
ZGlhS2V5cyhib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYm
LCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0
IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5j
ZT4mJik7CisKKyAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAorICAgIHZvaWQgdW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFdURjo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyNl
bmRpZgogCiAgICAgYm9vbCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICBib29sIG1f
cGVyc2lzdGVudFN0YXRlQWxsb3dlZDsKQEAgLTc4LDcgKzk2LDEzIEBAIHByb3RlY3RlZDoKICAg
ICBSZWY8Q0RNSW5zdGFuY2U+IG1faW5zdGFuY2U7CiAKICAgICBWZWN0b3I8UmVmPE1lZGlhS2V5
U2Vzc2lvbj4+IG1fc2Vzc2lvbnM7Ci0gICAgVmVjdG9yPENETUNsaWVudCo+IG1fY2RtQ2xpZW50
czsKKyAgICBXZWFrSGFzaFNldDxDRE1DbGllbnQ+IG1fY2RtQ2xpZW50czsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIG11dGFibGUgdWludDY0X3QgbV9jaGlsZElk
ZW50aWZpZXJTZWVkIHsgMCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5pZGwKaW5kZXggZDVjNDJkYTkxNmEwNWVkZWZjNjlhZWIxM2M5YjMzOGYzYWQ2MTNhYi4uNzQ2
MzI0MmM2ODEzMGIwOTZlZDk3NWNhNTNlOWYzMmYwMzhhOTBiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMzAsOCAr
MzAsNyBAQAogICAgIENvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQSwKICAgICBFbmFibGVkQXRS
dW50aW1lPUVuY3J5cHRlZE1lZGlhQVBJLAogICAgIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5F
bmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnQsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwK
IF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJv
d0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKLSAgICBbQ2FsbFdpdGg9
RG9jdW1lbnRdIFByb21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNl
IHNlcnZlckNlcnRpZmljYXRlKTsKKyAgICBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmlj
YXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRleCBlZWYzNTg0
NDY4MGM3NjY1NTA3Y2MwYTc2YjY3Y2RhZWY3MDE3ZjFlLi5kZTFjOTIxY2M5ZWJmMmVhZmM4ZDk2
YzZlZTAwZDFlNmQ0MWE0MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtMTc0LDYgKzE3NCw3IEBAIE5TX0FTU1VNRV9O
T05OVUxMX0VORAogQHByb3BlcnR5IChyZWFkb25seSwgbnVsbGFibGUpIE5TRGF0YSAqY29udGVu
dFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcjsKIC0gKHZvaWQpZXhwaXJlOwogLSAodm9pZClw
cm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRoSWRlbnRpZmllcjoobnVsbGFibGUgaWQpaWRlbnRp
ZmllciBpbml0aWFsaXphdGlvbkRhdGE6KG51bGxhYmxlIE5TRGF0YSAqKWluaXRpYWxpemF0aW9u
RGF0YSBvcHRpb25zOihudWxsYWJsZSBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb3B0
aW9uczsKKy0gKHZvaWQpYXNzb2NpYXRlQ29udGVudEtleVJlcXVlc3Q6KG5vbm51bGwgQVZDb250
ZW50S2V5UmVxdWVzdCAqKWNvbnRlbnRLZXlSZXF1ZXN0OwogQGVuZAogCiBAaW50ZXJmYWNlIEFW
Q29udGVudEtleVNlc3Npb24gKEFWQ29udGVudEtleUdyb3VwX1N1cHBvcnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5ZjRlZGY1ODlhNDUxYTExN2UzMzcw
ZmE1ZDA5OTEwNmFjYTY3ZWNkLi42MzU3OTgwMjNiZTE0ZGExYmIyMjZmZThjOWJmMjM5YjgyZWNk
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI4NjUs
NiArMjg2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jl
c3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQoreworICAgIG1lZGlhUGxheWVySW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYzg3NzkxZGE5ZDYwMTRkODhjZWI0
ZTdmYWVkYTJhYzA5YzU4N2ZlNC4uYmRiZmU1NGUyYjU5M2YwZTBjODk3YTk2NWU1ZjYzNDZkZDA1
OGFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwMiw2ICs3
MDIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRB
dHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7CisgICAgdm9pZCBjZG1D
bGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAppbmRleCBm
YjM1MGQ0ODU1YTFhYjMzYjFiNmQxYzRkY2U3M2E3ZTcyNmE2NTMxLi40YWEzMzdlZTUxNjhiOWQ2
YmFmM2NkYmJmNDNlYzdiYzI4MTgzODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIExvZ2dlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1Q
cml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmgKaW5kZXggNzM0YzkzNTA3NTZkNzlmNzRkOTA2NWUyNDAxYzJlZThhYmMx
MzA3Ny4uODIxMmU2YjQxNjkxNTlkZTkxYzA1MTY2MGJhYmE2MGJkZmM4MzBhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
CkBAIC0zNiw2ICszNiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTG9n
Z2VyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDEyICs0OCwyNCBAQCBjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKIAorY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKK307CisKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8gYSBDRE1J
bnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCiAvLyBtYWluLXRocmVhZCBvbmx5IQogY2xh
c3MgQ0RNSW5zdGFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDRE1JbnN0YW5jZT4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlKCkgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCB2
b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIo
V1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisKICAgICBlbnVtIGNsYXNzIEltcGxlbWVu
dGF0aW9uVHlwZSB7CiAgICAgICAgIE1vY2ssCiAgICAgICAgIENsZWFyS2V5LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaAppbmRleCBkNDY0Yjc0ZDFjNzIwMmE5YTMzOWRmZjY1ZDA2ZTA4MjA4OTY5ZGI0
Li43YTU0NmE1NDQ2MWM0MTM3MDY3NmY4M2RmMTAyZWVkMjI0YjI0NDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZVNlc3Npb24uaApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTgs
NiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGljZW5zZVR5cGUgPSBDRE1TZXNzaW9uVHlw
ZTsKICAgICB1c2luZyBNZXNzYWdlVHlwZSA9IENETU1lc3NhZ2VUeXBlOwogCisgICAgdmlydHVh
bCB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH0KKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggZjhk
MmMxMzliMDdhMzNjN2JiM2QzMjM4YzYxOGUxN2ZiOGY0M2E0MS4uZDY4NDJlYWU3MzViNmY1N2E3
ZTRhYWNjNGVjNjNlNGYzN2ZiYzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgTG9nZ2VyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNDMsNiArNDcsOCBAQCBjbGFzcyBDRE1Q
cml2YXRlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETVByaXZhdGU+IHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKKwogICAgIGVudW0g
Y2xhc3MgTG9jYWxTdG9yYWdlQWNjZXNzIDogYm9vbCB7CiAgICAgICAgIE5vdEFsbG93ZWQsCiAg
ICAgICAgIEFsbG93ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAppbmRleCA1MDAwMWY2NTU1NTExYTA1YjkxZGQ2Y2Y0ZTc3OGVmMGRhY2RjZjM5Li43YjQyZmNj
ZDVlMWNmMjUwMTQ4NGExZTEyNTkwZTlhMDdhMDViNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTM3LDExICszNywxMyBAQAogI2luY2x1ZGUgIklT
T1NjaGVtZVR5cGVCb3guaCIKICNpbmNsdWRlICJJU09UcmFja0VuY3J5cHRpb25Cb3guaCIKICNp
bmNsdWRlICJJbml0RGF0YVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZm
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi9BbGdvcml0aG1zLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKQEAgLTU1LDYgKzU3LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJu
IExvZ0VNRTsgfQorCiBjb25zdCBWZWN0b3I8Rm91ckNDPiYgQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjp2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFZlY3RvcjxGb3VyQ0M+PiB2YWxpZFNjaGVtZXMgPSBWZWN0b3I8Rm91ckND
Pih7CkBAIC0yNTAsNiArMjU0LDEyIEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCkgPSBkZWZhdWx0
OwogQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjp+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nKCkgPSBkZWZhdWx0OwogCit2b2lkIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2V0
TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQoreworICAg
IG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dnZXIpOworICAgIG1fbG9nSWRlbnRpZmllciA9IGxv
Z0lkZW50aWZpZXI7Cit9CisKIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewogICAgIHJldHVybiBj
b3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwpAQCAtMjU3LDMzICsyNjcsNDcgQEAg
VmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikgY29uc3QKIHsKLSAgICBpZiAoIVdURjo6YW55T2YoY29uZmlndXJhdGlv
bi5pbml0RGF0YVR5cGVzLCBbXSAoYXV0byYgaW5pdERhdGFUeXBlKSB7IHJldHVybiB2YWxpZElu
aXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOyB9KSkKKyAgICBpZiAoIVdURjo6
YW55T2YoY29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLCBbXSAoYXV0byYgaW5pdERhdGFUeXBl
KSB7IHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOyB9
KSkgeworICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxz
ZSwgbm8gaW5pdERhdGFUeXBlIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogCiAjaWYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIC8vIEZJWE1FOiB2ZXJp
ZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5vdCkgZXhwb3NlIGEg
ZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYgKGNvbmZpZ3VyYXRp
b24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKKyAg
ICBpZiAoY29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gQ0RNUmVxdWlyZW1l
bnQ6OlJlcXVpcmVkKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiZmFsc2UsIHJlcXVyaWVkIGRpc3RpbmN0aXZlSWRlbnRpZmllciBub3Qgc3VwcG9ydGVk
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5wZXJzaXN0
ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCkpCisgICAgfQor
CisgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50
OjpSZXF1aXJlZCAmJiAhQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnN1cHBv
cnRzUGVyc2lzdGFibGVTdGF0ZSgpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiZmFsc2UsIHJlcXVpcmVkIHBlcnNpc3RlbnRTdGF0ZSBub3Qgc3VwcG9y
dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBpZiAoY29uZmlndXJh
dGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3RlbnRMaWNl
bnNlKQogICAgICAgICAmJiAhY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RN
U2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkKLSAgICAgICAgJiYgIUNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCkpCisgICAgICAgICYmICFD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0ZW50S2V5
cygpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFs
c2UsIHNlc3Npb25UeXBlIFBlcnNpc3RlbnRMaWNlbnNlIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGlmICghY29uZmlndXJhdGlvbi5hdWRpb0Nh
cGFiaWxpdGllcy5pc0VtcHR5KCkKICAgICAgICAgJiYgIVdURjo6YW55T2YoY29uZmlndXJhdGlv
bi5hdWRpb0NhcGFiaWxpdGllcywgW10oYXV0byYgY2FwYWJpbGl0eSkgewogICAgICAgICAgICAg
cmV0dXJuIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c01lZGlh
Q2FwYWJpbGl0eShjYXBhYmlsaXR5KTsKLSAgICAgICAgfSkpCisgICAgICAgIH0pKSB7CisgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIG5vIGF1ZGlv
IGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMuaXNFbXB0eSgpCiAg
ICAgICAgICYmICFXVEY6OmFueU9mKGNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMsIFtd
KGF1dG8mIGNhcGFiaWxpdHkpIHsKICAgICAgICAgICAgIHJldHVybiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY2FwYWJpbGl0eSk7
Ci0gICAgICAgIH0pKQorICAgICAgICB9KSkgeworICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIsICJmYWxzZSwgbm8gdmlkZW8gY29uZmlndXJhdGlvbiBzdXBw
b3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAorICAgIERFQlVHX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAidHJ1ZSwgc3VwcG9ydGVkIik7CiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKaW5kZXggMzg3YjlmOTI1YWQ3YWZiYWUyZDJjNTYxMmY4NGI0MzRjMGYx
MGY0ZS4uM2YzZGUyZjE3MGRiMmU4ZGZmYzE2ZjY5ODk3NmE1MmMxZDRlMWIxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTU1LDYgKzU1LDggQEAgcHVibGlj
OgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCisgICAgdm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dn
ZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKSBmaW5hbDsKKwogICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3Ry
aWN0aW9ucyhjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJp
Y3Rpb25zJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MCw2ICs4MiwxNCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3Ry
ZWFtaW5nU2NoZW1lcygpOworCitwcml2YXRlOgorICAgIFdURjo6TG9nZ2VyKiBsb2dnZXIoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZyI7IH0KKworICAgIFJlZlB0cjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggMDBiNmZiODIyMGNhN2YwNWMwOTFmMjY1Mzg2ZTI5OTJmNDBlNjNjMC4uMzY5MTg4ODY5NDIz
ZDQ3NGQ2Yzc2Nzc3Y2NmYzJjY2Q5M2FmMWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC00Miw2ICs0MiwxMCBAQCBPQkpDX0NMQVNTIE5TRXJyb3I7CiBPQkpDX0NMQVNTIE5TVVJMOwog
T0JKQ19DTEFTUyBXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZTsKIAorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOwpAQCAtNjcsNiAr
NzEsOCBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
KTsKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpID0g
ZGVmYXVsdDsKIAorICAgIHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcik7CisKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RhYmxlU3Rh
dGUoKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCk7CiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29uc3QgQ0RNTWVkaWFDYXBhYmlsaXR5
Jik7CkBAIC03OCw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRy
PENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOworICAgIHZvaWQgc2V0
Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJDbGllbnQoKSBmaW5hbDsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
ZmluYWw7CiAKQEAgLTg2LDYgKzk0LDggQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlciogc2Vy
dmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgp
OyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAorICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RG
b3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKTsKKwogICAgIC8vIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0
ZUNsaWVudAogICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCop
IGZpbmFsOwogICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4+JiYpIGZpbmFsOwpAQCAtMTAxLDE0ICsxMTEsMjMgQEAgcHVibGlj
OgogICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhj
b25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25z
dDsKKyAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Np
b25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKIAogcHJpdmF0ZToKKyAg
ICBXVEY6OkxvZ2dlciogbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07
CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyI7IH0KKworICAgIFdlYWtQdHI8
Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlT
ZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2Vy
dmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVl
IH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdlYWtQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9u
czsKKyAgICBIYXNoU2V0PFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gbV91bmV4cGVj
dGVkS2V5UmVxdWVzdHM7CisgICAgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiB9OwogCiBjbGFzcyBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgZmluYWwgOiBwdWJsaWMgQ0RN
SW5zdGFuY2VTZXNzaW9uLCBwdWJsaWMgQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDPiB7CkBAIC0xMTYsNiArMTM1LDggQEAgcHVibGljOgogICAgIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM+JiYpOwogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQygpOwogCisgICAgdm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXIm
LCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKTsKKwogICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOwpAQCAtMTQ5LDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlcXVlc3QmIG90aGVyKSBjb25zdCB7IHJldHVybiBpbml0VHlwZSA9PSBvdGhlci5p
bml0VHlwZSAmJiByZXF1ZXN0cyA9PSBvdGhlci5yZXF1ZXN0czsgfQogICAgIH07CiAKKyAgICBi
b29sIGhhc1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGJvb2wgZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKTsKICAgICBib29sIGlzTGljZW5zZVR5cGVT
dXBwb3J0ZWQoTGljZW5zZVR5cGUpIGNvbnN0OwpAQCAtMTU3LDYgKzE4MCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgbmV4dFJlcXVlc3QoKTsKICAgICBBVkNvbnRlbnRLZXlSZXF1ZXN0KiBsYXN0
S2V5UmVxdWVzdCgpIGNvbnN0OwogCisgICAgV1RGOjpMb2dnZXIqIGxvZ2dlcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9OworICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDIjsgfQorCiAgICAgUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDPiBtX2luc3RhbmNlOwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXBvcnRHcm91
cD4gbV9ncm91cDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9u
OwpAQCAtMTc3LDYgKzIwNCw5IEBAIHByaXZhdGU6CiAgICAgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
IG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrOwogICAgIENsb3NlU2Vzc2lvbkNhbGxiYWNrIG1fY2xv
c2VTZXNzaW9uQ2FsbGJhY2s7CiAgICAgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBtX3JlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2s7CisKKyAgICBSZWZQdHI8V1RGOjpMb2dnZXI+IG1fbG9nZ2Vy
OworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggMmE4YmIzOGM3MDMzMDdhNzJhNzEzNTEzZmE2
YjIzODQxNDNhYTFjOS4uODE5MzllYTcyYTIzYmE3ZjkyYjllNzc3NTQ1NzhhMDBlYzBiN2E0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgPHd0
Zi9BbGdvcml0aG1zLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3Rm
L0pTT05WYWx1ZXMuaD4KKyNpbXBvcnQgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0x
NjAsOCArMTYxLDM3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ0VNRTsgfQorCitzdGF0aWMgQXRv
bVN0cmluZyBpbml0VHlwZUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBpZiAoIVtyZXF1ZXN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3B0aW9u
cyldKSB7CisgICAgICAgIC8vIEFWQ29udGVudEtleVJlcXVlc3Qub3B0aW9ucyB3YXMgYWRkZWQg
aW4gMTAuMTQuNDsgaWYgd2UgYXJlIHJ1bm5pbmcgb24gYSBwcmV2aW91cyB2ZXJzaW9uCisgICAg
ICAgIC8vIHdlIGRvbid0IGhhdmUgc3VwcG9ydCBmb3IgJ2NlbmMnIGFueXdheSwgc28ganVzdCBh
c3N1bWUgJ3NpbmYnLgorICAgICAgICByZXR1cm4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzaW5mTmFtZSgpOworICAgIH0KKworQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJ
TgorICAgIGF1dG8gbnNJbml0VHlwZSA9IChOU1N0cmluZyopW3JlcXVlc3Qub3B0aW9ucyB2YWx1
ZUZvcktleTpJbml0aWFsaXphdGlvbkRhdGFUeXBlS2V5XTsKK0FMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECisgICAgaWYgKCFbbnNJbml0VHlwZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5n
LmNsYXNzXSkgeworICAgICAgICAvLyBUaGUgb25seSB3YXkgZm9yIGFuIGluaXRpYWxpemF0aW9u
IGRhdGEgdG8gZW5kIHVwIGhlcmUgd2l0aG91dCBhbiBhcHByb3ByaWF0ZSBrZXkgaW4KKyAgICAg
ICAgLy8gdGhlIG9wdGlvbnMgZGljdGlvbmFyeSBpcyBmb3IgdGhhdCBkYXRhIHRvIGhhdmUgYmVl
biBnZW5lcmF0ZWQgYnkgdGhlIEFWU3RyZWFtRGF0YVBhcnNlcgorICAgICAgICAvLyBhbmQgY3Vy
cmVudGx5LCB0aGUgb25seSBpbml0aWFsaXphdGlvbiBkYXRhIHN1cHBvcnRlZCBieSB0aGUgcGFy
c2VyIGlzIHRoZSAnc2luZicga2luZC4KKyAgICAgICAgcmV0dXJuIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2luZk5hbWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKK30KKwogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkgPSBkZWZhdWx0OwogCit2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dn
ZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVm
UHRyKGxvZ2dlcik7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKK30KKwog
QVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmNvbnRlbnRLZXlTZXNzaW9uKCkKIHsKICAgICBpZiAobV9zZXNzaW9uKQpAQCAtMTg5LDYgKzIx
OSwyMCBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7
CiB9CiAKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3sKKyAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIgPSBtX3VuZXhwZWN0ZWRLZXlSZXF1
ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5lbmQo
KTsgKytyZXF1ZXN0SXRlcikgeworICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnJlcXVlc3RJdGVy
OworICAgICAgICBhdXRvIHJlcXVlc3RUeXBlID0gaW5pdFR5cGVGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOworICAgICAgICBhdXRvKiByZXF1ZXN0SW5pdERhdGEgID0gcmVxdWVzdC5nZXQoKS5p
bml0aWFsaXphdGlvbkRhdGE7CisgICAgICAgIGlmIChpbml0RGF0YVR5cGUgIT0gcmVxdWVzdFR5
cGUgfHwgaW5pdERhdGEgIT0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVxdWVzdEluaXREYXRhKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiBtX3VuZXhwZWN0ZWRLZXlS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJdGVyKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6VXBk
YXRlUmVzcG9uc2VDb2xsZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtMjk1LDEyICszMzksMTQgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUsKIAogdm9p
ZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CisgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIp
OwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsK
ICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgc3RvcmFn
ZURpcmVjdG9yeSkKIHsKKyAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7
CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc3RvcmFn
ZVVSTCA9IG5pbDsKICAgICAgICAgcmV0dXJuOwpAQCAtMzM0LDYgKzM4MCwxNiBAQCBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKK3ZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNl
Q2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30K
Kwordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQo
KQoreworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKK30KKwogY29uc3QgU3RyaW5nJiBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3lzdGVtKCkgY29uc3QKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXlTeXN0ZW0geyAiY29tLmFwcGxlLmZwcyJf
cyB9OwpAQCAtMzUxLDQ0ICs0MDcsODEgQEAgc3RhdGljIEFWQ29udGVudEtleVJlcG9ydEdyb3Vw
KiBncm91cEZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKIAogdm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNl
c3Npb25Gb3JHcm91cChncm91cEZvclJlcXVlc3QocmVxdWVzdCkpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gc2Vzc2lvbkZvclJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgc2Vzc2lvbi0+
ZGlkUHJvdmlkZVJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gVW5leHBlY3RlZCByZXF1
ZXN0Iik7CisKKyAgICBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5hZGQocmVxdWVzdCk7CisKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGluaXRUeXBlRm9yUmVxdWVzdChyZXF1ZXN0KSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVxdWVzdC5pbml0aWFsaXphdGlvbkRhdGEpKTsKIH0KIAogdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxS
ZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+JiYgcmVxdWVzdHMpCiB7Ci0gICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yR3JvdXAoZ3JvdXBGb3JSZXF1ZXN0KHJlcXVlc3RzLmZp
cnN0KCkuZ2V0KCkpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JSZXF1ZXN0
KHJlcXVlc3RzLmZpcnN0KCkuZ2V0KCkpKSB7CiAgICAgICAgIHNlc3Npb24tPmRpZFByb3ZpZGVS
ZXF1ZXN0cyhXVEZNb3ZlKHJlcXVlc3RzKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAogdm9p
ZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5n
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gc2Vzc2lvbkZvckdyb3VwKGdyb3VwRm9yUmVxdWVzdChyZXF1ZXN0KSkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAg
ICBzZXNzaW9uLT5kaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgRVJST1JfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRy
b3BwaW5nIik7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVz
dCkKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JHcm91cChncm91cEZvclJl
cXVlc3QocmVxdWVzdCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvclJlcXVl
c3QocmVxdWVzdCkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVx
dWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBu
byByZXNwb25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQogCiB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKIHsKLSAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IHNlc3Npb25Gb3JHcm91cChncm91cEZvclJlcXVlc3QocmVxdWVzdCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvclJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAg
ICAgc2Vzc2lvbi0+ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QocmVxdWVzdCwgZXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgRVJS
T1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Np
b247IGRyb3BwaW5nIik7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7
Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yR3JvdXAoZ3JvdXBGb3JSZXF1ZXN0
KHJlcXVlc3QpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JSZXF1ZXN0KHJl
cXVlc3QpKSB7CiAgICAgICAgIHNlc3Npb24tPnJlcXVlc3REaWRTdWNjZWVkKHJlcXVlc3QpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
RVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNl
c3Npb247IGRyb3BwaW5nIik7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1ZXN0
ICpyZXF1ZXN0LCBOU1N0cmluZyAqcmVhc29uKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c2Vzc2lvbkZvckdyb3VwKGdyb3VwRm9yUmVxdWVzdChyZXF1ZXN0KSkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBzZXNzaW9uRm9yUmVxdWVzdChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIHNl
c3Npb24tPnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihyZXF1ZXN0LCByZWFzb24pOworCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC00MDEsOCArNDk0LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChOU0RhdGEgKnNl
c3NpCiAKIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKiBncm91cCwgTlNE
YXRhICpzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Np
b25Gb3JHcm91cChncm91cCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yR3Jv
dXAoZ3JvdXApKSB7CiAgICAgICAgIHNlc3Npb24tPmdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFu
Z2VkKGdyb3VwLCBzZXNzaW9uSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAog
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkK
QEAgLTQyOCw2ICs1MjYsMTggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAorQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbkZvclJlcXVlc3Qo
QVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkgY29uc3QKK3sKKyAgICBhdXRvIGluZGV4ID0g
bV9zZXNzaW9ucy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvIHNlc3Npb24pIHsKKyAgICAgICAgcmV0
dXJuIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzUmVxdWVzdChyZXF1ZXN0KTsKKyAgICB9KTsKKwor
ICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG1fc2Vzc2lvbnNbaW5k
ZXhdLmdldCgpOworCisgICAgcmV0dXJuIHNlc3Npb25Gb3JHcm91cChncm91cEZvclJlcXVlc3Qo
cmVxdWVzdCkpOworfQorCiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yR3JvdXAo
QVZDb250ZW50S2V5UmVwb3J0R3JvdXAqIGdyb3VwKSBjb25zdAogewogICAgIGF1dG8gaW5kZXgg
PSBtX3Nlc3Npb25zLmZpbmRNYXRjaGluZyhbZ3JvdXBdIChhdXRvIHNlc3Npb24pIHsKQEAgLTQ1
MCw2ICs1NjAsMTMgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp+Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmcKICAgICBbbV9kZWxlZ2F0ZSBp
bnZhbGlkYXRlXTsKIH0KIAorCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihsb2dnZXIpOworICAgIG1fbG9n
SWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7Cit9CisKIHVzaW5nIEtleXMgPSBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OktleXM7CiBzdGF0aWMgS2V5cyBrZXlJ
RHNGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CkBAIC00NzMsMjcg
KzU5MCw2IEBAIHN0YXRpYyBLZXlzIGtleUlEc0ZvclJlcXVlc3QoY29uc3QgUmVxdWVzdCYgcmVx
dWVzdHMpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIEF0b21TdHJpbmcgaW5pdFR5
cGVGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFb
cmVxdWVzdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9wdGlvbnMpXSkgewotICAgICAg
ICAvLyBBVkNvbnRlbnRLZXlSZXF1ZXN0Lm9wdGlvbnMgd2FzIGFkZGVkIGluIDEwLjE0LjQ7IGlm
IHdlIGFyZSBydW5uaW5nIG9uIGEgcHJldmlvdXMgdmVyc2lvbgotICAgICAgICAvLyB3ZSBkb24n
dCBoYXZlIHN1cHBvcnQgZm9yICdjZW5jJyBhbnl3YXksIHNvIGp1c3QgYXNzdW1lICdzaW5mJy4K
LSAgICAgICAgcmV0dXJuIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKTsK
LSAgICB9Ci0KLUFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KLSAgICBhdXRvIG5z
SW5pdFR5cGUgPSAoTlNTdHJpbmcqKVtyZXF1ZXN0Lm9wdGlvbnMgdmFsdWVGb3JLZXk6SW5pdGlh
bGl6YXRpb25EYXRhVHlwZUtleV07Ci1BTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAot
ICAgIGlmICghW25zSW5pdFR5cGUgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pIHsKLSAg
ICAgICAgLy8gVGhlIG9ubHkgd2F5IGZvciBhbiBpbml0aWFsaXphdGlvbiBkYXRhIHRvIGVuZCB1
cCBoZXJlIHdpdGhvdXQgYW4gYXBwcm9wcmlhdGUga2V5IGluCi0gICAgICAgIC8vIHRoZSBvcHRp
b25zIGRpY3Rpb25hcnkgaXMgZm9yIHRoYXQgZGF0YSB0byBoYXZlIGJlZW4gZ2VuZXJhdGVkIGJ5
IHRoZSBBVlN0cmVhbURhdGFQYXJzZXIKLSAgICAgICAgLy8gYW5kIGN1cnJlbnRseSwgdGhlIG9u
bHkgaW5pdGlhbGl6YXRpb24gZGF0YSBzdXBwb3J0ZWQgYnkgdGhlIHBhcnNlciBpcyB0aGUgJ3Np
bmYnIGtpbmQuCi0gICAgICAgIHJldHVybiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNp
bmZOYW1lKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEF0b21TdHJpbmcobnNJbml0VHlwZSk7Ci19
Ci0KIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJ
RHMoKQogewogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTk3MTQxKTogdXNlIHRoZSBm
dXR1cmUgQVZDb250ZW50S2V5UmVxdWVzdCBrZXlJRCBwcm9wZXJ0eSwgcmF0aGVyIHRoYW4gcGFy
c2luZyBpdCBvdXQgb2YgdGhlIGluaXQKQEAgLTUxMCwyMCArNjA2LDM1IEBAIEtleXMgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKKyAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VU
eXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgIGNhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2luc3RhbmNlLT5zZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiIGZhbHNlLCBubyBzZXJ2ZXJDZXJ0aWZpY2F0ZSIpOwogICAgICAgICBjYWxsYmFjayhT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKSkg
eworICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwg
Y291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIG9yIGdyb3VwIG9iamVjdCIpOwogICAgICAgICBjYWxs
YmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChhdXRvIHVuZXhwZWN0ZWRSZXF1
ZXN0ID0gbV9pbnN0YW5jZS0+dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZvdW5kIHVuZXhwZWN0ZWRSZXF1ZXN0IG1hdGNoaW5n
IGluaXREYXRhIik7CisgICAgICAgIGlmIChtX2dyb3VwKSB7CisgICAgICAgICAgICBBTExPV19O
RVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCisgICAgICAgICAgICBbbV9ncm91cCBhc3NvY2lh
dGVDb250ZW50S2V5UmVxdWVzdDp1bmV4cGVjdGVkUmVxdWVzdC5nZXQoKV07CisgICAgICAgICAg
ICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAorICAgICAgICB9CisgICAgICAgIG1f
cmVxdWVzdExpY2Vuc2VDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgICAgICBkaWRQ
cm92aWRlUmVxdWVzdCh1bmV4cGVjdGVkUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGlkZW50aWZpZXI7CiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCkBAIC01MzgsMTAgKzY0OSwxMiBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KICNlbmRpZgogICAgIGVsc2UgeworICAgICAg
ICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgaW5pdERhdGFU
eXBlIG5vdCBzdXBwcG9ydGVkIik7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgcHJvY2Vz
c2luZyByZXF1ZXN0Iik7CiAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayk7CiAKICAgICBpZiAobV9ncm91cCkgewpAQCAtNTgyLDEwICs2OTUsMTIgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byogc3RvcmFnZVVSTCA9IG1faW5zdGFu
Y2UtPnN0b3JhZ2VVUkwoKTsKIAogICAgICAgICBpZiAoIWNlcnRpZmljYXRlIHx8ICFzdG9yYWdl
VVJMKSB7CisgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
IlwiYWNrbm93bGVkZ2VkXCIsIEZhaWxlZCwgbm8gY2VydGlmaWNhdGUgYW5kIHN0b3JhZ2VVUkwi
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKKyAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJcImFja25v
d2xlZGdlZFwiLCBTdWNjZWVkZWQsIHJlbW92aW5nIGV4cGlyZWQgc2Vzc2lvbiByZXBvcnQiKTsK
ICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0
KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQpOwpAQCAtNTk1LDkgKzcxMCwxMSBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgIGlmICghbV9yZXF1ZXN0cy5pc0VtcHR5KCkgJiYgaXNF
cXVhbChyZXNwb25zZURhdGEsICJyZW5ldyJfcykpIHsKICAgICAgICAgYXV0byByZXF1ZXN0ID0g
bGFzdEtleVJlcXVlc3QoKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0KSB7CisgICAgICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIlwicmVuZXdcIiwgRmFpbGVkLCBu
byBvdXRzdGFuZGluZyBrZXlzIik7CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIlwicmVuZXdcIiwgcHJvY2Vzc2luZyByZW5ld2FsIik7CiAgICAgICAgIGF1dG8g
c2Vzc2lvbiA9IG1fc2Vzc2lvbiA/IG1fc2Vzc2lvbi5nZXQoKSA6IG1faW5zdGFuY2UtPmNvbnRl
bnRLZXlTZXNzaW9uKCk7CiAgICAgICAgIFtzZXNzaW9uIHJlbmV3RXhwaXJpbmdSZXNwb25zZURh
dGFGb3JDb250ZW50S2V5UmVxdWVzdDpyZXF1ZXN0XTsKICAgICAgICAgbV91cGRhdGVMaWNlbnNl
Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAgLTYwNSwxMSArNzIyLDEzIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpCiAgICAgfQogCiAgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0KSB7
CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwg
bm8gY3VycmVudFJlcXVlc3QiKTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgS2V5cyBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKSk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBrZXlJRHMgaW4gY3Vy
cmVudFJlcXVlc3QiKTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02MjgsMTAgKzc0NywxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKCFyZXNwb25zZXMgfHwgcmVzcG9uc2Vz
LnZhbHVlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwgbm8gcmVzcG9uc2Vz
Iik7CiAgICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sodHJ1ZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIERFQlVHX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ2NlbmMnIGluaXREYXRhLCBTdWNjZWVkZWQsIG5vIGtl
eUlEcyBpbiBjdXJyZW50UmVxdWVzdCIpOwogICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2Fs
bGJhY2soZmFsc2UsIGtleVN0YXR1c2VzKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBT
dWNjZWVkZWQpOwogICAgICAgICAgICAgbV91cGRhdGVSZXNwb25zZUNvbGxlY3RvciA9IG51bGxw
dHI7CiAgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGOjpudWxsb3B0OwpAQCAtNjk3
LDEyICs4MTgsMTUgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfTsKICAgICAg
ICAgZm9yIChhdXRvIHZhbHVlIDogKmFycmF5KSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlUmVz
cG9uc2UodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwgY291bGQgbm90IHBhcnNlIHJl
c3BvbnNlIik7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsK
KyAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5p
dERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKICAgICAgICAgW21fY3VycmVudFJlcXVlc3Qu
dmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXV07CisgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcp
OiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25z
ZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rl
c2NyaXB0aW9uIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2Nv
bChBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Np
b246Y29udGVudEtleVJlcXVlc3REaWRTdWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtNzIzLDExICs4
NDcsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICBpZiAobGljZW5zZVR5cGUgPT0g
TGljZW5zZVR5cGU6OlBlcnNpc3RlbnRVc2FnZVJlY29yZCkgewogICAgICAgICBhdXRvKiBzdG9y
YWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgpOwogICAgICAgICBpZiAoIW1faW5zdGFu
Y2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSB8fCAhc3RvcmFnZVVSTCkgeworICAgICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBtaXNtYXRj
aGVkIHNlc3Npb24gdHlwZSIpOwogICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1p
c21hdGNoZWRTZXNzaW9uVHlwZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
OwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlKSB7CisgICAgICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIHNlc3Npb25DZXJ0aWZpY2F0ZSIp
OwogICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC03NDgsMTYgKzg3NCwxOSBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUgbGljZW5zZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNoYW5nZWRLZXlzLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICIgRmFpbGVkLCBubyBzZXNzaW9uIGRhdGEgZm91bmQiKTsKICAgICAgICAgICAgIGNhbGxi
YWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vz
c2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
IFN1Y2NlZWRlZCwgbWlzbWF0Y2hlZCBzZXNzaW9uIHR5cGUiKTsKICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfQogfQogCiB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3JlcXVlc3RMaWNlbnNlQ2Fs
bGJhY2spIHsKICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFt
X3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spOwpAQCAtNzg4LDYgKzkxNyw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmCiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2Vy
dmVyQ2VydGlmaWNhdGUoKTsKIAogICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQoKSB8fCAhc3RvcmFnZVVSTCB8fCAhY2VydGlmaWNhdGUpIHsKKyAgICAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgcGVyc2lz
dGVudFN0YXRlIG5vdCBhbGxvd2VkIG9yIG5vIHN0b3JhZ2VVUkwgb3Igbm8gY2VydGlmaWNhdGUi
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04MTAsNiArOTQwLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZXhwaXJlZFNlc3Npb25z
QXJyYXkuZ2V0KCkuY291bnQpIHsKKyAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiIFN1Y2NlZWRlZCwgbm8gZXhwaXJlZCBzZXNzaW9ucyIpOwogICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURjo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODE5LDYgKzk1MCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICAvLyBJdCBzaG91bGQgbm90IGJl
IHBvc3NpYmxlIHRvIGhhdmUgYSBwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBzZXNzaW9uIHRoYXQg
ZG9lcyBub3QgZ2VuZXJhdGUKICAgICAgICAgICAgIC8vIGEgcGVyc2lzdGVudC11c2FnZS1yZWNv
cmQgbWVzc2FnZSBvbiBjbG9zZS4gU2lnbmFsIHRoaXMgYnkgZmFpbGluZyBhbmQgYXNzZXJ0Lgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbiBk
YXRhIik7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpu
dWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04Mjgs
OCArOTYwLDkgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gZXhwaXJlZFNlc3Npb25zRGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24g
ZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6cHJvcGVydHlMaXN0IGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6a0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlIGVycm9yOm51
bGxwdHJdOwogCiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNDb3VudCA+IDEpCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPRyhFTUUsICJNdWx0aXBsZSglbHUpIGV4cGlyZWQgc2Vzc2lvbiByZXBv
cnRzIGZvdW5kIHdpdGggc2FtZSBzZXNzaW9uSUQoJXMpISIsIGV4cGlyZWRTZXNzaW9uc0NvdW50
LCBzZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBFUlJPUl9MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIk11bHRpcGxlKCIsIGV4cGlyZWRTZXNzaW9uc0NvdW50LCAi
KSBleHBpcmVkIHNlc3Npb24gcmVwb3J0cyBmb3VuZCB3aXRoIHNhbWUgc2Vzc2lvbklEKCIsIHNl
c3Npb25JZCwgIikhIik7CiAKKyAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIsICIgU3VjY2VlZGVkIik7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtl
eXMpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShleHBpcmVkU2Vzc2lvbnNEYXRhLmdldCgpKSwgU3Vj
Y2VlZGVkKTsKICAgICB9CiB9CkBAIC0xMTEzLDYgKzEyNDYsMTUgQEAgQVZDb250ZW50S2V5UmVx
dWVzdCogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsYXN0S2V5
UmVxdWVzdCgKICAgICByZXR1cm4gbGFzdFJlcXVlc3QucmVxdWVzdHMubGFzdCgpLmdldCgpOwog
fQogCitib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aGFz
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiBrZXlSZXF1ZXN0KSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMpIHsKKyAgICAgICAgaWYgKHJlcXVlc3QucmVx
dWVzdHMuY29udGFpbnMoa2V5UmVxdWVzdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVu
dEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHJlcXVlc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393273</attachid>
            <date>2020-03-11 12:26:26 -0700</date>
            <delta_ts>2020-03-11 16:50:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208923-20200311122626.patch</filename>
            <type>text/plain</type>
            <size>70561</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZjYTI4M2M4ZmY1ZmQ0MTYwYWQxZDQx
N2YxMjRiYzRmMGFhNWI5ZTEuLmRiNzIyZWFjMzU1N2U1ODRhZDFlOTQxMjgxNGVjMjhjY2MwYTEw
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDMtMTEgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VNRV0gSXNzdWUgYW4gImVuY3J5cHRlZCIgZXZlbnQg
d2hlbiBhIG5ldyBlbmNyeXB0ZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBpcyBlbmNvdW50ZXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4OTIz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogd3RmL0xv
Z2dlckhlbHBlci5oOgorICAgICAgICAoV1RGOjpMb2dnZXJIZWxwZXI6OmNoaWxkTG9nSWRlbnRp
Zmllcik6IE1hZGUgc3RhdGljLgorCiAyMDIwLTAzLTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1lbWJlciBjb21wbGV0ZWQgc3VicmFuZ2VzIGR1cmlu
ZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGUzYzdmZmY3MWE1ZTE4
MmY5YjYyNzA3YTgwOTRjOTU1MDEzZGJjLi5kZGM5YmVmZmMyNjU4MmYwZDNjYjE5ODc0MjhiNzdl
NDg3MmY5NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMDMtMTEgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VNRV0gSXNzdWUgYW4gImVu
Y3J5cHRlZCIgZXZlbnQgd2hlbiBhIG5ldyBlbmNyeXB0ZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVu
dCBpcyBlbmNvdW50ZXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgIFdoZW4gQVZTdHJlYW1EYXRhUGFyc2VyIGVuY291bnRlcnMgYW4gaW5pdGlhbGl6YXRp
b24gc2VnbWVudCBpbmRpY2F0aW5nIGVuY3J5cHRlZCBjb250ZW50LCBpdAorICAgICAgICB3aWxs
IGlzc3VlIGEgLXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6IG1lc3NhZ2UKKyAgICAgICAgdG8gaXRzIGRlbGVn
YXRlLiBJZiB0aGUgcGFyc2VyIGlzIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGFuIEFWQ29udGVu
dEtleVNlc3Npb24sIGl0IHdpbGwgaW5zdGVhZAorICAgICAgICBhbGxvdyB0aGUgc2Vzc2lvbiB0
byBoYW5kbGUgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgYW5kIHRoZSBkZWxhZ2V0ZSBtZXRo
b2Qgd2lsbCBub3QgYmUgY2FsbGVkLgorCisgICAgICAgIFdoZW4gdGhlIGxhdHRlciBzaXR1YXRp
b24gb2NjdXJzLCB3ZSBjYW4gZGV0ZWN0IHRoYXQgdGhlIC1kaWRQcm92aWRlUmVxdWVzdCBjYWxs
YmFjayBkaWQgbm90CisgICAgICAgIG9jY3VyIGR1ZSB0byB0aGUgY2xpZW50IGNhbGxpbmcgTWVk
aWFLZXlTZXNzaW9uLmdlbmVyYXRlUmVxdWVzdCgpIGFuZCB0aGVyZWZvcmUgbXVzdCBoYXZlIGJl
ZW4KKyAgICAgICAgZHVlIHRvIHBhcnNpbmcgYW4gZW5jcnlwdGVkIHNlZ21lbnQuIEluIHJlc3Bv
bnNlLCBzdG9yZSB0aGUgcmVxdWVzdCBpbiBhIGxpc3Qgb2YgInVuZXhwZWN0ZWQiCisgICAgICAg
IHJlcXVlc3RzIHRvIGJlIGNoZWNrZWQgdGhlIG5leHQgdGltZSBhIE1lZGlhS2V5U2Vzc2lvbiB0
cmllcyB0byBnZW5lcmF0ZVJlcXVlc3QoKS4gVGhlbiwgd2Ugd2lsbAorICAgICAgICBwYXNzIHRo
ZSBpbml0YWxpemF0aW9uRGF0YSBhbmQgdHlwZSB0byBIVE1MTWVkaWFFbGVtZW50IHRocm91Z2gg
YSBuZXcgY2xpZW50IGludGVyZmFjZSwgd2hlcmUgaXQKKyAgICAgICAgd2lsbCB1c2UgdGhhdCBp
bml0aWFsaXphdGlvbkRhdGEgdG8gaXNzdWUgYW4gImVuY3J5cHRlZCIgZXZlbnQuIElmIHRoZSBj
bGllbnQgcGFzc2VzIHRoYXQgc2FtZQorICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgYmFjayBp
bnRvIE1lZGlhS2V5U2Vzc2lvbiwgdGhlICJ1bmV4cGVjdGVkIiByZXF1ZXN0IGNhbiBiZSBmb3Vu
ZCwgYW5kIHJlLXVzZWQuCisKKyAgICAgICAgRHJpdmUtYnkgZml4ZXM6IEFkZGVkIGEgdG9uIG9m
IGRlYnVnIGxvZ2dpbmcgbWVzc2FnZXMgdG8gdGhlIENETVByaXZhdGUgY2xhc3Nlcy4KKworICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6Q0RNKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlT
ZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN5c3RlbUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN5c3Rl
bUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3lzdGVtQWNjZXNzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5pZGw6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpNZWRp
YUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjphdHRhY2hDRE1DbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlzOjpkZXRhY2hDRE1DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlzOjphdHRlbXB0VG9SZXN1bWVQbGF5YmFja09uQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpuZXh0Q2hpbGRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlzOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlzOjpjZG1JbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eXM6OmNkbUluc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5pZGw6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2U6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpzZXRM
b2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZXRMb2dnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZXRDbGllbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVByaXZhdGU6OnNldExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxvZ0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzZXRMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpsb2dDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRUeXBlRm9y
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXph
dGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5
UmVxdWVzdEZvclJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25G
b3JSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
Omhhc1JlcXVlc3QgY29uc3QpOgorCiAyMDIwLTAzLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCkgaGl0IGluIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9u
SW1hZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMWNjMzM2ZmFhZTY2N2JlMTMxNGNjY2U5ZWZm
ZTkzMmRkZDQ0YjBkZC4uZTE1ZWRiMjRmMzA3NGI2NDE3OTFiYzNkNDBmMmE1MGJlNjRmZjIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDMtMTEgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0VNRV0gSXNzdWUgYW4gImVuY3J5
cHRlZCIgZXZlbnQgd2hlbiBhIG5ldyBlbmNyeXB0ZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBp
cyBlbmNvdW50ZXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgICogcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaDoKKwogMjAyMC0wMy0wOCAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFwcGlu
ZyB0byBVVEkgZnJvbSB0YWcgYW5kIHRhZyBjbGFzcyBzaG91bGQgYmUgcGVyZm9ybWVkIGluIHRo
ZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IDBkNGMyOTJiOTg4MGUyZjk0NGE5
Y2Q5Y2I1ODE4YzY5NmI5ZmRlZDguLjBhZDY1ZWUyNDcwYjcwZmM5YTBlZWY4MmViYTcxZTBmYzNk
NWY4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCkBAIC01Niw3ICs1NiwxNCBAQCBwdWJsaWM6CiAj
ZGVmaW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICBpZiAoY29uZGl0aW9uKSBs
b2dnZXIoKS5pbmZvKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIERFQlVHX0xP
R19JRihjb25kaXRpb24sIC4uLikgICAgICBpZiAoY29uZGl0aW9uKSBsb2dnZXIoKS5kZWJ1Zyhs
b2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQogCi0gICAgY29uc3Qgdm9pZCogY2hpbGRMb2dJZGVu
dGlmaWVyKGNvbnN0IHZvaWQqIHBhcmVudElkZW50aWZpZXIsIHVpbnQ2NF90IGNoaWxkSWRlbnRp
ZmllcikgY29uc3QKKyNkZWZpbmUgQUxXQVlTX0xPR19JRl9QT1NTSUJMRSguLi4pICAgICBpZiAo
bG9nZ2VyUHRyKCkpIGxvZ2dlclB0cigpLT5sb2dBbHdheXMobG9nQ2hhbm5lbCgpLCBfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgRVJST1JfTE9HX0lGX1BPU1NJQkxFKC4uLikgICAgICBpZiAobG9nZ2Vy
UHRyKCkpIGxvZ2dlclB0cigpLT5lcnJvcihsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBXQVJOSU5HX0xPR19JRl9QT1NTSUJMRSguLi4pICAgIGlmIChsb2dnZXJQdHIoKSkgbG9n
Z2VyUHRyKCktPndhcm5pbmcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgSU5G
T19MT0dfSUZfUE9TU0lCTEUoLi4uKSAgICAgICBpZiAobG9nZ2VyUHRyKCkpIGxvZ2dlclB0cigp
LT5pbmZvKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIERFQlVHX0xPR19JRl9Q
T1NTSUJMRSguLi4pICAgICAgaWYgKGxvZ2dlclB0cigpKSBsb2dnZXJQdHIoKS0+ZGVidWcobG9n
Q2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0lMTF9MT0dfSUZfUE9TU0lCTEUoX2xl
dmVsXykgICBpZiAobG9nZ2VyUHRyKCkpIGxvZ2dlclB0cigpLT53aWxsTG9nKGxvZ0NoYW5uZWwo
KSwgX2xldmVsXykKKworICAgIHN0YXRpYyBjb25zdCB2b2lkKiBjaGlsZExvZ0lkZW50aWZpZXIo
Y29uc3Qgdm9pZCogcGFyZW50SWRlbnRpZmllciwgdWludDY0X3QgY2hpbGRJZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBwYXJlbnRNYXNrID0gMHhm
ZmZmZmZmZmZmZmYwMDAwdWxsOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IG1h
c2tMb3dlcldvcmQgPSAweGZmZmZ1bGw7CkBAIC04OCw2ICs5NSwxMyBAQCBwdWJsaWM6CiAjZGVm
aW5lIElORk9fTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICAoKHZvaWQpMCkKICNkZWZpbmUg
REVCVUdfTE9HX0lGKGNvbmRpdGlvbiwgLi4uKSAgICAgICgodm9pZCkwKQogCisjZGVmaW5lIEFM
V0FZU19MT0dfSUZfUE9TU0lCTEUoLi4uKSAgICAgKCh2b2lkKTApCisjZGVmaW5lIEVSUk9SX0xP
R19JRl9QT1NTSUJMRSguLi4pICAgICAgKCh2b2lkKTApCisjZGVmaW5lIFdBUk5JTkdfTE9HX0lG
X1BPU1NJQkxFKC4uLikgICAgKCh2b2lkKTApCisjZGVmaW5lIElORk9fTE9HX0lGX1BPU1NJQkxF
KC4uLikgICAgICAgKCh2b2lkKTApCisjZGVmaW5lIERFQlVHX0xPR19JRl9QT1NTSUJMRSguLi4p
ICAgICAgKCh2b2lkKTApCisjZGVmaW5lIFdJTExfTE9HX0lGX1BPU1NJQkxFKF9sZXZlbF8pICAg
KCh2b2lkKTApCisKICNlbmRpZiAvLyBSRUxFQVNFX0xPR19ESVNBQkxFRAogCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IGM1NWJlMDY0
MjE2NTAwZWQwYjI3ZDVhOWU5Y2M5NjIxZjdhNGEwMzguLmE1MTAyOTgwMjEyMmQwOTBjZmJhMjc4
MzFjYTYzZDIxMjI4NTA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjIsMTIgKzY0LDE5IEBAIFJlZjxDRE0+IENETTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAKIENETTo6Q0RNKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcigmZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxw
ZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogICAgICwgbV9rZXlTeXN0ZW0oa2V5
U3lzdGVtKQogewogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICAg
ICBmb3IgKGF1dG8qIGZhY3RvcnkgOiBDRE1GYWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCkp
IHsKICAgICAgICAgaWYgKGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpIHsK
ICAgICAgICAgICAgIG1fcHJpdmF0ZSA9IGZhY3RvcnktPmNyZWF0ZUNETShrZXlTeXN0ZW0pOwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRMb2dn
ZXIobV9sb2dnZXIsIG1fbG9nSWRlbnRpZmllcik7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKaW5kZXggZDU4Y2IwZmVlMzMzMWE4NWE4MjkzZGFmMWRmN2MwYzQwYTEzY2RmYi4u
YTI2MTcyNmI3Zjg4NmY2ZGQ5MDA0ZmY0ZDgyNDYyOTdkOGUzNWYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC00MCw2ICs0MCwxMiBAQAogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTG9nZ2Vy
OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeTsK
QEAgLTgwLDYgKzg2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgUmVmPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50
aWZpZXI7CisjZW5kaWYKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENETVByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaAppbmRleCAzYTY1YzdmNDQyODQyMDU2NWVi
Y2ZmY2I2YmEzYTgzNmI0NjZkMTU1Li4yMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjVi
ZmI3YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmgKQEAgLTMwLDE1ICszMCwyMCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAotY2xhc3MgQ0RNQ2xpZW50IHsKK2NsYXNzIENETUNsaWVudCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1D
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRv
UmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xp
ZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAKaW5kZXggODlmMGU3MDU1MGU5MWU2OTZkNTliNzk3OTE5ZTA5YmZhMjE3
MmU1Mi4uNWZmNDM2ZjFmNjU5ZDI2ZjU0NzhhNjFmMDYwNzJkNGY3MWRlYThlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcApAQCAtNjQsNyArNjQsMTAgQEAgUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFL
ZXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2UKIAog
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBi
b29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwg
UmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9s
b2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoa2V5cyA/IGtl
eXMtPm5leHRDaGlsZElkZW50aWZpZXIoKSA6IG51bGxwdHIpCisjZW5kaWYKICAgICAsIG1fa2V5
cyhXVEZNb3ZlKGtleXMpKQogICAgICwgbV9leHBpcmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkpCiAgICAgLCBtX2Nsb3NlZFByb21pc2UobWFrZVVuaXF1ZVJl
ZjxDbG9zZWRQcm9taXNlPigpKQpAQCAtOTgsNiArMTAxLDkgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBr
ZXlzLAogICAgIFVOVVNFRF9QQVJBTShtX2Nsb3NlZCk7CiAgICAgVU5VU0VEX1BBUkFNKG1fdW5p
bml0aWFsaXplZCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+c2V0TG9nZ2VyKG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZpZXIpOworI2VuZGlmCiAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnNldENsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaAppbmRleCA0MDUyMzQ3NTViMjVmOTg3NWEwMzIzNzFiNDViNWUzNTRjYjBj
MzhhLi5iNmFjZTM1ODllYzhhZGNkOWE4NTA1MDhkMTFkZTM3ZTRlM2RiYmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKQEAgLTQzLDkgKzQzLDExIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBMb2dnZXI7CiB9CisjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMTMsMTAgKzExNSwxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFdURjo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQogICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRpYUtleVNlc3Npb24iOyB9CiAg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwotICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0jZW5kaWYKKyAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAK
ICAgICBSZWY8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyNlbmRpZgorCiAgICAgV2Vha1B0cjxNZWRpYUtleXM+IG1fa2V5czsKICAgICBT
dHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgZG91YmxlIG1fZXhwaXJhdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nl
c3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5
c3RlbUFjY2Vzcy5jcHAKaW5kZXggN2ViN2IyMDIzNWUxNWE1OTEwM2JiMThhMDNlZjNmYTEyYmQz
N2MzNi4uNGQ5MTQzMTg4NDYzZDhjNjJjNjEyYmYxZWZlODAyMGE3NWU1NTc5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN5c3RlbUFjY2Vzcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNETS5o
IgogI2luY2x1ZGUgIkNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWVkaWFLZXlzLmgiCiAj
aW5jbHVkZSAiTWVkaWFLZXlzLmgiCkBAIC01NCw3ICs1NSw3IEBAIE1lZGlhS2V5U3lzdGVtQWNj
ZXNzOjpNZWRpYUtleVN5c3RlbUFjY2Vzcyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTWVkaWFL
ZXlTeXN0CiAKIE1lZGlhS2V5U3lzdGVtQWNjZXNzOjp+TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE1lZGlhS2V5U3lzdGVtQWNjZXNz
OjpjcmVhdGVNZWRpYUtleXMoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS8jZG9tLW1lZGlha2V5c3lzdGVtYWNjZXNzLWNyZWF0ZW1lZGlha2V5cwogICAgIC8vIFcz
QyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CkBAIC02Miw3ICs2Myw3IEBAIHZvaWQg
TWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIExldCBwcm9t
aXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gMi4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMg
aW4gcGFyYWxsZWw6Ci0gICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVl
VGFzayhbdGhpcywgd2Vha0RvY3VtZW50ID0gbWFrZVdlYWtQdHIoZG9jdW1lbnQpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDIuMS4gTGV0IGNv
bmZpZ3VyYXRpb24gYmUgdGhlIHZhbHVlIG9mIHRoaXMgb2JqZWN0J3MgY29uZmlndXJhdGlvbiB2
YWx1ZS4KICAgICAgICAgLy8gMi4yLiBMZXQgdXNlIGRpc3RpbmN0aXZlIGlkZW50aWZpZXIgYmUg
dHJ1ZSBpZiB0aGUgdmFsdWUgb2YgY29uZmlndXJhdGlvbidzIGRpc3RpbmN0aXZlSWRlbnRpZmll
ciBtZW1iZXIgaXMgInJlcXVpcmVkIiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICAgICAgICBib29s
IHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+ZGlzdGluY3RpdmVJ
ZGVudGlmaWVyID09IE1lZGlhS2V5c1JlcXVpcmVtZW50OjpSZXF1aXJlZDsKQEAgLTg2LDggKzg3
LDggQEAgdm9pZCBNZWRpYUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlTWVkaWFLZXlzKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYXV0byBhbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMgPSB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIgPyBDRE1JbnN0YW5jZTo6QWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzOjpZZXMgOiBDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzOjpObzsKICAgICAgICAgYXV0byBhbGxvd1BlcnNpc3RlbnRTdGF0ZSA9IHBl
cnNpc3RlbnRTdGF0ZUFsbG93ZWQgPyBDRE1JbnN0YW5jZTo6QWxsb3dQZXJzaXN0ZW50U3RhdGU6
OlllcyA6IENETUluc3RhbmNlOjpBbGxvd1BlcnNpc3RlbnRTdGF0ZTo6Tm87CiAKLSAgICAgICAg
aW5zdGFuY2UtPmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbigqbV9jb25maWd1cmF0aW9uLCBh
bGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIGFsbG93UGVyc2lzdGVudFN0YXRlLCBbc2Vzc2lv
blR5cGVzID0gbV9jb25maWd1cmF0aW9uLT5zZXNzaW9uVHlwZXMsIGltcGxlbWVudGF0aW9uID0g
bV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgcGVy
c2lzdGVudFN0YXRlQWxsb3dlZCwgaW5zdGFuY2UgPSBpbnN0YW5jZS5yZWxlYXNlTm9uTnVsbCgp
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGF1dG8gc3VjY2Vzc1ZhbHVlKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzVmFsdWUgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkg
eworICAgICAgICBpbnN0YW5jZS0+aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKCptX2NvbmZp
Z3VyYXRpb24sIGFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgYWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFt3ZWFrRG9jdW1lbnQgPSBXVEZNb3ZlKHdlYWtEb2N1bWVudCksIHNlc3Npb25UeXBlcyA9
IG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvblR5cGVzLCBpbXBsZW1lbnRhdGlvbiA9IG1faW1wbGVt
ZW50YXRpb24uY29weVJlZigpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsIGluc3RhbmNlID0gaW5zdGFuY2UucmVsZWFzZU5vbk51bGwoKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3NWYWx1ZSkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoc3VjY2Vzc1ZhbHVlID09IENETUluc3RhbmNlOjpGYWlsZWQgfHwgIXdlYWtE
b2N1bWVudCkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJy
b3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTk5LDcgKzEw
MCw3IEBAIHZvaWQgTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZU1lZGlhS2V5cyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgICAgICAvLyAyLjEwLjMuIExldCB0aGUg
c3VwcG9ydGVkIHNlc3Npb24gdHlwZXMgdmFsdWUgYmUgYmUgdGhlIHZhbHVlIG9mIGNvbmZpZ3Vy
YXRpb24ncyBzZXNzaW9uVHlwZXMgbWVtYmVyLgogICAgICAgICAgICAgLy8gMi4xMC40LiBMZXQg
dGhlIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBiZSB0aGlzIG9iamVjdCdzIGNkbSBpbXBsZW1l
bnRhdGlvbiB2YWx1ZS4KICAgICAgICAgICAgIC8vIDIuMTAuNS4gTGV0IHRoZSBjZG0gaW5zdGFu
Y2UgdmFsdWUgYmUgaW5zdGFuY2UuCi0gICAgICAgICAgICBhdXRvIG1lZGlhS2V5cyA9IE1lZGlh
S2V5czo6Y3JlYXRlKHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgcGVyc2lzdGVudFN0YXRlQWxs
b3dlZCwgc2Vzc2lvblR5cGVzLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0
YW5jZSkpOworICAgICAgICAgICAgYXV0byBtZWRpYUtleXMgPSBNZWRpYUtleXM6OmNyZWF0ZSgq
d2Vha0RvY3VtZW50LCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQsIHNlc3Npb25UeXBlcywgV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoaW5z
dGFuY2UpKTsKIAogICAgICAgICAgICAgLy8gMi4xMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggbWVk
aWEga2V5cy4KICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxNZWRpYUtleXM+PihXVEZNb3ZlKG1lZGlhS2V5cykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vz
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3Rl
bUFjY2Vzcy5oCmluZGV4IDRmNWExNTVjNjgwZDllZjQxNzQ2MDAzYzc3Mjg2YTRlZjg1YTNjYzYu
LjU0NDhmNDAzNzA5ZTc3ZjU1NmFhMjZkNzE3YmM0MDI1MDYxNWZkMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3lz
dGVtQWNjZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1l
ZGlhS2V5czsKIAogY2xhc3MgTWVkaWFLZXlTeXN0ZW1BY2Nlc3MgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYUtleVN5c3RlbUFjY2Vzcz4gewpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CiAgICAgY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBnZXRDb25maWd1cmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gKm1fY29uZmlndXJhdGlvbjsgfQotICAgIHZvaWQgY3JlYXRlTWVk
aWFLZXlzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgY3JlYXRlTWVkaWFLZXlz
KERvY3VtZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6CiAgICAgTWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE1lZGlhS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYmLCBSZWY8Q0RNPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTeXN0ZW1BY2Nlc3MuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5pZGwK
aW5kZXggMWJjMWQyNzRjZGQ1OTAzNWM4MjEzNjc4ZjJiYWE0YmY0NTYzMjgyOC4uYjRhYTM2N2Ey
MGQzN2NkMmRkY2ExNjYwYjViZGI3MmNiMDJmYzc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vzcy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN5c3RlbUFjY2Vz
cy5pZGwKQEAgLTM0LDUgKzM0LDUgQEAKIF0gaW50ZXJmYWNlIE1lZGlhS2V5U3lzdGVtQWNjZXNz
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVN5c3RlbTsKICAgICBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gZ2V0Q29uZmlndXJhdGlvbigpOwotICAgIFByb21pc2U8
TWVkaWFLZXlzPiBjcmVhdGVNZWRpYUtleXMoKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFBy
b21pc2U8TWVkaWFLZXlzPiBjcmVhdGVNZWRpYUtleXMoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggOWE4Y2Nj
NWYwZGZjNTkyOGQ4ZTA1Yzc0YTIwNWQ0MzA1NDAwNDUyNS4uYTg5Y2Q0MDAzZDcxZWVhZjkxMDdh
NDU3YjQ0M2ZiN2UzMGM1NTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtNDAsMjYgKzQwLDMxIEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotaW5saW5lIHZvaWQgaW5mb0xvZyhMb2dnZXImIGxvZ2dlciwgY29uc3Qg
QXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCi17Ci0jaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBsb2dnZXIuaW5mbyhMb2dFTUUsIGFyZ3VtZW50cy4uLik7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShsb2dnZXIpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorc3RhdGljIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSB7IHJldHVybiBMb2dFTUU7IH0K
K3N0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSB7IHJldHVybiAiTWVkaWFLZXlzIjsg
fQogI2VuZGlmCi19CiAKLU1lZGlhS2V5czo6TWVkaWFLZXlzKGJvb2wgdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRp
YUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBSZWY8Q0RNPiYmIGltcGxl
bWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCitNZWRpYUtleXM6Ok1lZGlh
S2V5cyhEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBi
b29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25U
eXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBS
ZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCiAgICAgOiBtX3VzZURpc3RpbmN0aXZlSWRlbnRp
Zmllcih1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIpCiAgICAgLCBtX3BlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQocGVyc2lzdGVudFN0YXRlQWxsb3dlZCkKICAgICAsIG1fc3VwcG9ydGVkU2Vzc2lvblR5
cGVzKHN1cHBvcnRlZFNlc3Npb25UeXBlcykKICAgICAsIG1faW1wbGVtZW50YXRpb24oV1RGTW92
ZShpbXBsZW1lbnRhdGlvbikpCiAgICAgLCBtX2luc3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2Vy
KCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9nZ2VySGVscGVyOjp1bmlxdWVMb2dJZGVudGlm
aWVyKCkpCisjZW5kaWYKIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX2luc3Rh
bmNlLT5zZXRMb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCksIG1fbG9nSWRlbnRpZmllcik7CisjZW5k
aWYKKyAgICBtX2luc3RhbmNlLT5zZXRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOwogfQogCiBN
ZWRpYUtleXM6On5NZWRpYUtleXMoKSA9IGRlZmF1bHQ7CkBAIC02OCwyNiArNzMsMjUgQEAgRXhj
ZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihE
b2N1bWVudCYgZG9jdW1lbnQsIE0KIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8g
VzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBMT0coRU1FLCAiRU1FIC0g
Y2hlY2sgaWYgYSBuZXcgc2Vzc2lvbiBjYW4gYmUgY3JlYXRlZCIpOwotICAgIGF1dG8gaWRlbnRp
ZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFLZXlzIiwgX19mdW5j
X18sIHRoaXMpOwotICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3VtZW50LmxvZ2dlcigpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgSU5GT19MT0coaWRlbnRp
ZmllciwgIkVNRSAtIGNoZWNrIGlmIGEgbmV3IHNlc3Npb24gY2FuIGJlIGNyZWF0ZWQiKTsKIAog
ICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCdzIHN1cHBv
cnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc2Vzc2lvblR5cGUsIHRo
cm93IFtXZWJJRExdIGEgTm90U3VwcG9ydGVkRXJyb3IuCiAgICAgaWYgKCFtX3N1cHBvcnRlZFNl
c3Npb25UeXBlcy5jb250YWlucyhzZXNzaW9uVHlwZSkpIHsKLSAgICAgICAgaW5mb0xvZyhsb2dn
ZXIsIGlkZW50aWZpZXIsICJFeGNlcHRpb246IHVuc3VwcG9ydGVkIHNlc3Npb25UeXBlOiAiLCBz
ZXNzaW9uVHlwZSk7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJFeGNlcHRpb246IHVu
c3VwcG9ydGVkIHNlc3Npb25UeXBlOiAiLCBzZXNzaW9uVHlwZSk7CiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24oTm90U3VwcG9ydGVkRXJyb3IpOwogICAgIH0KIAogICAgIC8vIDIuIElmIHRoZSBp
bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhS2V5U2Vzc2lvbiBvcGVyYXRpb25z
IGluIHRoZSBjdXJyZW50IHN0YXRlLCB0aHJvdyBbV2ViSURMXSBhbiBJbnZhbGlkU3RhdGVFcnJv
ci4KICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRzU2Vzc2lvbnMoKSkgewotICAg
ICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogaW1wbGVtZW50YXRp
b24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9ucyIpOworICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiRXhjZXB0aW9uOiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNlc3Npb25z
Iik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpOwogICAgIH0K
IAogICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRlU2Vzc2lvbigp
OwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKSB7Ci0gICAgICAgIGluZm9Mb2cobG9nZ2VyLCBp
ZGVudGlmaWVyLCAiRXhjZXB0aW9uOiBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKKyAgICAg
ICAgSU5GT19MT0coaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogY291bGQgbm90IGNyZWF0ZSBzZXNz
aW9uIik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpOwogICAg
IH0KIApAQCAtOTUsMzAgKzk5LDI5IEBAIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Npb24+
PiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBNCiAgICAgLy8g
Tk9URTogQ29udGludWVkIGluIE1lZGlhS2V5U2Vzc2lvbi4KICAgICAvLyA0LiBSZXR1cm4gc2Vz
c2lvbi4KICAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShkb2N1bWVu
dCwgbWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9uVHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50
aWZpZXIsIG1faW1wbGVtZW50YXRpb24uY29weVJlZigpLCBpbnN0YW5jZVNlc3Npb24ucmVsZWFz
ZU5vbk51bGwoKSk7Ci0gICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICIgQ3JlYXRlZCBz
ZXNzaW9uIik7CisgICAgSU5GT19MT0coaWRlbnRpZmllciwgIkNyZWF0ZWQgc2Vzc2lvbiIpOwog
ICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNlc3Npb24uY29weVJlZigpKTsKICAgICByZXR1cm4gc2Vz
c2lvbjsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgQnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRp
ZmljYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8g
VzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBhdXRvIGlkZW50aWZpZXIg
PSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhS2V5cyIsIF9fZnVuY19fLCB0
aGlzKTsKLSAgICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhv
ZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgogICAgIC8vIDEuIElmIHRoZSBLZXkgU3lzdGVtIGltcGxlbWVudGF0aW9uIHJlcHJlc2VudGVk
IGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVlIGRvZXMgbm90IHN1cHBv
cnQKICAgICAvLyAgICBzZXJ2ZXIgY2VydGlmaWNhdGVzLCByZXR1cm4gYSBwcm9taXNlIHJlc29s
dmVkIHdpdGggZmFsc2UuCiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpKSB7Ci0gICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAi
UmVqZWN0ZWQ6ICFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIik7CisgICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogIXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCki
KTsKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyAyLiBJZiBzZXJ2ZXJDZXJ0aWZpY2F0ZSBpcyBhbiBl
bXB0eSBhcnJheSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3IGEgbmV3bHkg
Y3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKCFzZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5ndGgoKSkg
ewotICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBz
ZXJ2ZXJDZXJ0aWZpY2F0ZSIpOworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0
ZWQ6IGVtcHR5IHNlcnZlckNlcnRpZmljYXRlIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDE2ICsxMzMsMTYgQEAg
dm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgQnVmZmVyU291cmNlJiBzZXIKICAgICAvLyA1LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKIAogICAgIC8vIDUuMS4gVXNlIHRoaXMgb2JqZWN0J3MgY2RtIGluc3Rh
bmNlIHRvIHByb2Nlc3MgY2VydGlmaWNhdGUuCi0gICAgbV9pbnN0YW5jZS0+c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoV1RGTW92ZShjZXJ0aWZpY2F0ZSksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlm
aWVyKV0gKGF1dG8gc3VjY2VzcykgeworICAgIG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmlj
YXRlKFdURk1vdmUoY2VydGlmaWNhdGUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllcildIChhdXRvIHN1Y2Nlc3MpIHsKICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJl
Y2VkaW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRp
b24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgLy8g
NS4xLiBbRWxzZSxdIFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUuCiAgICAgICAgIGlmIChzdWNj
ZXNzID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgIGluZm9Mb2cobG9nZ2Vy
LCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQsIHNldFNlcnZlckNlcnRpZmljYXRlKCkgZmFpbGVkIik7
CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgLSBSZWplY3RlZCwg
c2V0U2VydmVyQ2VydGlmaWNhdGUoKSBmYWlsZWQiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlc29sdmVkIik7CisgICAg
ICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSAtIFJlc29sdmVkIik7CiAgICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CiAgICAgfSk7CiAKQEAgLTE0OCwy
MCArMTUxLDIwIEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VyCiAKIHZvaWQgTWVkaWFLZXlzOjph
dHRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKCFtX2NkbUNs
aWVudHMuY29udGFpbnMoJmNsaWVudCkpOwotICAgIG1fY2RtQ2xpZW50cy5hcHBlbmQoJmNsaWVu
dCk7CisgICAgQVNTRVJUKCFtX2NkbUNsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9j
ZG1DbGllbnRzLmFkZChjbGllbnQpOwogfQogCiB2b2lkIE1lZGlhS2V5czo6ZGV0YWNoQ0RNQ2xp
ZW50KENETUNsaWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVChtX2NkbUNsaWVudHMuY29udGFp
bnMoJmNsaWVudCkpOwotICAgIG1fY2RtQ2xpZW50cy5yZW1vdmVGaXJzdCgmY2xpZW50KTsKKyAg
ICBBU1NFUlQobV9jZG1DbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2RtQ2xpZW50
cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBNZWRpYUtleXM6OmF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrT25DbGllbnRzKCkKIHsKLSAgICBmb3IgKGF1dG8qIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKLSAgICAgICAgY2RtQ2xpZW50LT5jZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFj
a0lmTmVjZXNzYXJ5KCk7CisgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBtX2NkbUNsaWVudHMp
CisgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVj
ZXNzYXJ5KCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdApA
QCAtMTcyLDYgKzE3NSwxOSBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29u
c3QKICAgICAgICAgfSk7CiB9CiAKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhKQoreworICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1D
bGllbnRzKQorICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7Cit9CisK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2NvbnN0IHZvaWQqIE1lZGlhS2V5czo6bmV4dENo
aWxkSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ2dlckhlbHBlcjo6Y2hpbGRM
b2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX2NoaWxkSWRlbnRpZmllclNlZWQpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaAppbmRleCAzYWI2ODRjOGFjZDQ5MmIzNGRiZWZhOTUxNmMyY2MyYmQx
OTM3ODhjLi4yOWNhNjA3OGQ1ZGQwZjgzZTM4ZDFmYjJjMzM5YzNhMTBjY2UxOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAg
LTMwLDEyICszMCwxOCBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1
ZGUgIkNETUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJN
ZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNOwpAQCAtNDYsMTkgKzUyLDIxIEBAIGNsYXNz
IERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFLZXlTZXNzaW9u
OwogCi1jbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlzPiB7CitjbGFzcyBNZWRpYUtleXMgZmluYWwKKyAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5cz4KKyAgICAsIHB1YmxpYyBDRE1JbnN0YW5j
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgS2V5U2Vzc2lvblR5cGUgPSBNZWRpYUtleVNl
c3Npb25UeXBlOwogCi0gICAgc3RhdGljIFJlZjxNZWRpYUtleXM+IGNyZWF0ZShib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBW
ZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcywgUmVmPENE
TT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQorICAgIHN0
YXRpYyBSZWY8TWVkaWFLZXlzPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBW
ZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcywgUmVmPENE
TT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlzKHVzZURpc3RpbmN0aXZlSWRl
bnRpZmllciwgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBX
VEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZSkpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlzKGRvY3VtZW50LCB1c2VEaXN0aW5jdGl2ZUlkZW50
aWZpZXIsIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIHN1cHBvcnRlZFNlc3Npb25UeXBlcywgV1RG
TW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2UpKSk7CiAgICAgfQogCiAgICAg
fk1lZGlhS2V5cygpOwogCiAgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNy
ZWF0ZVNlc3Npb24oRG9jdW1lbnQmLCBNZWRpYUtleVNlc3Npb25UeXBlKTsKLSAgICB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKERvY3VtZW50JiwgY29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBC
dWZmZXJTb3VyY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIHZvaWQgYXR0YWNo
Q0RNQ2xpZW50KENETUNsaWVudCYpOwogICAgIHZvaWQgZGV0YWNoQ0RNQ2xpZW50KENETUNsaWVu
dCYpOwpAQCAtNjgsOCArNzYsMjAgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlJiBjZG1JbnN0
YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2U7IH0KICAgICBjb25zdCBDRE1JbnN0YW5jZSYgY2Rt
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlOyB9CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCB2b2lkKiBuZXh0Q2hpbGRJZGVudGlmaWVyKCkgY29uc3Q7
CisjZW5kaWYKKwogcHJvdGVjdGVkOgotICAgIE1lZGlhS2V5cyhib29sIHVzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVk
aWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOworICAg
IE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29s
IHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBl
PiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CisKKyAgICAvLyBDRE1JbnN0YW5j
ZUNsaWVudAorICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyNlbmRpZgogCiAgICAgYm9vbCBtX3VzZURpc3Rp
bmN0aXZlSWRlbnRpZmllcjsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsKQEAg
LTc4LDcgKzk4LDEzIEBAIHByb3RlY3RlZDoKICAgICBSZWY8Q0RNSW5zdGFuY2U+IG1faW5zdGFu
Y2U7CiAKICAgICBWZWN0b3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IG1fc2Vzc2lvbnM7Ci0gICAg
VmVjdG9yPENETUNsaWVudCo+IG1fY2RtQ2xpZW50czsKKyAgICBXZWFrSGFzaFNldDxDRE1DbGll
bnQ+IG1fY2RtQ2xpZW50czsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxX
VEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
ICAgIG11dGFibGUgdWludDY0X3QgbV9jaGlsZElkZW50aWZpZXJTZWVkIHsgMCB9OworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKaW5kZXggZDVjNDJkYTkxNmEwNWVk
ZWZjNjlhZWIxM2M5YjMzOGYzYWQ2MTNhYi4uNzQ2MzI0MmM2ODEzMGIwOTZlZDk3NWNhNTNlOWYz
MmYwMzhhOTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMzAsOCArMzAsNyBAQAogICAgIENvbmRpdGlvbmFsPUVO
Q1JZUFRFRF9NRURJQSwKICAgICBFbmFibGVkQXRSdW50aW1lPUVuY3J5cHRlZE1lZGlhQVBJLAog
ICAgIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnQsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7CiAg
ICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9u
IGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9
ICJ0ZW1wb3JhcnkiKTsKLSAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbD4gc2V0
U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsKKyAgICBQ
cm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0
aWZpY2F0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29j
b2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9B
VkZvdW5kYXRpb25TUEkuaAppbmRleCBlZWYzNTg0NDY4MGM3NjY1NTA3Y2MwYTc2YjY3Y2RhZWY3
MDE3ZjFlLi5kZTFjOTIxY2M5ZWJmMmVhZmM4ZDk2YzZlZTAwZDFlNmQ0MWE0MDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApA
QCAtMTc0LDYgKzE3NCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogQHByb3BlcnR5IChyZWFk
b25seSwgbnVsbGFibGUpIE5TRGF0YSAqY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmll
cjsKIC0gKHZvaWQpZXhwaXJlOwogLSAodm9pZClwcm9jZXNzQ29udGVudEtleVJlcXVlc3RXaXRo
SWRlbnRpZmllcjoobnVsbGFibGUgaWQpaWRlbnRpZmllciBpbml0aWFsaXphdGlvbkRhdGE6KG51
bGxhYmxlIE5TRGF0YSAqKWluaXRpYWxpemF0aW9uRGF0YSBvcHRpb25zOihudWxsYWJsZSBOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb3B0aW9uczsKKy0gKHZvaWQpYXNzb2NpYXRlQ29u
dGVudEtleVJlcXVlc3Q6KG5vbm51bGwgQVZDb250ZW50S2V5UmVxdWVzdCAqKWNvbnRlbnRLZXlS
ZXF1ZXN0OwogQGVuZAogCiBAaW50ZXJmYWNlIEFWQ29udGVudEtleVNlc3Npb24gKEFWQ29udGVu
dEtleUdyb3VwX1N1cHBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCA5ZjRlZGY1ODlhNDUxYTExN2UzMzcwZmE1ZDA5OTEwNmFjYTY3ZWNkLi42MzU3OTgw
MjNiZTE0ZGExYmIyMjZmZThjOWJmMjM5YjgyZWNkM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI4NjUsNiArMjg2NSwxMSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQog
ICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhKQoreworICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5p
dERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBy
b2dyZXNzRXZlbnRUaW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggYzg3NzkxZGE5ZDYwMTRkODhjZWI0ZTdmYWVkYTJhYzA5YzU4N2ZlNC4uYmRiZmU1
NGUyYjU5M2YwZTBjODk3YTk2NWU1ZjYzNDZkZDA1OGFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwMiw2ICs3MDIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
Q0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVj
ZXNzYXJ5KCkgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUZhY3RvcnkuaAppbmRleCBmYjM1MGQ0ODU1YTFhYjMzYjFiNmQxYzRkY2U3
M2E3ZTcyNmE2NTMxLi4yZDJjNDM2NDViM2Y3ZGEzN2M5MTE3NWY5ODY2YzJjZGQ1Y2JlNjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFj
dG9yeS5oCkBAIC0zMiw2ICszMiwxMiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIExvZ2dlcjsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENETVByaXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCA3MzRjOTM1MDc1NmQ3OWY3NGQ5MDY1ZTI0MDFj
MmVlOGFiYzEzMDc3Li4zNTE3OGVmMzYwNmY4YmY2Nzk0YTBhN2M1YTQ5NmYyMjU2ZjVkNzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTM2LDYgKzM2LDEzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MywxMiArNTAsMjYgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb247CiAKK2NsYXNzIENETUluc3RhbmNlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRy
PENETUluc3RhbmNlQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VD
bGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9
IDA7Cit9OworCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3Qg
YmUgdXNlZCBmcm9tIHRoZQogLy8gbWFpbi10aHJlYWQgb25seSEKIGNsYXNzIENETUluc3RhbmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNSW5zdGFuY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1JbnN0YW5jZSgpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
V2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2xpZW50KCkgeyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfQorI2VuZGlmCisKICAg
ICBlbnVtIGNsYXNzIEltcGxlbWVudGF0aW9uVHlwZSB7CiAgICAgICAgIE1vY2ssCiAgICAgICAg
IENsZWFyS2V5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCBkNDY0Yjc0ZDFjNzIwMmE5YTMz
OWRmZjY1ZDA2ZTA4MjA4OTY5ZGI0Li42YzEwNzAwN2FkYzVhYmM2YjE0YjRmZDhiMGQyYWYzOWQy
Y2JhMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtMzUsNiArMzUsMTIgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01OCw2
ICs2NCwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTGljZW5zZVR5cGUgPSBDRE1TZXNzaW9uVHlw
ZTsKICAgICB1c2luZyBNZXNzYWdlVHlwZSA9IENETU1lc3NhZ2VUeXBlOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYs
IGNvbnN0IHZvaWQqKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChX
ZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBmOGQyYzEzOWIwN2EzM2M3YmIzZDMyMzhj
NjE4ZTE3ZmI4ZjQzYTQxLi4xYzNlOGJlZjllMGZkZTViMWQxZTI4NTdmYzA0M2ZmNTg3NDFkNmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC0zMyw2ICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBMb2dnZXI7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTQzLDYgKzQ5LDEw
IEBAIGNsYXNzIENETVByaXZhdGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNUHJpdmF0ZT4g
ewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNETVByaXZhdGUoKTsKIAor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoV1RG
OjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9OworI2VuZGlmCisKICAgICBlbnVtIGNsYXNzIExv
Y2FsU3RvcmFnZUFjY2VzcyA6IGJvb2wgewogICAgICAgICBOb3RBbGxvd2VkLAogICAgICAgICBB
bGxvd2VkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXgg
NTAwMDFmNjU1NTUxMWEwNWI5MWRkNmNmNGU3NzhlZjBkYWNkY2YzOS4uMmQ2ZTlhYTYzYzRlMTk5
ZGQ5OTJlMTc0NDJlNWRhZTBlNjM0MThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCkBAIC0zNywxMSArMzcsMTMgQEAKICNpbmNsdWRlICJJU09TY2hlbWVU
eXBlQm94LmgiCiAjaW5jbHVkZSAiSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgiCiAjaW5jbHVkZSAi
SW5pdERhdGFSZWdpc3RyeS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3Jp
dGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dl
ckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC01NSw2ICs1NywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyBXVEZMb2dDaGFubmVsJiBs
b2dDaGFubmVsKCkgeyByZXR1cm4gTG9nRU1FOyB9CisjZW5kaWYKKwogY29uc3QgVmVjdG9yPEZv
dXJDQz4mIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6dmFsaWRGYWlyUGxheVN0cmVhbWlu
Z1NjaGVtZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Rm91ckNDPj4g
dmFsaWRTY2hlbWVzID0gVmVjdG9yPEZvdXJDQz4oewpAQCAtMjUwLDYgKzI1NiwxNCBAQCBib29s
IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAordm9pZCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExv
Z2dlcihMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKK3sKKyAgICBt
X2xvZ2dlciA9IG1ha2VSZWZQdHIobG9nZ2VyKTsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJ
ZGVudGlmaWVyOworfQorI2VuZGlmCisKIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewogICAgIHJl
dHVybiBjb3B5VG9WZWN0b3IodmFsaWRJbml0RGF0YVR5cGVzKCkpOwpAQCAtMjU3LDMzICsyNzEs
NDcgQEAgVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiAKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKIHsKLSAgICBpZiAoIVdURjo6YW55T2YoY29uZmln
dXJhdGlvbi5pbml0RGF0YVR5cGVzLCBbXSAoYXV0byYgaW5pdERhdGFUeXBlKSB7IHJldHVybiB2
YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOyB9KSkKKyAgICBpZiAo
IVdURjo6YW55T2YoY29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzLCBbXSAoYXV0byYgaW5pdERh
dGFUeXBlKSB7IHJldHVybiB2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5
cGUpOyB9KSkgeworICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
IiBmYWxzZSwgbm8gaW5pdERhdGFUeXBlIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCiAjaWYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIC8vIEZJWE1F
OiB2ZXJpZnkgdGhhdCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5vdCkgZXhw
b3NlIGEgZGlzdGluY3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50Ci0gICAgaWYgKGNvbmZp
Z3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZCkKKyAgICBpZiAoY29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gQ0RNUmVx
dWlyZW1lbnQ6OlJlcXVpcmVkKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiZmFsc2UsIHJlcXVyaWVkIGRpc3RpbmN0aXZlSWRlbnRpZmllciBub3Qgc3Vw
cG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5w
ZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYmICFDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCkpCisg
ICAgfQorCisgICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVp
cmVtZW50OjpSZXF1aXJlZCAmJiAhQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnN1cHBvcnRzUGVyc2lzdGFibGVTdGF0ZSgpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIHJlcXVpcmVkIHBlcnNpc3RlbnRTdGF0ZSBub3Qg
c3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlBlcnNpc3Rl
bnRMaWNlbnNlKQogICAgICAgICAmJiAhY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFp
bnMoQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkKLSAgICAgICAgJiYgIUNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCkpCisgICAgICAg
ICYmICFDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0
ZW50S2V5cygpKSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiZmFsc2UsIHNlc3Npb25UeXBlIFBlcnNpc3RlbnRMaWNlbnNlIG5vdCBzdXBwb3J0ZWQiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGlmICghY29uZmlndXJhdGlvbi5h
dWRpb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkKICAgICAgICAgJiYgIVdURjo6YW55T2YoY29uZmln
dXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcywgW10oYXV0byYgY2FwYWJpbGl0eSkgewogICAgICAg
ICAgICAgcmV0dXJuIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0
c01lZGlhQ2FwYWJpbGl0eShjYXBhYmlsaXR5KTsKLSAgICAgICAgfSkpCisgICAgICAgIH0pKSB7
CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIG5v
IGF1ZGlvIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMuaXNFbXB0
eSgpCiAgICAgICAgICYmICFXVEY6OmFueU9mKGNvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRp
ZXMsIFtdKGF1dG8mIGNhcGFiaWxpdHkpIHsKICAgICAgICAgICAgIHJldHVybiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY2FwYWJp
bGl0eSk7Ci0gICAgICAgIH0pKQorICAgICAgICB9KSkgeworICAgICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJmYWxzZSwgbm8gdmlkZW8gY29uZmlndXJhdGlv
biBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAorICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAidHJ1ZSwgc3VwcG9ydGVkIik7CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggMzg3YjlmOTI1YWQ3YWZiYWUyZDJjNTYxMmY4NGI0
MzRjMGYxMGY0ZS4uMjBkNDlmN2IwMWNlNTQzMmMyZjk4M2Y1ZTViNjZjYWRjNWVlMjM0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTU1LDYgKzU1LDEwIEBA
IHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcikgZmluYWw7CisjZW5kaWYKKwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC04MCw2ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygp
OworCitwcml2YXRlOgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFdURjo6TG9nZ2Vy
KiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsKKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9
CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZyI7IH0KKworICAgIFJlZlB0cjxXVEY6OkxvZ2dlcj4gbV9sb2dn
ZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCAwMGI2ZmI4MjIwY2E3ZjA1YzA5MWYyNjUzODZlMjk5
MmY0MGU2M2MwLi4yNzc1YTBkNTg1OTNkMzU3YzVkYjZkYjYxZGU1NzgzZDliYWNjN2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTQyLDYgKzQyLDEyIEBAIE9CSkNfQ0xBU1MgTlNFcnJv
cjsKIE9CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNTIFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIExvZ2dlcjsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzsKQEAgLTY3LDYg
KzczLDEwIEBAIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QygpOwogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkg
PSBkZWZhdWx0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dn
ZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCk7CiAgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVk
aWFDYXBhYmlsaXR5KGNvbnN0IENETU1lZGlhQ2FwYWJpbGl0eSYpOwpAQCAtNzgsNiArODgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKKyAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUlu
c3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWw7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogCkBAIC04Niw2ICs5
OCw4IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIEFWQ29udGVudEtl
eVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7
CisKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRp
ZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+PiYm
KSBmaW5hbDsKQEAgLTEwMSwxNCArMTE1LDI3IEBAIHB1YmxpYzoKICAgICB1c2luZyBLZXlzID0g
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0Owog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
ckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CisgICAgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0KikgY29uc3Q7CiAKIHByaXZhdGU6CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9OworICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiAiQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMiOyB9CisjZW5k
aWYKKworICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFp
blB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNv
cmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7
CiAgICAgVmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDPj4gbV9zZXNzaW9uczsKKyAgICBIYXNoU2V0PFJldGFpblB0cjxBVkNvbnRlbnRLZXlS
ZXF1ZXN0Pj4gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHM7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBt
X2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIGNsYXNzIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0
YW5jZVNlc3Npb24sIHB1YmxpYyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM+IHsKQEAgLTExNiw2ICsxNDMsMTAgQEAgcHVibGljOgogICAgIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM+JiYpOwogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQygpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9p
ZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKTsKKyNl
bmRpZgorCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDksNiArMTgwLDggQEAg
cHVibGljOgogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVxdWVzdCYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIGluaXRUeXBlID09IG90aGVyLmluaXRUeXBlICYmIHJlcXVlc3RzID09IG90
aGVyLnJlcXVlc3RzOyB9CiAgICAgfTsKIAorICAgIGJvb2wgaGFzUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVTZXNzaW9uT3JH
cm91cCgpOwogICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29u
c3Q7CkBAIC0xNTcsNiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXh0UmVxdWVzdCgp
OwogICAgIEFWQ29udGVudEtleVJlcXVlc3QqIGxhc3RLZXlSZXF1ZXN0KCkgY29uc3Q7CiAKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29u
c3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIq
IGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMiOyB9CisjZW5kaWYKKwogICAgIFJlZjxDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9pbnN0YW5jZTsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVwb3J0R3JvdXA+IG1fZ3JvdXA7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Np
b24+IG1fc2Vzc2lvbjsKQEAgLTE3Nyw2ICsyMTYsMTEgQEAgcHJpdmF0ZToKICAgICBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2sgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2s7CiAgICAgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2sgbV9jbG9zZVNlc3Npb25DYWxsYmFjazsKICAgICBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjazsKKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIFJlZlB0cjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IDJhOGJiMzhjNzAzMzA3YTcyYTcxMzUxM2ZhNmIyMzg0MTQz
YWExYzkuLmJmN2YzOGRlYjUwOGRiNmY4YWQ2YWFlYTA1NjY0MGEwNGE3NTM1OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0IDx3dGYvQWxnb3Jp
dGhtcy5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9KU09OVmFs
dWVzLmg+CisjaW1wb3J0IDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9C
YXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtMTYwLDggKzE2
MSw0MSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorc3RhdGljIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSB7IHJldHVybiBMb2dF
TUU7IH0KKyNlbmRpZgorCitzdGF0aWMgQXRvbVN0cmluZyBpbml0VHlwZUZvclJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAoIVtyZXF1ZXN0IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iob3B0aW9ucyldKSB7CisgICAgICAgIC8vIEFWQ29udGVudEtl
eVJlcXVlc3Qub3B0aW9ucyB3YXMgYWRkZWQgaW4gMTAuMTQuNDsgaWYgd2UgYXJlIHJ1bm5pbmcg
b24gYSBwcmV2aW91cyB2ZXJzaW9uCisgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgc3VwcG9ydCBm
b3IgJ2NlbmMnIGFueXdheSwgc28ganVzdCBhc3N1bWUgJ3NpbmYnLgorICAgICAgICByZXR1cm4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpOworICAgIH0KKworQUxMT1df
TkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorICAgIGF1dG8gbnNJbml0VHlwZSA9IChOU1N0
cmluZyopW3JlcXVlc3Qub3B0aW9ucyB2YWx1ZUZvcktleTpJbml0aWFsaXphdGlvbkRhdGFUeXBl
S2V5XTsKK0FMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECisgICAgaWYgKCFbbnNJbml0
VHlwZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkgeworICAgICAgICAvLyBUaGUgb25s
eSB3YXkgZm9yIGFuIGluaXRpYWxpemF0aW9uIGRhdGEgdG8gZW5kIHVwIGhlcmUgd2l0aG91dCBh
biBhcHByb3ByaWF0ZSBrZXkgaW4KKyAgICAgICAgLy8gdGhlIG9wdGlvbnMgZGljdGlvbmFyeSBp
cyBmb3IgdGhhdCBkYXRhIHRvIGhhdmUgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIEFWU3RyZWFtRGF0
YVBhcnNlcgorICAgICAgICAvLyBhbmQgY3VycmVudGx5LCB0aGUgb25seSBpbml0aWFsaXphdGlv
biBkYXRhIHN1cHBvcnRlZCBieSB0aGUgcGFyc2VyIGlzIHRoZSAnc2luZicga2luZC4KKyAgICAg
ICAgcmV0dXJuIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKK30KKwogQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDKCkgPSBkZWZhdWx0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIs
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRy
KGxvZ2dlcik7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKK30KKyNlbmRp
ZgorCiBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogewogICAgIGlmIChtX3Nlc3Npb24pCkBAIC0xODks
NiArMjIzLDIwIEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsKIH0KIAorUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFs
aXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQoreworICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtl
eVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CisgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVz
dEl0ZXI7CisgICAgICAgIGF1dG8gcmVxdWVzdFR5cGUgPSBpbml0VHlwZUZvclJlcXVlc3QocmVx
dWVzdC5nZXQoKSk7CisgICAgICAgIGF1dG8qIHJlcXVlc3RJbml0RGF0YSAgPSByZXF1ZXN0Lmdl
dCgpLmluaXRpYWxpemF0aW9uRGF0YTsKKyAgICAgICAgaWYgKGluaXREYXRhVHlwZSAhPSByZXF1
ZXN0VHlwZSB8fCBpbml0RGF0YSAhPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXF1ZXN0SW5pdERh
dGEpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0dXJuIG1fdW5leHBlY3Rl
ZEtleVJlcXVlc3RzLnRha2UocmVxdWVzdEl0ZXIpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpVcGRhdGVSZXNwb25zZUNvbGxlY3RvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC0yOTUsMTIgKzM0MywxNCBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwog
CiB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKKyAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNh
dGUpOwogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBz
dG9yYWdlRGlyZWN0b3J5KQogeworICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSKTsKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9z
dG9yYWdlVVJMID0gbmlsOwogICAgICAgICByZXR1cm47CkBAIC0zMzQsNiArMzg0LDE2IEBAIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAordm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5z
dGFuY2VDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
OworfQorCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbGVhckNs
aWVudCgpCit7CisgICAgbV9jbGllbnQgPSBudWxscHRyOworfQorCiBjb25zdCBTdHJpbmcmIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTeXN0ZW0oKSBjb25zdAogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleVN5c3RlbSB7ICJjb20uYXBwbGUu
ZnBzIl9zIH07CkBAIC0zNTEsNDQgKzQxMSw4MSBAQCBzdGF0aWMgQVZDb250ZW50S2V5UmVwb3J0
R3JvdXAqIGdyb3VwRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogCiB2
b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gc2Vzc2lvbkZvckdyb3VwKGdyb3VwRm9yUmVxdWVzdChyZXF1ZXN0KSkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICBzZXNz
aW9uLT5kaWRQcm92aWRlUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBVbmV4cGVjdGVk
IHJlcXVlc3QiKTsKKworICAgIG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmFkZChyZXF1ZXN0KTsK
KworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdFR5cGVGb3JSZXF1ZXN0KHJlcXVlc3QpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSkpOwogfQogCiB2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVj
dG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJiByZXF1ZXN0cykKIHsKLSAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JHcm91cChncm91cEZvclJlcXVlc3QocmVxdWVz
dHMuZmlyc3QoKS5nZXQoKSkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvclJl
cXVlc3QocmVxdWVzdHMuZmlyc3QoKS5nZXQoKSkpIHsKICAgICAgICAgc2Vzc2lvbi0+ZGlkUHJv
dmlkZVJlcXVlc3RzKFdURk1vdmUocmVxdWVzdHMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQog
CiB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVu
ZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yR3JvdXAoZ3JvdXBGb3JSZXF1ZXN0KHJlcXVlc3QpKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JSZXF1ZXN0KHJlcXVlc3QpKSB7CiAg
ICAgICAgIHNlc3Npb24tPmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QocmVxdWVzdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBFUlJP
Ul9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lv
bjsgZHJvcHBpbmciKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpy
ZXF1ZXN0KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvckdyb3VwKGdyb3Vw
Rm9yUmVxdWVzdChyZXF1ZXN0KSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9y
UmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICBzZXNzaW9uLT5kaWRQcm92aWRlUGVyc2lzdGFi
bGVSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7CiB9CiAKIHZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFW
Q29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TRXJyb3IgKmVycm9yKQogewotICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvckdyb3VwKGdyb3VwRm9yUmVxdWVzdChyZXF1ZXN0KSkp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzZXNzaW9uRm9yUmVxdWVzdChyZXF1ZXN0KSkgewog
ICAgICAgICBzZXNzaW9uLT5kaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChyZXF1ZXN0LCBlcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUg
c2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVz
dCkKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JHcm91cChncm91cEZvclJl
cXVlc3QocmVxdWVzdCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc2Vzc2lvbkZvclJlcXVl
c3QocmVxdWVzdCkpIHsKICAgICAgICAgc2Vzc2lvbi0+cmVxdWVzdERpZFN1Y2NlZWQocmVxdWVz
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2li
bGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAogYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJl
cXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24pCiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBzZXNzaW9uRm9yR3JvdXAoZ3JvdXBGb3JSZXF1ZXN0KHJlcXVlc3QpKSkKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IHNlc3Npb25Gb3JSZXF1ZXN0KHJlcXVlc3QpKQogICAgICAgICByZXR1
cm4gc2Vzc2lvbi0+c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKHJlcXVlc3QsIHJlYXNvbik7
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQwMSw4ICs0OTgsMTMgQEAgdm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0
YSAqc2Vzc2kKIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Z3Jv
dXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqIGdyb3Vw
LCBOU0RhdGEgKnNlc3Npb25JZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c2Vzc2lvbkZvckdyb3VwKGdyb3VwKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHNlc3Npb25G
b3JHcm91cChncm91cCkpIHsKICAgICAgICAgc2Vzc2lvbi0+Z3JvdXBTZXNzaW9uSWRlbnRpZmll
ckNoYW5nZWQoZ3JvdXAsIHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEVSUk9SX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwog
fQogCiB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNj
dXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sIG9ic2N1
cmVkKQpAQCAtNDI4LDYgKzUzMCwxOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KSBjb25zdAoreworICAgIGF1dG8gaW5k
ZXggPSBtX3Nlc3Npb25zLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8gc2Vzc2lvbikgeworICAgICAg
ICByZXR1cm4gc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNSZXF1ZXN0KHJlcXVlc3QpOworICAgIH0p
OworCisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9u
c1tpbmRleF0uZ2V0KCk7CisKKyAgICByZXR1cm4gc2Vzc2lvbkZvckdyb3VwKGdyb3VwRm9yUmVx
dWVzdChyZXF1ZXN0KSk7Cit9CisKIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JH
cm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCogZ3JvdXApIGNvbnN0CiB7CiAgICAgYXV0byBp
bmRleCA9IG1fc2Vzc2lvbnMuZmluZE1hdGNoaW5nKFtncm91cF0gKGF1dG8gc2Vzc2lvbikgewpA
QCAtNDUwLDYgKzU2NCwxNCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6On5DRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZwogICAgIFttX2RlbGVn
YXRlIGludmFsaWRhdGVdOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKExvZ2dl
ciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0g
bWFrZVJlZlB0cihsb2dnZXIpOworICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7
Cit9CisjZW5kaWYKKwogdXNpbmcgS2V5cyA9IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6S2V5czsKIHN0YXRpYyBLZXlzIGtleUlEc0ZvclJlcXVlc3QoQVZDb250
ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKIHsKQEAgLTQ3MywyNyArNTk1LDYgQEAgc3RhdGljIEtl
eXMga2V5SURzRm9yUmVxdWVzdChjb25zdCBSZXF1ZXN0JiByZXF1ZXN0cykKICAgICByZXR1cm4g
a2V5SURzOwogfQogCi1zdGF0aWMgQXRvbVN0cmluZyBpbml0VHlwZUZvclJlcXVlc3QoQVZDb250
ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBpZiAoIVtyZXF1ZXN0IHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iob3B0aW9ucyldKSB7Ci0gICAgICAgIC8vIEFWQ29udGVudEtleVJl
cXVlc3Qub3B0aW9ucyB3YXMgYWRkZWQgaW4gMTAuMTQuNDsgaWYgd2UgYXJlIHJ1bm5pbmcgb24g
YSBwcmV2aW91cyB2ZXJzaW9uCi0gICAgICAgIC8vIHdlIGRvbid0IGhhdmUgc3VwcG9ydCBmb3Ig
J2NlbmMnIGFueXdheSwgc28ganVzdCBhc3N1bWUgJ3NpbmYnLgotICAgICAgICByZXR1cm4gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpOwotICAgIH0KLQotQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgotICAgIGF1dG8gbnNJbml0VHlwZSA9IChOU1N0cmlu
ZyopW3JlcXVlc3Qub3B0aW9ucyB2YWx1ZUZvcktleTpJbml0aWFsaXphdGlvbkRhdGFUeXBlS2V5
XTsKLUFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECi0gICAgaWYgKCFbbnNJbml0VHlw
ZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkgewotICAgICAgICAvLyBUaGUgb25seSB3
YXkgZm9yIGFuIGluaXRpYWxpemF0aW9uIGRhdGEgdG8gZW5kIHVwIGhlcmUgd2l0aG91dCBhbiBh
cHByb3ByaWF0ZSBrZXkgaW4KLSAgICAgICAgLy8gdGhlIG9wdGlvbnMgZGljdGlvbmFyeSBpcyBm
b3IgdGhhdCBkYXRhIHRvIGhhdmUgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIEFWU3RyZWFtRGF0YVBh
cnNlcgotICAgICAgICAvLyBhbmQgY3VycmVudGx5LCB0aGUgb25seSBpbml0aWFsaXphdGlvbiBk
YXRhIHN1cHBvcnRlZCBieSB0aGUgcGFyc2VyIGlzIHRoZSAnc2luZicga2luZC4KLSAgICAgICAg
cmV0dXJuIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKLX0KLQogS2V5cyBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiB7CiAgICAgLy8gRklY
TUUocmRhcjovL3Byb2JsZW0vMzU1OTcxNDEpOiB1c2UgdGhlIGZ1dHVyZSBBVkNvbnRlbnRLZXlS
ZXF1ZXN0IGtleUlEIHByb3BlcnR5LCByYXRoZXIgdGhhbiBwYXJzaW5nIGl0IG91dCBvZiB0aGUg
aW5pdApAQCAtNTEwLDIwICs2MTEsMzUgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vu
c2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgeworICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlw
ZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAoIW1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpIHsKKyAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIG5vIHNl
cnZlckNlcnRpZmljYXRlIik7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKCFlbnN1cmVTZXNzaW9uT3JHcm91cCgpKSB7CisgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBjb3VsZCBub3QgY3JlYXRlIHNl
c3Npb24gb3IgZ3JvdXAgb2JqZWN0Iik7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKGF1dG8gdW5leHBlY3RlZFJlcXVlc3QgPSBtX2luc3RhbmNlLT50
YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoaW5pdERhdGFUeXBl
LCBpbml0RGF0YSkpIHsKKyAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICIgZm91bmQgdW5leHBlY3RlZFJlcXVlc3QgbWF0Y2hpbmcgaW5pdERhdGEiKTsKKyAgICAg
ICAgaWYgKG1fZ3JvdXApIHsKKyAgICAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfQkVHSU4KKyAgICAgICAgICAgIFttX2dyb3VwIGFzc29jaWF0ZUNvbnRlbnRLZXlSZXF1ZXN0
OnVuZXhwZWN0ZWRSZXF1ZXN0LmdldCgpXTsKKyAgICAgICAgICAgIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECisgICAgICAgIH0KKyAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgICAgIGRpZFByb3ZpZGVSZXF1ZXN0KHVuZXhw
ZWN0ZWRSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFp
blB0cjxOU1N0cmluZz4gaWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFs
aXphdGlvbkRhdGE7CiAKQEAgLTUzOCwxMCArNjU0LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlCiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBpbml0RGF0YVR5cGUgbm90IHN1cHBwb3J0ZWQi
KTsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmco
KSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBwcm9jZXNzaW5nIHJlcXVlc3QiKTsKICAg
ICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKIAogICAgIGlm
IChtX2dyb3VwKSB7CkBAIC01ODIsMTAgKzcwMCwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgpOwog
CiAgICAgICAgIGlmICghY2VydGlmaWNhdGUgfHwgIXN0b3JhZ2VVUkwpIHsKKyAgICAgICAgICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRnZWRcIiwg
RmFpbGVkLCBubyBjZXJ0aWZpY2F0ZSBhbmQgc3RvcmFnZVVSTCIpOwogICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZh
aWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIlwiYWNrbm93bGVkZ2VkXCIsIFN1Y2NlZWRl
ZCwgcmVtb3ZpbmcgZXhwaXJlZCBzZXNzaW9uIHJlcG9ydCIpOwogICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmll
cjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsK
ICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IFN1Y2NlZWRlZCk7CkBAIC01OTUsOSArNzE1LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgaWYgKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwg
InJlbmV3Il9zKSkgewogICAgICAgICBhdXRvIHJlcXVlc3QgPSBsYXN0S2V5UmVxdWVzdCgpOwog
ICAgICAgICBpZiAoIXJlcXVlc3QpIHsKKyAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiXCJyZW5ld1wiLCBGYWlsZWQsIG5vIG91dHN0YW5kaW5nIGtleXMi
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJyZW5ld1wi
LCBwcm9jZXNzaW5nIHJlbmV3YWwiKTsKICAgICAgICAgYXV0byBzZXNzaW9uID0gbV9zZXNzaW9u
ID8gbV9zZXNzaW9uLmdldCgpIDogbV9pbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKTsKICAg
ICAgICAgW3Nlc3Npb24gcmVuZXdFeHBpcmluZ1Jlc3BvbnNlRGF0YUZvckNvbnRlbnRLZXlSZXF1
ZXN0OnJlcXVlc3RdOwogICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOwpAQCAtNjA1LDExICs3MjcsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICB9CiAKICAgICBpZiAoIW1fY3VycmVudFJlcXVlc3QpIHsKKyAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBjdXJyZW50UmVxdWVzdCIp
OwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBLZXlzIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKICAgICBp
ZiAoa2V5SURzLmlzRW1wdHkoKSkgeworICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIGtleUlEcyBpbiBjdXJyZW50UmVxdWVzdCIpOwogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYyOCwxMCArNzUyLDEy
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgICAgICBpZiAoIXJlc3BvbnNlcyB8fCByZXNwb25zZXMudmFsdWUoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
IidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBubyByZXNwb25zZXMiKTsKICAgICAgICAgICAgICAg
ICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICInY2VuYycgaW5pdERhdGEsIFN1Y2NlZWRlZCwgbm8ga2V5SURzIGluIGN1cnJlbnRSZXF1
ZXN0Iik7CiAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwga2V5U3Rh
dHVzZXMoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAg
ICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
Y3VycmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CkBAIC02OTcsMTIgKzgyMywxNSBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9OwogICAgICAgICBmb3IgKGF1dG8gdmFsdWUg
OiAqYXJyYXkpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VSZXNwb25zZSh2YWx1ZSkpIHsKKyAg
ICAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidjZW5j
JyBpbml0RGF0YSwgRmFpbGVkLCBjb3VsZCBub3QgcGFyc2UgcmVzcG9uc2UiKTsKICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyBy
ZXNwb25zZSIpOwogICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZp
cnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICB9CiAK
ICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFj
ayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2Vz
cyBjYWxsYmFjay4KICAgICBzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3JpcHRpb24gbWV0aG9kID0g
cHJvdG9jb2xfZ2V0TWV0aG9kRGVzY3JpcHRpb24oQHByb3RvY29sKEFWQ29udGVudEtleVNlc3Np
b25EZWxlZ2F0ZSksIEBzZWxlY3Rvcihjb250ZW50S2V5U2Vzc2lvbjpjb250ZW50S2V5UmVxdWVz
dERpZFN1Y2NlZWQ6KSwgTk8sIFlFUyk7CkBAIC03MjMsMTEgKzg1MiwxMyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUgbGljZW5zZQogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6UGVyc2lz
dGVudFVzYWdlUmVjb3JkKSB7CiAgICAgICAgIGF1dG8qIHN0b3JhZ2VVUkwgPSBtX2luc3RhbmNl
LT5zdG9yYWdlVVJMKCk7CiAgICAgICAgIGlmICghbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRl
QWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMKSB7CisgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG1pc21hdGNoZWQgc2Vzc2lvbiB0eXBlIik7
CiAgICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CiAgICAgICAgIGlmICghY2Vy
dGlmaWNhdGUpIHsKKyAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiIEZhaWxlZCwgbm8gc2Vzc2lvbkNlcnRpZmljYXRlIik7CiAgICAgICAgICAgICBjYWxs
YmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNl
c3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTc0OCwxNiArODc5LDE5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoY2hhbmdlZEtleXMuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIHNl
c3Npb24gZGF0YSBmb3VuZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5v
U2Vzc2lvbkRhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAg
REVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgU3VjY2VlZGVkLCBtaXNtYXRj
aGVkIHNlc3Npb24gdHlwZSIpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlz
KSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKICAgICB9CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKKyAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUik7CiAgICAgaWYgKG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykgewogICAgICAgICBt
X3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9u
SWQsIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fcmVxdWVzdExpY2Vuc2VDYWxs
YmFjayk7CkBAIC03ODgsNiArOTIyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAg
ICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwog
CiAgICAgICAgIGlmICghbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFz
dG9yYWdlVVJMIHx8ICFjZXJ0aWZpY2F0ZSkgeworICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93
ZWQgb3Igbm8gc3RvcmFnZVVSTCBvciBubyBjZXJ0aWZpY2F0ZSIpOwogICAgICAgICAgICAgY2Fs
bGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTgxMCw2ICs5NDUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFleHBpcmVkU2Vzc2lvbnNBcnJheS5nZXQoKS5jb3VudCkg
eworICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgU3Vj
Y2VlZGVkLCBubyBleHBpcmVkIHNlc3Npb25zIik7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC04MTksNiArOTU1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYKICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8gaGF2ZSBh
IHBlcnNpc3RlbnQtdXNhZ2UtcmVjb3JkIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBnZW5lcmF0ZQog
ICAgICAgICAgICAgLy8gYSBwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBtZXNzYWdlIG9uIGNsb3Nl
LiBTaWduYWwgdGhpcyBieSBmYWlsaW5nIGFuZCBhc3NlcnQuCiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiIEZhaWxlZCwgbm8gZXhwaXJlZCBzZXNzaW9uIGRhdGEiKTsKICAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTgyOCw4ICs5NjUsOSBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJgogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBleHBpcmVkU2Vzc2lv
bnNEYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlz
dDpwcm9wZXJ0eUxpc3QgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0
aW9uczprQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUgZXJyb3I6bnVsbHB0cl07CiAKICAgICAgICAg
aWYgKGV4cGlyZWRTZXNzaW9uc0NvdW50ID4gMSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKEVN
RSwgIk11bHRpcGxlKCVsdSkgZXhwaXJlZCBzZXNzaW9uIHJlcG9ydHMgZm91bmQgd2l0aCBzYW1l
IHNlc3Npb25JRCglcykhIiwgZXhwaXJlZFNlc3Npb25zQ291bnQsIHNlc3Npb25JZC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiTXVsdGlwbGUoIiwgZXhwaXJlZFNlc3Npb25zQ291bnQsICIpIGV4cGlyZWQgc2Vzc2lvbiBy
ZXBvcnRzIGZvdW5kIHdpdGggc2FtZSBzZXNzaW9uSUQoIiwgc2Vzc2lvbklkLCAiKSEiKTsKIAor
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBTdWNjZWVkZWQi
KTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGV4cGlyZWRTZXNzaW9uc0RhdGEuZ2V0KCkpLCBTdWNjZWVkZWQpOwogICAgIH0KIH0K
QEAgLTExMTMsNiArMTI1MSwxNSBAQCBBVkNvbnRlbnRLZXlSZXF1ZXN0KiBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omxhc3RLZXlSZXF1ZXN0KAogICAgIHJldHVy
biBsYXN0UmVxdWVzdC5yZXF1ZXN0cy5sYXN0KCkuZ2V0KCk7CiB9CiAKK2Jvb2wgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpoYXNSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqIGtleVJlcXVlc3QpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDog
bV9yZXF1ZXN0cykgeworICAgICAgICBpZiAocmVxdWVzdC5yZXF1ZXN0cy5jb250YWlucyhrZXlS
ZXF1ZXN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIGJvb2wgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVz
dCwgTlNTdHJpbmcgKnJlYXNvbikKIHsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>