<?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>176392</bug_id>
          
          <creation_ts>2017-09-05 12:31:21 -0700</creation_ts>
          <short_desc>[WebCrypto] Downcast parameters and keys at the platform operation callsites</short_desc>
          <delta_ts>2017-09-27 12:55:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345568</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-05 12:31:21 -0700</bug_when>
    <thetext>[WebCrypto] Downcast parameters and keys at the platform operation callsites</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345579</commentid>
    <comment_count>1</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-05 12:50:13 -0700</bug_when>
    <thetext>As discussed here:
https://bugs.webkit.org/show_bug.cgi?id=175539#c18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345580</commentid>
    <comment_count>2</comment_count>
      <attachid>319927</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-05 12:50:21 -0700</bug_when>
    <thetext>Created attachment 319927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345582</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-05 12:52:21 -0700</bug_when>
    <thetext>Attachment 319927 did not pass style-queue:


ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:86:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:91:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CFBMac.cpp:65:  CryptoAlgorithmAES_CFB::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CFBMac.cpp:71:  CryptoAlgorithmAES_CFB::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:113:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:121:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:198:  CryptoAlgorithmAES_CTR::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:206:  CryptoAlgorithmAES_CTR::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:66:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:71:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp:169:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp:177:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:141:  CryptoAlgorithmAES_CTR::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:147:  CryptoAlgorithmAES_CTR::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:149:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:75:  CryptoAlgorithmAES_GCM::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:80:  CryptoAlgorithmAES_GCM::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:57:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:62:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp:33:  CryptoAlgorithmAES_CFB::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp:38:  CryptoAlgorithmAES_CFB::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:84:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:89:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:143:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:151:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:65:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:71:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:137:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:145:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:182:  CryptoAlgorithmAES_GCM::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:190:  CryptoAlgorithmAES_GCM::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:62:  CryptoAlgorithmAES_KW::platformWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:67:  CryptoAlgorithmAES_KW::platformUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:96:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:104:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_KWGCrypt.cpp:118:  CryptoAlgorithmAES_KW::platformWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_KWGCrypt.cpp:126:  CryptoAlgorithmAES_KW::platformUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 37 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345726</commentid>
    <comment_count>4</comment_count>
      <attachid>319927</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-05 17:06:54 -0700</bug_when>
    <thetext>Comment on attachment 319927
Patch

Lovely! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345833</commentid>
    <comment_count>5</comment_count>
      <attachid>319927</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-05 23:48:52 -0700</bug_when>
    <thetext>Comment on attachment 319927
Patch

Clearing flags on attachment: 319927

Committed r221665: &lt;http://trac.webkit.org/changeset/221665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345834</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-09-05 23:48:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353737</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:55:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694284&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319927</attachid>
            <date>2017-09-05 12:50:21 -0700</date>
            <delta_ts>2017-09-05 23:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176392-20170905215018.patch</filename>
            <type>text/plain</type>
            <size>94704</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdjMjhiMDJlMmNhOWUy
NjFhNGI1NzllNDg3Mjk0YTQyOTNlMDhhZS4uOTQ5YmM3N2Y2OTE0NTNiOGVmMTVlZDJiNDA0MmYz
ZmQ1YjA5NmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxNy0wOS0wNSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dlYkNyeXB0b10g
RG93bmNhc3QgcGFyYW1ldGVycyBhbmQga2V5cyBhdCB0aGUgcGxhdGZvcm0gb3BlcmF0aW9uIGNh
bGxzaXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc2MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG93bmNhc3QgdG8gYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtZXRlciBhbmQga2V5IHR5cGVzIGlu
IHRoZSBzaGFyZWQKKyAgICAgICAgY29kZSB0aGF0IHRoZW4gaW52b2tlcyBwbGF0Zm9ybS1zcGVj
aWZpYyBvcGVyYXRpb24gaW1wbGVtZW50YXRpb25zLgorICAgICAgICBUaGlzIHJlZHVjZXMgdGhl
IGR1cGxpY2F0ZWQgZG93bmNhc3RzIGFjcm9zcyBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zCisg
ICAgICAgIHRoYXQgZG9uJ3QgZGlmZmVyIGF0IGFsbCBpbiB0aGlzIGJlaGF2aW9yLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtQUVTX0NCQzo6ZGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19DRkIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
QUVTX0NGQjo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNf
Q0ZCOjpkZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1BRVNfQ0ZCLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpl
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OmRlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIu
aDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19HQ006OmVuY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6ZGVjcnlwdCk6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5oOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OndyYXBLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjp1bndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUVDRFNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUVDRFNBOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjp2
ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNB
Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1IS0RGOjpkZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmg6CisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobUhNQUM6OnZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtSE1BQy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVBCS0RGMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1Q
QktERjI6OmRlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMi5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6CisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlm
eSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVj
cnlwdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVyaWZ5KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmg6CisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQp
OgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQkdDcnlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybUVu
Y3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NGQjo6cGxhdGZv
cm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19D
VFJHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6
cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19D
VFI6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1BRVNfR0NNR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfR0NNOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1XcmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1VbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNy
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNy
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAq
IGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNy
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9y
bVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBX1BTU0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUFFU19DRkJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtQUVTX0NGQjo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19LV01hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtV3JhcEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtVW53cmFwS2V5KToKKyAgICAgICAg
KiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1Q
QktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQp
OgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKwogMjAxNy0wOS0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBTdHJpbmdWaWV3IG1v
cmUgaW4gRE9NRmlsZVN5c3RlbSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCmluZGV4IDQzOTBj
YTEwYjE1Nzc4Mzc4YjM5N2YyYTBhOTZjY2U3ODI5OWY2NTkuLjE5YjVmYjBlMzk2NzE4NjE5ZGVj
ZDZiMzVkY2Y3Y2FlMDVlYTU3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3
b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwKICAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkg
PSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KV0gewotICAgICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtRW5jcnlwdCgqcGFyYW1ldGVycywga2V5LCBwbGFpblRleHQp
OworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNhc3Q8Q3J5cHRvS2V5QUVT
PihrZXkuZ2V0KCkpLCBwbGFpblRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtODAsNyArODAs
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JgogCiAgICAgZGlzcGF0Y2hPcGVyYXRpb24od29y
a1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksCiAgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0g
V1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0gewotICAgICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdCgqcGFyYW1ldGVycywga2V5LCBjaXBoZXJUZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPigqcGFyYW1ldGVycyksIGRvd25jYXN0PENyeXB0b0tleUFF
Uz4oa2V5LmdldCgpKSwgY2lwaGVyVGV4dCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmgKaW5kZXggYTBiNDkxMjc1MTgwM2M4MjhhMWNjNjBiN2MzM2QxNDNjYjVlYzdlYy4uYWIy
NWJjMjg2Nzg2Y2ZlNWJlYmIyZjNlYjMwZDc2YWZmYjAxMGNmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aApAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENyeXB0
b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtczsKIGNsYXNzIENyeXB0b0tleUFFUzsKIAogY2xhc3Mg
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewpA
QCAtNTAsOCArNTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZv
cm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAotICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5
QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBh
cmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAppbmRleCAyYjdk
ZWMyYmU5ZjA3YmY3NzY1NjIyNzVjMDAzMzI5YmE5ZjQwOTQxLi43M2Y1OGJmMzhiYTM2NWE4MTM0
YTVlYmU0NDRiZmE4YTdlYTgxMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DRkI6OmVuY3J5cHQoc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JgogCiAgICAgZGlzcGF0Y2hPcGVyYXRpb24o
d29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksCiAgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCldIHsKLSAgICAg
ICAgICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoKnBhcmFtZXRlcnMsIGtleSwgcGxhaW5UZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPigqcGFyYW1ldGVycyksIGRvd25jYXN0PENyeXB0b0tleUFF
Uz4oa2V5LmdldCgpKSwgcGxhaW5UZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTgwLDcgKzgw
LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdv
cmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLAogICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9
IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCldIHsKLSAgICAg
ICAgICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQoKnBhcmFtZXRlcnMsIGtleSwgY2lwaGVyVGV4
dCk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1EZWNyeXB0KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUFlc0NiY0NmYlBhcmFtcz4oKnBhcmFtZXRlcnMpLCBkb3duY2FzdDxDcnlwdG9LZXlB
RVM+KGtleS5nZXQoKSksIGNpcGhlclRleHQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NG
Qi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NGQi5oCmluZGV4IDZkZGI4NzZkYmI4MGIyN2Y0YjM2MDI1NDQ0ZTgyYzI2OTZlNDQ4ZTYuLjAz
YWIwNWEwMzI0Y2ExNzkzYzE0ODljMjM2MmMyNDBmMWMzMzEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DRkIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZC
LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDcnlw
dG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM7CiBjbGFzcyBDcnlwdG9LZXlBRVM7CiAKIGNsYXNz
IENyeXB0b0FsZ29yaXRobUFFU19DRkIgZmluYWwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsK
QEAgLTUwLDggKzUxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlG
b3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlwdChDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZv
cm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tl
eUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQ
YXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAKaW5kZXggNTM4
NDdmNDFiZjkyZWU0YmI1N2MwYTYyNDhkNjAxMDgzODlhOTJhNy4uYzYxOGViNjBhN2FmMGFkMDE3
ZmM0N2ZlNWJmNjZjNzU4ZDJhZjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjplbmNyeXB0KHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIGRpc3BhdGNoT3BlcmF0aW9u
KHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLAogICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtl
eSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpXSB7Ci0gICAg
ICAgICAgICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIHBsYWluVGV4
dCk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUFlc0N0clBhcmFtcz4oKnBhcmFtZXRlcnMpLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+
KGtleS5nZXQoKSksIHBsYWluVGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC04OSw3ICs4OSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3Jr
UXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwKICAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBX
VEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpXSB7Ci0gICAgICAg
ICAgICByZXR1cm4gcGxhdGZvcm1EZWNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIGNpcGhlclRleHQp
OworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1BZXNDdHJQYXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihr
ZXkuZ2V0KCkpLCBjaXBoZXJUZXh0KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIu
aAppbmRleCBjZDc0Y2YxMzBlMmQ1OGM3NWYxNmRkZmU3ZDkzOWNjODNhNjJkZjVkLi45ZThiZjA1
NDhhNTFmMWYxZTNmNGEwZGJjMTBiMDdlMDBkMDBhNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oCkBA
IC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zOwogY2xhc3MgQ3J5cHRvS2V5QUVTOwogCiBjbGFzcyBDcnlwdG9B
bGdvcml0aG1BRVNfQ1RSIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CkBAIC01MCw4
ICs1MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBS
ZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlw
dChDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zJiwgY29uc3Qg
Q3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwCmluZGV4IGJhYWMwNWM0NWQ5ZjcxY2U2
MTg0OTk3YWZkNTUzNGFjZGNiYzlkZjUuLjE3M2NiZmY0NGI2NTZhYTY0ODUwMTgyZDgxNGU1NmFj
NWY2ZTU2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19HQ00uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mCiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNv
bnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKICAg
ICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtl
eSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KV0gewotICAgICAgICAgICAgcmV0dXJu
IHBsYXRmb3JtRW5jcnlwdCgqcGFyYW1ldGVycywga2V5LCBwbGFpblRleHQpOworICAgICAgICAg
ICAgcmV0dXJuIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNHY21Q
YXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkuZ2V0KCkpLCBw
bGFpblRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0dDTTo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mCiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRl
eHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKICAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSks
IGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpXSB7Ci0gICAgICAgICAgICByZXR1cm4g
cGxhdGZvcm1EZWNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIGNpcGhlclRleHQpOworICAgICAgICAg
ICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNHY21Q
YXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkuZ2V0KCkpLCBj
aXBoZXJUZXh0KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uaAppbmRleCAzOTll
YWFjNWEwZWY1NjNhOGNlMGQ2MTcyYjQ0ZmFhMTYxZTVjMzZiLi5hNTIwZmQ2NzI4NjU0ZGZkNjRj
N2E2ZWIwMzM1ZGQ5ZmNlYjQ2Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTS5oCkBAIC0zMSw2ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3J5cHRvQWxnb3JpdGhtQWVzR2Nt
UGFyYW1zOwogY2xhc3MgQ3J5cHRvS2V5QUVTOwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1BRVNf
R0NNIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CkBAIC01MCw4ICs1MSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5
PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
RXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYpIGZpbmFsOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gcGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdv
cml0aG1BZXNHY21QYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9y
bURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVT
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfS1cuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXLmNwcAppbmRleCBkMDU0MTU2YWI4ZjMzYjVmMjNjODEzMTQ3YTk3ZTc3
N2RjNGQwZTE3Li5jY2I2MTZiZWI4NzliYjY2Zjg1MGIzNDc3NTNjZWU3OGIxZjAwMzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfS1cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUFFU19LVy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19LVzo6d3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBwbGF0Zm9y
bVdyYXBLZXkoa2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3Jt
V3JhcEtleShkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleS5nZXQoKSksIFdURk1vdmUoZGF0YSkp
OwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2socmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICByZXR1cm47
CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OndyYXBLZXko
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEKIAogdm9pZCBDcnlw
dG9BbGdvcml0aG1BRVNfS1c6OnVud3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3Jt
VW53cmFwS2V5KGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9y
bVVud3JhcEtleShkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleS5nZXQoKSksIFdURk1vdmUoZGF0
YSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2socmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfS1cuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19LVy5oCmluZGV4IGU5MjJkYzhkZTRjY2NjOGE2NjQ2YTM4OTA4MzU3NDIy
NWY1NTgyMDguLmUwYTU1N2Y3MTMzYjdhNmYzMmYzMDcyMzllZTM0ZjBmODRhYWFhYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19LVy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19LVy5oCkBAIC01MCw4ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bndyYXBL
ZXkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0
S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAotICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtV3JhcEtleShjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVVud3JhcEtleShjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBwbGF0Zm9ybVdyYXBLZXkoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
cGxhdGZvcm1VbndyYXBLZXkoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCmluZGV4
IDAzZDVhZGFhZWViODIyZmUxYTk2ZGI3NzMzZjRmNzkzNDljNWRiNjYuLjM3N2Y4YzZiMDNmMjZk
NDJkNjQ4MzU0MmNkNzU3ZjY5MDA5MjYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKICAgICBjb250ZXh0LnJlZigpOwogICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaCgKICAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkp
LCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25OdWxsKCksIGxl
bmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gZGVyaXZlZEtleSA9IHBsYXRmb3JtRGVy
aXZlQml0cyhiYXNlS2V5LCBwdWJsaWNLZXkpOworICAgICAgICAgICAgYXV0byBkZXJpdmVkS2V5
ID0gcGxhdGZvcm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5LmdldCgp
KSwgZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KHB1YmxpY0tleS5nZXQoKSkpOwogICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKICAgICAgICAgICAgICAgICBbZGVyaXZlZEtleSA9IFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmgKaW5kZXggNjkwMTMyYjVhODAxOGNlM2JhM2U1MzNkODI1OGM5OTE5OWNh
ZTg5NS4uMTIzZWU2OTZjZTFmNTljOTExNzAwNGIxMDcxNDUyODcwMjFhODBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVD
REguaApAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENy
eXB0b0tleUVDOworCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1FQ0RIIGZpbmFsIDogcHVibGljIENy
eXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBzX25hbWUgPSAiRUNESCI7CkBAIC00Niw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBL
ZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9LZXkmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYs
IGNvbnN0IENyeXB0b0tleUVDJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RTQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1FQ0RTQS5jcHAKaW5kZXggNzY3NzkxZDZjOTIyY2MzMzFjOGFjZDk3OTkwMjY5YTU2ZDgxNTA5
Yi4uOTA0OTQ5M2EzOTAwMDlhZTE5MTkxNWIwYzlmNDQ0ZTNiMWY2YjJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVD
RFNBLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1FY2RzYVBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU3LDcgKzU4LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RT
QTo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXIK
IAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBbcGFyYW1ldGVycyA9
IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSldIHsKLSAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oKnBhcmFtZXRlcnMsIGtl
eSwgZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWduKGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyksIGRvd25jYXN0PENyeXB0b0tleUVD
PihrZXkuZ2V0KCkpLCBkYXRhKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTcwLDcgKzcxLDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmIHAKIAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1
ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LAogICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1v
dmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShk
YXRhKV0gewotICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5KCpwYXJhbWV0ZXJzLCBr
ZXksIHNpZ25hdHVyZSwgZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnko
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNh
c3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSksIHNpZ25hdHVyZSwgZGF0YSk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNEU0EuaAppbmRleCBlMWRmODgwOWE2ZjBjYTM2NWZhMzNlZTE2NTQyMDk3
YWY5ZTI1ZTFhLi43MzhmYTYwZGU4MzhhMjgwYzk5ZmM5ZTNmMGQ5ZGJlYjhkZjIwZWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDRFNBLmgKQEAgLTMxLDYgKzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtczsKK2NsYXNzIENyeXB0b0tleUVDOworCiBj
bGFzcyBDcnlwdG9BbGdvcml0aG1FQ0RTQSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0g
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIkVD
RFNBIjsKQEAgLTQ3LDggKzUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlw
dG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4
cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci0gICAg
c3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMm
LCBjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRp
YyBFeGNlcHRpb25Pcjxib29sPiBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1IS0RGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhLREYuY3BwCmluZGV4IGVjNzFlZjE3Njc4NWZmNzgyMTA4YjdmNDc3ZDE0MThmNjg1NzJj
ZTQuLjg3OWYxZmYyZWQyNDc3NjA5NzIxZTBhYTQ2ODJlMjhlMmU4MzlmOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhL
REYuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAot
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1Ia2RmUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RG
OjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYK
IAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBbcGFyYW1ldGVycyA9
IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGhd
IHsKLSAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybURlcml2ZUJpdHMoKnBhcmFtZXRlcnMsIGJh
c2VLZXksIGxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1EZXJpdmVCaXRzKGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KCpwYXJhbWV0ZXJzKSwgZG93bmNhc3Q8
Q3J5cHRvS2V5UmF3PihiYXNlS2V5LmdldCgpKSwgbGVuZ3RoKTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhLREYuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhLREYuaAppbmRleCA5ODAyMTViNDQ5YmI4OTgxY2NkOWJhNjkzNzZkMDFlNjg2MWJlYjc0
Li5lZGY2N2RiMTUzMzJmZGRlMzAzZmNiYTExOGVkODYzNWQyZjBjODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5o
CkBAIC0zMSw2ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3J5cHRv
QWxnb3JpdGhtSGtkZlBhcmFtczsKK2NsYXNzIENyeXB0b0tleVJhdzsKKwogY2xhc3MgQ3J5cHRv
QWxnb3JpdGhtSEtERiBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIkhLREYiOwpAQCAtNDUs
NyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwg
S2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4g
Z2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAot
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0
cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsK
KyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJp
dHMoQ3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJhdyYsIHNpemVf
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IDA0
MWEyOTJiOGEwZDU2N2ZmNTNmOGZmMTJmMzRiZmE2YzBhYzI4ZjEuLmQ4MmM5ZjU4NTMxMjZkYjA1
NGZkMWIzYWE1YzExYmI4ZTFhM2JmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmCiB7CiAgICAgZGlzcGF0Y2hPcGVyYXRpb24od29y
a1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksCiAgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
XSB7Ci0gICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWduKGtleSwgZGF0YSk7CisgICAgICAg
ICAgICByZXR1cm4gcGxhdGZvcm1TaWduKGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQo
KSksIGRhdGEpOwogICAgICAgICB9KTsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiwgUgogewogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4
dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAg
ICBba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnko
a2V5LCBzaWduYXR1cmUsIGRhdGEpOworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5
KGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQoKSksIHNpZ25hdHVyZSwgZGF0YSk7CiAg
ICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKaW5kZXggYTU1YmQ4OWIwOTAwMmYzZTFjZjY5ZTA1
MjllZmVhZTE2NzFhYmViMC4uN2Q4ZjdiNGY3Y2U2NDQxMDMzYzI0MDE1MWMwNGNmZjEwNDk0NzA5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuaApAQCAtNTAsOCArNTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhw
b3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4g
Z2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAot
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleUhNQUMmLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxh
dGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUEJLREYyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMi5jcHAKaW5kZXggMjAwZGYzYTI4ZjllMDAyMjliZTBiOWZlMTZhNDQ2MDAw
OGY0YjJiNy4uMDU2MmU1YjkxMGE2NzRiNzA3NDNlMjQ2NTg1Mzk3OTg2NTY5MWViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJL
REYyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1QQktERjIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVBCS0RGMjo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycwogCiAgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCiAgICAgICAgIFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1vdmUoYmFzZUtl
eSksIGxlbmd0aF0gewotICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVyaXZlQml0cygqcGFy
YW1ldGVycywgYmFzZUtleSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybURl
cml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPigqcGFyYW1ldGVy
cyksIGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtleS5nZXQoKSksIGxlbmd0aCk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1QQktERjIuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oCmluZGV4IDk3MzJiMWMwYjZmZjNlYzQwZjc4NjNj
ODVhZTdmMWViMjViOThmNzcuLmUyMWUxODYxMTE0ZmVhYmIyOWI4MDAzZTgxMDRlZTM0YWM5N2E0
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVBCS0RGMi5oCkBAIC0zMSw2ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zOworY2xhc3MgQ3J5cHRv
S2V5UmF3OworCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1QQktERjIgZmluYWwgOiBwdWJsaWMgQ3J5
cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IHNfbmFtZSA9ICJQQktERjIiOwpAQCAtNDUsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1z
JiwgY29uc3QgQ3J5cHRvS2V5UmF3Jiwgc2l6ZV90KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXggZjhmNDg2
NWJlZjk4MjE5MThkOGFjNzdkZGJiOGU0MzYzZmFlMzdhYy4uNzZlZWViNTVlNjJkYTY5ZDZhZTc0
MDYxYjZkNGM1MDgwZmY2ZGU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjplbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKIAogICAgIGRp
c3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBw
bGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCldIHsKLSAgICAgICAgICAgIHJldHVybiBwbGF0
Zm9ybUVuY3J5cHQoa2V5LCBwbGFpblRleHQpOworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3Jt
RW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSksIHBsYWluVGV4dCk7CiAg
ICAgICAgIH0pOwogfQogCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
CiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKICAgICAgICAgW2tleSA9IFdURk1v
dmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCldIHsKLSAgICAgICAgICAg
IHJldHVybiBwbGF0Zm9ybURlY3J5cHQoa2V5LCBjaXBoZXJUZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybiBwbGF0Zm9ybURlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpLCBj
aXBoZXJUZXh0KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuaAppbmRleCA3MjZmYzQ3NzYyODZiODExN2RmYzU4NWVkZDFkYjc1OGFjYTMyZjFjLi4z
MWY2OWE2MGIzYzc2MmRiZWZlNjg5YWQ1YTkyNWJkZDcxMWFmZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNS5oCkBAIC0zMSw3ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUlNBRVNQYXJhbXM7CiBjbGFzcyBDcnlwdG9L
ZXlSU0E7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUgZmluYWwgOiBw
dWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsKQEAgLTUwLDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+
JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKLSAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81LmNwcAppbmRleCBjOWQ0Y2YxNjVhY2JmOTU0MDcwZjYzOWVjZGQ0MzU0Yjgw
OGMxZGRiLi40NGEyY2ExNzFkNGRiNjFkZWRmMjY2YWUwZmE0ODRhN2I0ZjI1M2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtCiAKICAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUs
IGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwK
ICAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAg
ICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oa2V5LCBkYXRhKTsKKyAgICAgICAgICAgIHJl
dHVybiBwbGF0Zm9ybVNpZ24oZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpLCBkYXRh
KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXIKIAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBba2V5ID0g
V1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7Ci0gICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoa2V5LCBzaWdu
YXR1cmUsIGRhdGEpOworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5KGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKSwgc2lnbmF0dXJlLCBkYXRhKTsKICAgICAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCmluZGV4IDJhMzRmNzVj
NGE4YmUxODgwNTRmMDNhYzgxNzEwYTc0MGY4OWZlMjQuLmQ0N2IxODI3N2IyOGZmYTc5ZmM0MTBm
ZWViZDE2NTc1ZThmMTlmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUu
aApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tl
eUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0
S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBwbGF0Zm9ybVZlcmlm
eShjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0
Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eVJTQSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4
IGNlZTc0N2VlYzk0MzNjZTc2N2RiNTg2YzE4MzMxZmQzMTI3MGY2NTAuLjk1Y2IxZTY0ZjhlYTMx
MTA2MWI0MjY1Zjg0MjFiYTQzMzg3NzRlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9y
dFBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFt
cy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCIKICNpbmNsdWRl
ICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KQEAgLTYyLDcgKzYzLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4K
IAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBbcGFyYW1ldGVycyA9
IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RG
TW92ZShwbGFpblRleHQpXSB7Ci0gICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KCpw
YXJhbWV0ZXJzLCBrZXksIHBsYWluVGV4dCk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1F
bmNyeXB0KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KCpwYXJhbWV0ZXJz
KSwgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpLCBwbGFpblRleHQpOwogICAgICAg
ICB9KTsKIH0KIApAQCAtNzYsNyArNzcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAg
ICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCiAgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92
ZShjaXBoZXJUZXh0KV0gewotICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdCgqcGFy
YW1ldGVycywga2V5LCBjaXBoZXJUZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybURl
Y3J5cHQoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMp
LCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSksIGNpcGhlclRleHQpOwogICAgICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKaW5kZXggNzg5YTRmZWYxYWJkYjJiMDA2NjQz
MDkzMTQ2MmEwZGUxNDkwZTkwNi4uMDAyOGJlZjk1Mjk2NThiOWU5NzQ2ZmFlYjM0YTliYTkzM2Mw
MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtczsKIGNsYXNz
IENyeXB0b0tleVJTQTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAgZmluYWwgOiBw
dWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsKQEAgLTQ5LDggKzUwLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+
JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZv
cm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYsIGNv
bnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3Bw
CmluZGV4IGZlMTk3OGNlYWQwZDVhNzMwN2I2YzNjMjA5Y2I2NDlhNGJmNjE4ODEuLjgzNzdlODY5
ZmIwMWU3YWRlYmU4M2MxNmIwNzJjN2MxMWU1NjZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJ
bXBvcnRQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5Q
YXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKICNpbmNs
dWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTYxLDcgKzYyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHAKIAogICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAogICAgICAgICBbcGFyYW1ldGVy
cyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1v
dmUoZGF0YSldIHsKLSAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oKnBhcmFtZXRlcnMs
IGtleSwgZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWduKGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpLCBkb3duY2FzdDxDcnlwdG9L
ZXlSU0E+KGtleS5nZXQoKSksIGRhdGEpOwogICAgICAgICB9KTsKIH0KIApAQCAtNzQsNyArNzUs
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJgogCiAgICAgZGlzcGF0Y2hPcGVyYXRpb24od29y
a1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksCiAgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0g
V1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7Ci0gICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRl
cnMsIGtleSwgc2lnbmF0dXJlLCBkYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVZl
cmlmeShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKSwg
ZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpLCBzaWduYXR1cmUsIGRhdGEpOwogICAg
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oCmluZGV4IDMzZDcyMzQwMWNkYTcyMzcyYWQ4
Yjc3N2U2ZmQ5OTFlNjlmNjhmMTguLmFmNTcyZjRhODc5NDZhODgxNjNkMTJlNjA5YmMxNzNmMGZh
ZjFmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9QU1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM7CiBjbGFzcyBD
cnlwdG9LZXlSU0E7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVJTQV9QU1MgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKQEAgLTQ5LDggKzUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYs
IEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
Jik7Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zJiwg
Y29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVJzYVBzc1Bh
cmFtcyYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQ0dDcnlwdC5jcHAKaW5kZXggODg2ZDJjZmI1YmU5OTAwZDY1ODhmMWNhMzdiYjZhMTAw
NjllNzBiYy4uMTNjODBjYzM5MTViMjIwYWU1NmQxZjhlNjZmYTUxOWRlYjIyOGNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUFFU19DQkNHQ3J5cHQuY3BwCkBAIC0xNjYsMjMgKzE2NiwxNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksCiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjQ2ZiUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byYgYWVzUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1ldGVycyk7
Ci0gICAgYXV0byYgYWVzS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpOwotCi0gICAg
YXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGFlc0tleS5rZXkoKSwgYWVzUGFyYW1ldGVycy5p
dlZlY3RvcigpLCBWZWN0b3I8dWludDhfdD4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHRFbmNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBWZWN0b3I8
dWludDhfdD4ocGxhaW5UZXh0KSk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQp
OwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19D
QkM6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0
KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJU
ZXh0KQogewotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtZXRlcnMpOwotICAgIGF1dG8mIGFlc0tleSA9IGRvd25j
YXN0PENyeXB0b0tleUFFUz4oa2V5KTsKLQotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlw
dChhZXNLZXkua2V5KCksIGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKSwgY2lwaGVyVGV4dCk7Cisg
ICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZl
Y3RvcigpLCBjaXBoZXJUZXh0KTsKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUFFU19DRkJHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1BRVNfQ0ZCR0NyeXB0LmNwcAppbmRleCA1OGEzZDQ2ZTY4Y2E2ZTc0ZGIwZDAwZTgx
NTRhNTZkOTljY2M1ZDYzLi4wNjkwOGVmNTcwNWVjNDZmNTAyNzljZGQ1MDg2MTc5MTFjNDQ2MDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUFFU19DRkJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NGQkdDcnlwdC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtQUVTX0NGQjo6cGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQorRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybUVuY3J5cHQo
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JikKIHsKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRGVjcnlwdChD
cnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKQogewogICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKaW5kZXggYzEzNDgyZGNjN2Iy
MGQ2MzEwNzJlODg3NDJmMmQ2MDJkOTZmYTMyZS4uNjc5MjI0OWVlMWEwMTMyZTdlNTA2ZWQwZjgy
ZTllNWYzYTZlNzg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5cHQuY3BwCkBAIC0xOTUsMjMgKzE5
NSwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19D
VFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbgogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAK
LUV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxh
dGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1F
bmNyeXB0KENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAg
IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJh
bXM+KHBhcmFtZXRlcnMpOwotICAgIGF1dG8mIGFlc0tleSA9IGRvd25jYXN0PENyeXB0b0tleUFF
Uz4oa2V5KTsKLQotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0QUVTX0NUUihnY3J5X2NpcGhlcl9l
bmNyeXB0LCBhZXNLZXkua2V5KCksIGFlc1BhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLCBhZXNQ
YXJhbWV0ZXJzLmxlbmd0aCwgcGxhaW5UZXh0KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEFF
U19DVFIoZ2NyeV9jaXBoZXJfZW5jcnlwdCwga2V5LmtleSgpLCBwYXJhbWV0ZXJzLmNvdW50ZXJW
ZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIHBsYWluVGV4dCk7CiAgICAgaWYgKCFvdXRwdXQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVy
biBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjaXBoZXJUZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFy
YW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjaXBoZXJUZXh0KQogewotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtZXRlcnMpOwotICAgIGF1dG8mIGFl
c0tleSA9IGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5KTsKLQotICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0QUVTX0NUUihnY3J5X2NpcGhlcl9kZWNyeXB0LCBhZXNLZXkua2V5KCksIGFlc1BhcmFt
ZXRlcnMuY291bnRlclZlY3RvcigpLCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgY2lwaGVyVGV4dCk7
CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRBRVNfQ1RSKGdjcnlfY2lwaGVyX2RlY3J5cHQsIGtl
eS5rZXkoKSwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBj
aXBoZXJUZXh0KTsKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfR0NNR0NyeXB0LmNwcAppbmRleCBjNTcyNDI3MWI0MThkODk1MDUzOTg1MjU5ZmFkYzU2MWMz
Nzg2ZDhlLi44ZDNjZDllNTQ2ZTVlZGYzNjgyMDk5MTMwNjIzMDY0YWIxNzIzZGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTUdDcnlwdC5jcHAKQEAgLTE3OSwyMyArMTc5LDE3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1B
ZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBh
dXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSk7Ci0KLSAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdEVuY3J5cHQoYWVzS2V5LmtleSgpLCBhZXNQYXJhbWV0ZXJzLml2VmVjdG9y
KCksIHBsYWluVGV4dCwgYWVzUGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBhZXNQ
YXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0RW5jcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5UZXh0
LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3Ro
LnZhbHVlX29yKDApIC8gOCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwog
fQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006
OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0
Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQog
ewotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNH
Y21QYXJhbXM+KHBhcmFtZXRlcnMpOwotICAgIGF1dG8mIGFlc0tleSA9IGRvd25jYXN0PENyeXB0
b0tleUFFUz4oa2V5KTsKLQotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChhZXNLZXku
a2V5KCksIGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKSwgY2lwaGVyVGV4dCwgYWVzUGFyYW1ldGVy
cy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBhZXNQYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9v
cigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChrZXkua2V5KCksIHBh
cmFtZXRlcnMuaXZWZWN0b3IoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0
YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOwogICAgIGlm
ICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
ICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcAppbmRl
eCBjODZmNDUyZmNiN2Y1MDllNzAwNmIwNTE0OWY0ZDdlZWExNzY1ZmI5Li5jYmJkMGNlMGIxMzIw
NmRlYmQ5ODYxNzIzYWQ0NWRkMzYwMjdlMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCkBA
IC0xMTUsMTcgKzExNSwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdFVud3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleQogICAgIHJldHVybiBv
dXRwdXQ7CiB9CiAKLUV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
QUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFdy
YXBLZXkoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLmtleSgpLCBkYXRhKTsKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdFdyYXBLZXkoa2V5LmtleSgpLCBkYXRhKTsKICAgICBpZiAoIW91dHB1
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0
dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVVud3JhcEtleShjb25zdCBDcnlwdG9LZXkm
IGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtVW53cmFwS2V5KGNvbnN0IENy
eXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgYXV0
byBvdXRwdXQgPSBnY3J5cHRVbndyYXBLZXkoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLmtl
eSgpLCBkYXRhKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFVud3JhcEtleShrZXkua2V5KCks
IGRhdGEpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5
cHQuY3BwCmluZGV4IGM4YTRmZDgxNmJhMmI2MjdiZThhYTRlMmIyY2FkOGMxZDQzNzVlNjEuLjU1
ODBiNTM5MjNlYWU3OWMwY2QyYWZkNzllM2M3YzNmNmZmMjFhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0
LmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4cF90IGJhc2VLZXlTZXhwLCBnY3J5CiAgICAgcmV0
dXJuIG91dHB1dDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXks
IGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9L
ZXlFQyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKIHsKLSAgICByZXR1
cm4gZ2NyeXB0RGVyaXZlKGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KS5wbGF0Zm9ybUtl
eSgpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5KS5wbGF0Zm9ybUtleSgpKTsKKyAg
ICByZXR1cm4gZ2NyeXB0RGVyaXZlKGJhc2VLZXkucGxhdGZvcm1LZXkoKSwgcHVibGljS2V5LnBs
YXRmb3JtS2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5
cHQuY3BwCmluZGV4IDc0OTBlY2E3MjA4ZGEyZTFhYTZjYTVhZmJjN2RjMzVkZDA1ZmZhNjguLjJl
NDM5MjJjNDcwNGVjMzQ4ZWY1Yzc4YWYyZmMzNGRhODUxZGEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5
cHQuY3BwCkBAIC0xNzAsMjMgKzE3MCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBn
Y3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAg
IHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAotRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxn
b3JpdGhtRWNkc2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUVDJiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1ldGVycyk7Ci0gICAgYXV0
byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5KTsKLQotICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1BhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0U2lnbihrZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcGFyYW1ldGVycy5oYXNoSWRl
bnRpZmllciwga2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RG
TW92ZSgqb3V0cHV0KTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtRUNE
U0E6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25h
dHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5
cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUVj
ZHNhUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlFQyYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewot
ICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFy
YW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVD
PihrZXkpOwotCi0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkoZWNLZXkucGxhdGZvcm1L
ZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCBlY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5
LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGtl
eS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHBhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIGtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUo
Km91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCAwNzU4OGQ5YWZjODgwNTU1OGIyMmYz
NDMwZjg5YThhNDg5ZmYwYWE3Li43OTI2ZDM1ZDg3YjE1MTJlZmM1OWY3MGQ3MDFlODJlYzIzNDdi
NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTE1MiwxMiArMTUyLDkgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2UKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi1FeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwg
c2l6ZV90IGxlbmd0aCkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJhdyYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAg
IGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFt
cz4ocGFyYW1ldGVycyk7Ci0gICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3
PihrZXkpOwotCi0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXko
KSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9y
KCksIGxlbmd0aCAvIDgsIGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKTsKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0
b3IoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCksIGxlbmd0aCAvIDgsIHBhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dD
cnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhN
QUNHQ3J5cHQuY3BwCmluZGV4IDAyNTZlNWNiZTQ0NmVjMzMzY2E1MzRjYmI5MzExYzcyNjllY2Vi
NzIuLjFkYjNkMjhjNGEzYmQ0ZTI3Y2Q2ZTZhNmU1ZGY0ODI3NDAzOWNkOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFD
R0NyeXB0LmNwcApAQCAtODIsMjkgKzgyLDI1IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdvcml0aG0sIGNvbnN0IFZlCiAg
ICAgcmV0dXJuIFdURk1vdmUoc2lnbmF0dXJlKTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tl
eUhNQUMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGF1dG8mIGht
YWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpOwotCi0gICAgYXV0byBhbGdvcml0
aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRp
ZmllcigpKTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShr
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGFsZ29yaXRobSA9PSBHQ1JZ
X01BQ19OT05FKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
IAotICAgIGF1dG8gcmVzdWx0ID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwgaG1hY0tl
eS5rZXkoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNh
bGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUoKnJlc3VsdCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAg
IGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpOwotCi0gICAgYXV0
byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFs
Z29yaXRobShrZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGFsZ29yaXRo
bSA9PSBHQ1JZX01BQ19OT05FKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKIAotICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1
cmUoYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGht
LCBrZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFleHBlY3Rl
ZFNpZ25hdHVyZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0aW1p
bmcgYXR0YWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcAppbmRleCA4ZmU0NTc0NmVkMGMwMzVi
NmRkZTEzNzJmY2FkYTljOWFmNWUyYTZkLi42YTZmOGE0MzRmZGU4MGU0Yjc5MDljZjhkMDY2M2E3
Mzk3NzZjNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCkBAIC01NywxMiArNTcsOSBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2
ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIHNpemVfdCBsZW5ndGgpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBi
a2RmMlBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UmF3JiBrZXksIHNpemVfdCBs
ZW5ndGgpCiB7Ci0gICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1ldGVycyk7Ci0gICAgYXV0byYgcmF3S2V5ID0gZG93
bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwotCi0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJp
dmVCaXRzKHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIHBia2Rm
MlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywg
bGVuZ3RoKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMoa2V5LmtleSgpLCBw
YXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgcGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgcGFyYW1l
dGVycy5pdGVyYXRpb25zLCBsZW5ndGgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0
cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IGU3
NzFjMDQxMDE3NmQzYmY0ZDMwN2E1N2VlNTQ2OWQxNTg2MmU2ZDUuLjMwNDRhY2VmZmEwN2Q4MzVj
OTcyOWY5N2VkMGRlMzRiNWJjZjg2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81R0NyeXB0LmNwcApAQCAtOTMsMTcgKzkzLDE3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBW
CiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5
cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0
KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5j
cnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwgcGxhaW5UZXh0
KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LnBsYXRmb3JtS2V5KCksIHBs
YWluVGV4dCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi1FeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjaXBoZXJUZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNB
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdERlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLnBsYXRmb3Jt
S2V5KCksIGNpcGhlclRleHQpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChrZXku
cGxhdGZvcm1LZXkoKSwgY2lwaGVyVGV4dCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpv
dXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAppbmRl
eCA5MmFlYjRmMjViY2UyYTlmYjkwMDNhNWI1MGEyYjlhY2Y1ZGZhYjEwLi42NWI1OTgxMDYyMDM5
YmE2NDA3ZjQ2OTY2ZDE1MDc4ODAxM2MxOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81R0NyeXB0LmNwcApAQCAtMTM0LDE5ICsxMzQsMTcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aW50OF8KICAgICByZXR1cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAK
LUV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleVJTQSYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgYXV0byYgcnNhS2V5ID0gZG93
bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOwotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihy
c2FLZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KCkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihrZXkucGxhdGZvcm1LZXkoKSwgZGF0
YSwga2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgIGlmICghb3V0cHV0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RG
TW92ZSgqb3V0cHV0KTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKLSAgICBhdXRvIG91dHB1dCA9
IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FL
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRW
ZXJpZnkoa2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwga2V5Lmhhc2hBbGdvcml0
aG1JZGVudGlmaWVyKCkpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gKm91dHB1dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUEdDcnlwdC5jcHAKaW5kZXggZDMwZDJiNGVlNDc4MTAyYzM5Y2NjODA4YjI1MTE2NDQ0MTE3
N2JkMS4uMGMwNjZiNzE3YTQ5ZGY1MDljZjU5N2NhYWIxYTE2MzkxMDNkNGMxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTExMCwyMyArMTEwLDE3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KIAotRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNy
eXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlS
U0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byYg
cnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBh
cmFtZXRlcnMpOwotICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
KTsKLQotICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxW
ZWN0b3IoKSwgcGxhaW5UZXh0KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5
Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5wbGF0Zm9ybUtleSgpLCBwYXJhbWV0ZXJz
LmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpv
dXRwdXQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lw
aGVyVGV4dCkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
aXBoZXJUZXh0KQogewotICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7Ci0KLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERl
Y3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtl
eSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhlclRleHQpOworICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChrZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwga2V5
LnBsYXRmb3JtS2V5KCksIHBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7CiAg
ICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5j
cHAKaW5kZXggZjE2N2MwZDJkZGJmNzVmMzQ5M2JmNmNhMDM2MzY2OTc1NzMyMGRkZC4uOTViZmM0
MDkzNDlmNmZhNDc1MWE0YTIxNmYyMzM1MmYxODMwYTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5
cHQuY3BwCkBAIC0xNDAsMjMgKzE0MCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBn
Y3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAg
IHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAotRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVJz
YVBzc1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSk7Ci0gICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7Ci0KLSAgICBhdXRvIG91dHB1dCA9
IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCks
IGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNh
bHRMZW5ndGgpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihrZXkucGxhdGZvcm1LZXko
KSwga2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwga2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KCksIHBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpv
dXRwdXQpOwogfQogCi1FeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpw
bGF0Zm9ybVZlcmlmeShDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRo
bVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgYXV0byYgcnNh
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOwotICAgIGF1dG8mIHJzYVBhcmFtZXRl
cnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMpOwot
Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNp
Z25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFt
ZXRlcnMuc2FsdExlbmd0aCk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkoa2V5LnBs
YXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwga2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KCksIHBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpv
dXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggM2I1NzY0MDI4YzYyYWZmZjExM2YwYjBjNDAwOGMx
MGNkNGI4Zjc5NS4uZDNjNzU1NjNiYWIwNWRhYTllY2RhYmEyNzhkYzVlNTk1N2Q5MGM5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNNYWMuY3BwCkBAIC02MiwyMCArNjIsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnMK
ICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1B
ZXNDYmNDZmJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvJiBhZXNQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbWV0ZXJzKTsK
LSAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSk7Ci0gICAgQVNT
RVJUKGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4
KTsKLSAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NCQyhrQ0NFbmNyeXB0LCBhZXNQYXJhbWV0ZXJz
Lml2VmVjdG9yKCksIGFlc0tleS5rZXkoKSwgcGxhaW5UZXh0KTsKKyAgICBBU1NFUlQocGFyYW1l
dGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOworICAgIHJldHVy
biB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0VuY3J5cHQsIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5
LmtleSgpLCBwbGFpblRleHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjaXBoZXJUZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2Zi
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtZXRlcnMpOwotICAgIGF1
dG8mIGFlc0tleSA9IGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5KTsKLSAgICBBU1NFUlQoYWVz
UGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOwotICAg
IHJldHVybiB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0RlY3J5cHQsIGFlc1BhcmFtZXRlcnMuaXZWZWN0
b3IoKSwgYWVzS2V5LmtleSgpLCBjaXBoZXJUZXh0KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5p
dlZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOworICAgIHJldHVybiB0cmFu
c2Zvcm1BRVNfQ0JDKGtDQ0RlY3J5cHQsIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgp
LCBjaXBoZXJUZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk1hYy5jcHAK
aW5kZXggOTU0NjU1Y2MwOTcwOTgyYzljYzg4ZjVmMjg0ZGY5MmM5OGQ1Y2IzMy4uMDAxYzBkNjE4
ZGZlOGJkNmVkMDZjMmQ5ZjY3OWE5NTY3MTI1MWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DRkJNYWMuY3BwCkBAIC02Miwy
MCArNjIsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3Jt
QUVTX0NGQihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnMKICAgICByZXR1cm4gV1RGTW92ZShy
ZXN1bHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUFFU19DRkI6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFp
blRleHQpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19D
RkI6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBs
YWluVGV4dCkKIHsKLSAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiBhZXNLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSk7Ci0gICAgQVNTRVJUKGFlc1BhcmFtZXRlcnMuaXZW
ZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKLSAgICByZXR1cm4gdHJhbnNm
b3JtQUVTX0NGQihrQ0NFbmNyeXB0LCBhZXNQYXJhbWV0ZXJzLml2VmVjdG9yKCksIGFlc0tleS5r
ZXkoKSwgcGxhaW5UZXh0KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUo
KSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ0ZCKGtD
Q0VuY3J5cHQsIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRleHQpOwog
fQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DRkI6
OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0
Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0
KQogewotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1B
ZXNDYmNDZmJQYXJhbXM+KHBhcmFtZXRlcnMpOwotICAgIGF1dG8mIGFlc0tleSA9IGRvd25jYXN0
PENyeXB0b0tleUFFUz4oa2V5KTsKLSAgICBBU1NFUlQoYWVzUGFyYW1ldGVycy5pdlZlY3Rvcigp
LnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOwotICAgIHJldHVybiB0cmFuc2Zvcm1BRVNf
Q0ZCKGtDQ0RlY3J5cHQsIGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKSwgYWVzS2V5LmtleSgpLCBj
aXBoZXJUZXh0KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5pdlZlY3RvcigpLnNpemUoKSA9PSBr
Q0NCbG9ja1NpemVBRVMxMjgpOworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ0ZCKGtDQ0RlY3J5
cHQsIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBjaXBoZXJUZXh0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKaW5kZXggMzY1YzI4MjExODVkZTU5
ZDhmMTYzZTNlYzY0MmZkOGYzZTU2ZGQxZS4uNGZjMTQ3YzY3ZDBlYzMzODQ2ZmE5ZDg1NGJlMDM5
OTAxMmY0NDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCkBAIC0xMzgsMjAgKzEzOCwxNiBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9u
IG9wZXJhdGlvbiwgY29ucwogICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwogfQogCi1FeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5j
cnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdChD
cnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFF
UyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvJiBh
ZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJh
bWV0ZXJzKTsKLSAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSk7
Ci0gICAgQVNTRVJUKGFlc1BhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLnNpemUoKSA9PSBrQ0NC
bG9ja1NpemVBRVMxMjgpOwotICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0VuY3J5cHQs
IGFlc1BhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgYWVz
S2V5LmtleSgpLCBwbGFpblRleHQpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0
b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICByZXR1cm4gdHJhbnNmb3Jt
QUVTX0NUUihrQ0NFbmNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVy
cy5sZW5ndGgsIGtleS5rZXkoKSwgcGxhaW5UZXh0KTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1EZWNyeXB0KENyeXB0b0FsZ29y
aXRobUFlc0N0clBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBhdXRvJiBhZXNQYXJhbWV0
ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbWV0ZXJzKTsK
LSAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSk7Ci0gICAgQVNT
RVJUKGFlc1BhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVB
RVMxMjgpOwotICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIGFlc1BhcmFt
ZXRlcnMuY291bnRlclZlY3RvcigpLCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgYWVzS2V5LmtleSgp
LCBjaXBoZXJUZXh0KTsKKyAgICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5z
aXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NU
UihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5n
dGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0dDTU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFF
U19HQ01NYWMuY3BwCmluZGV4IDg1OWY3ZTJmNWY2MjE2Y2QwYWI0ODVmZDE5MThhYjViZDg3OTZm
MDcuLjM3ZDAyMmUzYzZiYzY3OGNlYjQ4OTUwYjAwZjc3NGM3MTdhMDFhNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFj
LmNwcApAQCAtNzIsMTggKzcyLDE0IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IGRlY3lwdEFFU19HQ00oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uCiAgICAgcmV0
dXJuIFdURk1vdmUocGxhaW5UZXh0KTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgcGxhaW5UZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlw
dG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtQWVzR2Nt
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byYgYWVzUGFyYW1ldGVycyA9IGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1ldGVycyk7Ci0gICAgYXV0byYg
YWVzS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpOwotICAgIHJldHVybiBlbmNyeXB0
QUVTX0dDTShhZXNQYXJhbWV0ZXJzLml2VmVjdG9yKCksIGFlc0tleS5rZXkoKSwgcGxhaW5UZXh0
LCBhZXNQYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIGFlc1BhcmFtZXRlcnMudGFn
TGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CisgICAgcmV0dXJuIGVuY3J5cHRBRVNfR0NNKHBhcmFt
ZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRleHQsIHBhcmFtZXRlcnMuYWRkaXRp
b25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsK
IH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NN
OjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxh
dGZvcm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkK
IHsKLSAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVz
R2NtUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlw
dG9LZXlBRVM+KGtleSk7Ci0gICAgcmV0dXJuIGRlY3lwdEFFU19HQ00oYWVzUGFyYW1ldGVycy5p
dlZlY3RvcigpLCBhZXNLZXkua2V5KCksIGNpcGhlclRleHQsIGFlc1BhcmFtZXRlcnMuYWRkaXRp
b25hbERhdGFWZWN0b3IoKSwgYWVzUGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4
KTsKKyAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGtleS5r
ZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJh
bWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUFFU19LV01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUFFU19LV01hYy5jcHAKaW5kZXggNzMyN2VmYzVhZjIxZDQyNmFiNjZkODdlYzM1ODQwNjdk
MTg5NzRhMC4uNGI5YmM0ZjY2Y2ZjODhhMTk2MTQ1ZGY0YjMxZjkyOTRmNTMyYTdmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
TWFjLmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IHVud3JhcEtleUFFU19LVyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwKICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1XcmFwS2V5KGNvbnN0IENyeXB0b0tleSYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1XcmFwS2V5KGNvbnN0IENyeXB0
b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgcmV0dXJu
IHdyYXBLZXlBRVNfS1coZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLmtleSgpLCBkYXRhKTsK
KyAgICByZXR1cm4gd3JhcEtleUFFU19LVyhrZXkua2V5KCksIGRhdGEpOwogfQogCi1FeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1Vbndy
YXBLZXkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0
Zm9ybVVud3JhcEtleShjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQogewotICAgIHJldHVybiB1bndyYXBLZXlBRVNfS1coZG93bmNhc3Q8Q3J5cHRv
S2V5QUVTPihrZXkpLmtleSgpLCBkYXRhKTsKKyAgICByZXR1cm4gdW53cmFwS2V5QUVTX0tXKGtl
eS5rZXkoKSwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCmluZGV4
IDc5MjQ5YWVmYTY2OTJkZjhkMjMzZmFmZDIxMWMyMDJmYWE3ZWRkMDkuLmI5ZTc3YTdhYjRjY2Yy
MmFjZDNlZWI5YTJmOGZhYmI3M2VkNTM2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcApAQCAtMzMsMTUgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXkm
IGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25z
dCBDcnlwdG9LZXlFQyYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKIHsK
LSAgICBhdXRvJiBlY0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtleSk7Ci0g
ICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5KTsK
LQogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBzdGQ6Om51bGxv
cHQ7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRLZXkoZWNCYXNlS2V5LmtleVNpemVJbkJp
dHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYwOTAjc2Vj
dGlvbi00LgorICAgIFZlY3Rvcjx1aW50OF90PiBkZXJpdmVkS2V5KGJhc2VLZXkua2V5U2l6ZUlu
Qml0cygpIC8gOCk7IC8vIFBlciBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNz
ZWN0aW9uLTQuCiAgICAgc2l6ZV90IHNpemUgPSBkZXJpdmVkS2V5LnNpemUoKTsKLSAgICBpZiAo
IUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChlY0Jhc2VLZXkucGxhdGZvcm1LZXkoKSwg
ZWNQdWJsaWNLZXkucGxhdGZvcm1LZXkoKSwgZGVyaXZlZEtleS5kYXRhKCksICZzaXplKSkKKyAg
ICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChiYXNlS2V5LnBsYXRmb3JtS2V5
KCksIHB1YmxpY0tleS5wbGF0Zm9ybUtleSgpLCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQog
ICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUVDRFNBTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
RUNEU0FNYWMuY3BwCmluZGV4IGE0Mjk3MTMzMzE4ZDk4OTAwMzg1ZmU4ZjMwYTViYWE2MzQ1NDRl
M2EuLjYwNDM5YzljNmJlZjM5ZmEyMjBlOTY5MGY5NmM1ZWEzYTcyMmI5MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3Bw
CkBAIC0xNTEsMTggKzE1MSwxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5RUNE
U0EoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBjb25zdCBQbGF0ZgogICAgIHJldHVy
biB2YWxpZDsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1FQ0RTQTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleUVDJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsK
LSAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOwotICAgIGF1dG8m
IGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJh
bWV0ZXJzKTsKLSAgICByZXR1cm4gc2lnbkVDRFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCwgZGF0YSk7
CisgICAgcmV0dXJuIHNpZ25FQ0RTQShwYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBrZXkucGxh
dGZvcm1LZXkoKSwga2V5LmtleVNpemVJbkJpdHMoKSAvIDgsIGRhdGEpOwogfQogCi1FeGNlcHRp
b25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1W
ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleUVDJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlFQz4oa2V5KTsKLSAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1ldGVycyk7Ci0gICAgcmV0dXJuIHZlcmlmeUVD
RFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNL
ZXkua2V5U2l6ZUluQml0cygpIC8gOCwgc2lnbmF0dXJlLCBkYXRhKTsKKyAgICByZXR1cm4gdmVy
aWZ5RUNEU0EocGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwga2V5LnBsYXRmb3JtS2V5KCksIGtl
eS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWduYXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhLREZNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1IS0RGTWFjLmNwcAppbmRleCBiMzFlMDBmMjU0ZmMyZDQ0NjJiNzE4NjlkNmE5MTll
Y2RmNzQ4NTA3Li42M2M3ZGI3ZGU4YjZlZDdjMjUyMTA4ZjBhNzIxZjc3ZDRjOTQ1YmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1h
Yy5jcHAKQEAgLTM0LDE3ICszNCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJp
dmVCaXRzKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBzaXplX3QgbGVuZ3RoKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtSGtk
ZlBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UmF3JiBrZXksIHNpemVfdCBsZW5n
dGgpCiB7Ci0gICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1Ia2RmUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSYXc+KGtleSk7Ci0KICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAv
IDgpOwogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBnZXRDb21t
b25DcnlwdG9EaWdlc3RBbGdvcml0aG0oaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGRp
Z2VzdEFsZ29yaXRobSk7CisgICAgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFt
ZXRlcnMuaGFzaElkZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7CiAKLSAgICAvLyA8cmRhcjov
L3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiByYXdLZXkgaXMgbnVsbCwgQ0NLZXlE
ZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgotICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFj
KGtDQ0tERkFsZ29yaXRobUhLREYsIGRpZ2VzdEFsZ29yaXRobSwgMCwgcmF3S2V5LmtleSgpLmRh
dGEoKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3Rv
cigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgaGtk
ZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3Rv
cigpLnNpemUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCisgICAgLy8gPHJkYXI6
Ly9wcm9ibGVtLzMyNDM5NDU1PiBDdXJyZW50bHksIHdoZW4ga2V5IGRhdGEgaXMgZW1wdHksIEND
S2V5RGVyaXZhdGlvbkhNYWMgd2lsbCBiYWlsIG91dC4KKyAgICBpZiAoQ0NLZXlEZXJpdmF0aW9u
SE1hYyhrQ0NLREZBbGdvcml0aG1IS0RGLCBkaWdlc3RBbGdvcml0aG0sIDAsIGtleS5rZXkoKS5k
YXRhKCksIGtleS5rZXkoKS5zaXplKCksIDAsIDAsIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLmRh
dGEoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuc2l6ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLnNh
bHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0
LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAppbmRl
eCBiMGFmOGI0MmRjMTY3M2VkNDA2ZDhiM2VmMGU5OTU2MTNlMTgzMDBhLi4xZDY4Mjk3ZTI0N2Ey
OWYxMGQxM2YxNDI4MTQyZWQzMzQ0OGFjNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKQEAgLTgxLDI0ICs4MSwyMiBA
QCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0
aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0bwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWdu
KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkK
IHsKLSAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsKLSAg
ICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0
b0hNQUNBbGdvcml0aG0oa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwogICAgIGlmICgh
YWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
IAotICAgIHJldHVybiBjYWxjdWxhdGVTaWduYXR1cmUoKmFsZ29yaXRobSwgaG1hY0tleS5rZXko
KSwgZGF0YSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBrZXku
a2V5KCksIGRhdGEpOwogfQogCi1FeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1ITUFD
OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK0V4Y2VwdGlvbk9y
PGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eUhNQUMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5SE1BQz4oa2V5KTsKLSAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdv
cml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGFsZ29y
aXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlm
aWVyKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IgfTsKIAotICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBjYWxjdWxh
dGVTaWduYXR1cmUoKmFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YSk7CisgICAgYXV0byBl
eHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBrZXkua2V5
KCksIGRhdGEpOwogICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHBy
ZXZlbnQgdGltaW5nIGF0dGFja3MuCiAgICAgcmV0dXJuIHNpZ25hdHVyZS5zaXplKCkgPT0gZXhw
ZWN0ZWRTaWduYXR1cmUuc2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWdu
YXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1QQktERjJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1QQktERjJNYWMuY3BwCmluZGV4IDVjM2Q1NmIyN2Q1MmEwNGFjOTJlZDI1MjYxOWM4ZDUzYzMz
MTE4NjMuLmIzMzA3MTBlN2IxYzYwMzllOGM3OTg3YmI1YzIzZTMzMWExZjlhMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVBCS0RGMk1h
Yy5jcHAKQEAgLTUzLDE0ICs1MywxMSBAQCBzdGF0aWMgQ0NQc2V1ZG9SYW5kb21BbGdvcml0aG0g
Y29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogICAgIH0K
IH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1QQktERjI6
OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgc2l6ZV90IGxlbmd0aCkKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5
cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSYXcm
IGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBhdXRvJiBwYmtkZjJQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRv
JiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGtleSk7Ci0KICAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOwogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTk1
NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktERiBiYWlscyBvdXQgd2hlbiBhbiBlbXB0
eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgotICAgIGlmIChDQ0tleURlcml2YXRpb25QQktE
RihrQ0NQQktERjIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihyYXdLZXkua2V5KCku
ZGF0YSgpKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9y
KCkuZGF0YSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIGNvbW1vbkNy
eXB0b0hNQUNBbGdvcml0aG0ocGJrZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciksIHBia2Rm
MlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgcmVzdWx0LmRhdGEoKSwgbGVuZ3RoIC8gOCkpCisgICAg
aWYgKENDS2V5RGVyaXZhdGlvblBCS0RGKGtDQ1BCS0RGMiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyICo+KGtleS5rZXkoKS5kYXRhKCkpLCBrZXkua2V5KCkuc2l6ZSgpLCBwYXJhbWV0ZXJz
LnNhbHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgY29t
bW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKSwgcGFyYW1l
dGVycy5pdGVyYXRpb25zLCByZXN1bHQuZGF0YSgpLCBsZW5ndGggLyA4KSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUocmVz
dWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDM5YzgxM2U2MzU5
NDJlMGY4NTkzMDAwMTgyYjRlNWI2ZWJmMGIyZGMuLjBjMzgyOWM4NTM1YzVmNGU5ZWIzY2M2OTE0
NGY0NWQ4ZmI5NzAzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApAQCAtNTQs
MTYgKzU0LDE0IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRS
U0FFU19QS0NTMV92MV81KGNvbnN0IFBsYXRmb3JtUlNBS2V5CiAgICAgcmV0dXJuIFdURk1vdmUo
cGxhaW5UZXh0KTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5
cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5U
ZXh0KQogewotICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsK
LSAgICByZXR1cm4gZW5jcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCks
IHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJuIGVuY3J5cHRS
U0FFU19QS0NTMV92MV81KGtleS5wbGF0Zm9ybUtleSgpLCBrZXkua2V5U2l6ZUluQml0cygpLCBw
bGFpblRleHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQorRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5
cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7
Ci0gICAgcmV0dXJuIGRlY3J5cHRSU0FFU19QS0NTMV92MV81KHJzYUtleS5wbGF0Zm9ybUtleSgp
LCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKKyAgICByZXR1cm4gZGVjcnlw
dFJTQUVTX1BLQ1MxX3YxXzUoa2V5LnBsYXRmb3JtS2V5KCksIGtleS5rZXlTaXplSW5CaXRzKCks
IGNpcGhlclRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDg3ZTZjMjBiODQxNjg4NjMzYjNjNDFjNTg4NTljMzRj
YTlkMGE5ZjcuLjYyODRjMzg0YWRiYjJiMDZjOWZjNjk1NTYxNWE0NzU5NDRmZGZiYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC04MywxNiArODMsMTQgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaCwKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5
UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvJiByc2FL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7Ci0gICAgcmV0dXJuIHNpZ25SU0FTU0Ff
UEtDUzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRm
b3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEpOworICAgIHJldHVybiBzaWdu
UlNBU1NBX1BLQ1MxX3YxXzUoa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5wbGF0
Zm9ybUtleSgpLCBrZXkua2V5U2l6ZUluQml0cygpLCBkYXRhKTsKIH0KIAotRXhjZXB0aW9uT3I8
Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleVJTQSYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQogewotICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KTsKLSAgICByZXR1cm4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEp
OworICAgIHJldHVybiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShrZXkuaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIoKSwga2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKaW5kZXggMTY2MDEzMzc4MzIzNGZm
YTc4Y2UzZjc0NTIyNzI1NWFhMTc0MzBiYS4uODZhOTY2ZjExMWZmZDY0MzVlNThmYjliNWVkYTU1
Nzg1NTYyY2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAgLTYzLDE4ICs2MywxNCBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0UlNBX09BRVAoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBoYQogICAgIHJldHVybiBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRm
b3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVu
Y3J5cHQoQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5UlNBJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAg
IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlS
U0E+KGtleSk7Ci0gICAgcmV0dXJuIGVuY3J5cHRSU0FfT0FFUChyc2FLZXkuaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCByc2FLZXkucGxhdGZv
cm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKKyAgICByZXR1cm4g
ZW5jcnlwdFJTQV9PQUVQKGtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCBwYXJhbWV0ZXJz
LmxhYmVsVmVjdG9yKCksIGtleS5wbGF0Zm9ybUtleSgpLCBrZXkua2V5U2l6ZUluQml0cygpLCBw
bGFpblRleHQpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y2lwaGVyVGV4dCkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjaXBoZXJUZXh0KQogewotICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKLSAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7Ci0gICAgcmV0dXJuIGRlY3J5cHRSU0FfT0FF
UChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZl
Y3RvcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lw
aGVyVGV4dCk7CisgICAgcmV0dXJuIGRlY3J5cHRSU0FfT0FFUChrZXkuaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIoKSwgcGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBrZXkucGxhdGZvcm1LZXkoKSwg
a2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTU01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVJTQV9QU1NNYWMuY3BwCmluZGV4IDlmYWNiYjg0Njc5OTI1ZDQyZGVjMmFhODgzMTQ0MDA3
ZDk4MjU3ZDQuLjEzMDZiMzY4MDg3ZDJmMGZkMjYwYWFlMjFkNzNiOTA0ZGFlYjE0NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTTWFjLmNwcApAQCAtODEsMTggKzgxLDE0IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2
ZXJpZnlSU0FfUFNTKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3QgUGxhCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0Ff
UFNTOjpwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQog
ewotICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKLSAgICBh
dXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1z
PihwYXJhbWV0ZXJzKTsKLSAgICByZXR1cm4gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0
aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0
cygpLCBkYXRhLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOworICAgIHJldHVybiBzaWduUlNB
X1BTUyhrZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwga2V5LnBsYXRmb3JtS2V5KCksIGtl
eS5rZXlTaXplSW5CaXRzKCksIGRhdGEsIHBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZv
cm1WZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSk7Ci0gICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7Ci0gICAgcmV0dXJuIHZlcmlm
eVJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9y
bUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAg
cmV0dXJuIHZlcmlmeVJTQV9QU1Moa2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIGtleS5w
bGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>