<?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>175621</bug_id>
          
          <creation_ts>2017-08-15 21:57:46 -0700</creation_ts>
          <short_desc>[WebCrypto] Push WorkQueue dispatches for RSA algorithms into shared code</short_desc>
          <delta_ts>2017-08-26 00:48:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>jbedard</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>1339055</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 21:57:46 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339062</commentid>
    <comment_count>1</comment_count>
      <attachid>318231</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 22:09:37 -0700</bug_when>
    <thetext>Created attachment 318231
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339063</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 22:12:16 -0700</bug_when>
    <thetext>Attachment 318231 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:138:  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:148:  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/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:125:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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:97:  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:106:  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/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:155:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 9 in 13 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>1339167</commentid>
    <comment_count>3</comment_count>
      <attachid>318260</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-16 08:07:15 -0700</bug_when>
    <thetext>Created attachment 318260
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339168</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 08:08:20 -0700</bug_when>
    <thetext>Attachment 318260 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:138:  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:148:  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/CryptoAlgorithmRSA_PSSMac.cpp:85:  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:92:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:72:  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:79:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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:92:  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:98:  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/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:125:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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:97:  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:106:  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/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:155:  CryptoAlgorithmRSA_PSS::platformVerify 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:61:  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:67:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 17 in 17 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>1340003</commentid>
    <comment_count>5</comment_count>
      <attachid>318484</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-18 00:26:29 -0700</bug_when>
    <thetext>Created attachment 318484
Patch

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340004</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-18 00:29:02 -0700</bug_when>
    <thetext>Attachment 318484 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:138:  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:147:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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::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:78:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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::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:97:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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:97:  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:105:  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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:61:  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:67:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 17 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>1340567</commentid>
    <comment_count>7</comment_count>
      <attachid>318626</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-21 04:44:45 -0700</bug_when>
    <thetext>Created attachment 318626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340570</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-21 04:47:07 -0700</bug_when>
    <thetext>Attachment 318626 did not pass style-queue:


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:146:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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:73:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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: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:92:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:63:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 17 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>1340606</commentid>
    <comment_count>9</comment_count>
      <attachid>318626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-08-21 09:00:59 -0700</bug_when>
    <thetext>Comment on attachment 318626
Patch

Is there something we can do about the repetitiveness of this code? This patch moves eight almost identical blocks from one place to another. Seems like an opportune time to find a way to not have to carry eight copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340710</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-21 12:58:33 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 318626 [details]
&gt; Patch
&gt; 
&gt; Is there something we can do about the repetitiveness of this code? This
&gt; patch moves eight almost identical blocks from one place to another. Seems
&gt; like an opportune time to find a way to not have to carry eight copies.

It could be possible to fold some, like AES families. However, I am not sure how feasible it is to fold all the blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341038</commentid>
    <comment_count>11</comment_count>
      <attachid>318754</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-22 05:33:19 -0700</bug_when>
    <thetext>Created attachment 318754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341039</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-22 05:35:21 -0700</bug_when>
    <thetext>Attachment 318754 did not pass style-queue:


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:146:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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:73:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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: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:92:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:63:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 19 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>1341040</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-22 06:31:15 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #11)
&gt; Created attachment 318754 [details]
&gt; Patch

This separates the WorkQueue dispatch (along with the ScriptExecutionContext dispatches that depend on the operation&apos;s outcome) and the crypto operation by using another functor that isolates the specific operation and its required data.

Other algorithms should be able to adopt the same approach as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341041</commentid>
    <comment_count>14</comment_count>
      <attachid>318755</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-22 06:39:26 -0700</bug_when>
    <thetext>Created attachment 318755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341042</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-22 06:41:23 -0700</bug_when>
    <thetext>Attachment 318755 did not pass style-queue:


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:146:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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:73:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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: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:92:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:63:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 19 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>1341149</commentid>
    <comment_count>16</comment_count>
      <attachid>318755</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-22 11:16:11 -0700</bug_when>
    <thetext>Comment on attachment 318755
Patch

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

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:58
&gt; +        [key = WTFMove(key), plainText = WTFMove(plainText)] {

Dumping everything into the capture list indeed solves the problem of different parameter types for different crypto algorithms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341167</commentid>
    <comment_count>17</comment_count>
      <attachid>318755</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-22 11:33:17 -0700</bug_when>
    <thetext>Comment on attachment 318755
Patch

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

&gt;&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:58
&gt;&gt; +        [key = WTFMove(key), plainText = WTFMove(plainText)] {
&gt; 
&gt; Dumping everything into the capture list indeed solves the problem of different parameter types for different crypto algorithms.

This is certainly a way of solving the problem, but I am not sure if this is the best way or the only way. Therefore, I cannot r+ the patch even I want to. Good job though. Let&apos;s see if Darin has any opinions about this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342059</commentid>
    <comment_count>18</comment_count>
      <attachid>318755</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-08-24 09:26:45 -0700</bug_when>
    <thetext>Comment on attachment 318755
Patch

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

This solution looks fine to me.

&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:96
&gt; +static void dispatchOperationImpl(WorkQueue&amp; workQueue, ScriptExecutionContext&amp; context, ResultCallbackType&amp;&amp; callback, CryptoAlgorithm::ExceptionCallback&amp;&amp; exceptionCallback, OperationType&amp;&amp; operation)

I don’t really like &quot;Impl&quot; in this function template name. Maybe we can find a word to use instead of the abbreviation &quot;impl&quot;. Or we can just leave this in the global namespace and call it as &quot;WebCore::dispatchOperation&quot;. Or we can call it dispatchAlgorithmOperation since it’s not a class member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342330</commentid>
    <comment_count>19</comment_count>
      <attachid>319066</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-24 23:29:30 -0700</bug_when>
    <thetext>Created attachment 319066
Uses &apos;dispatchAlgorithmOperation&apos; for the template name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342331</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-24 23:31:50 -0700</bug_when>
    <thetext>Attachment 319066 did not pass style-queue:


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:146:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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:73:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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: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:92:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:63:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 19 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>1342334</commentid>
    <comment_count>21</comment_count>
      <attachid>319066</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 00:20:46 -0700</bug_when>
    <thetext>Comment on attachment 319066
Uses &apos;dispatchAlgorithmOperation&apos; for the template name.

Clearing flags on attachment: 319066

Committed r221181: &lt;http://trac.webkit.org/changeset/221181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342335</commentid>
    <comment_count>22</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 00:21:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342336</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-25 00:21:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/34077712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342420</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-25 09:48:31 -0700</bug_when>
    <thetext>Bummer that this passed EWS, but it broke Mac builds that use CryptoAlgorithmRSA_PSSMac.cpp because you didn&apos;t update those signatures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342423</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-25 09:52:44 -0700</bug_when>
    <thetext>Reverted r221181 for reason:

Broke builds that use CryptoAlgorithmRSA_PSSMac.cpp

Committed r221189: &lt;http://trac.webkit.org/changeset/221189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342429</commentid>
    <comment_count>26</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-08-25 10:11:30 -0700</bug_when>
    <thetext>Zan, if you download Xcode 9 Beta and build with the latest iOS 11 Beta SDK, you&apos;ll see this issue.

Our EWS bots are still building with iOS 10 and Sierra.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342447</commentid>
    <comment_count>27</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-25 11:12:45 -0700</bug_when>
    <thetext>I am building towards your patch. Let&apos;s see if I can point to you how to fix the problem in case you don&apos;t have a Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342450</commentid>
    <comment_count>28</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-25 11:27:28 -0700</bug_when>
    <thetext>It really might be as simple as updating the method signature in the *Mac.cpp implementation file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342453</commentid>
    <comment_count>29</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 11:29:37 -0700</bug_when>
    <thetext>I defined HAVE_RSA_PSS at the top of CryptoAlgorithmRSA_PSS.cpp and CrypoAlgorithmRSA_PSSMac.cpp files, and there are build failures due to return types being void, instead of Exception&lt;Vector&lt;uint8_t&gt;&gt; and Exception&lt;bool&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342454</commentid>
    <comment_count>30</comment_count>
      <attachid>319090</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 11:30:17 -0700</bug_when>
    <thetext>Created attachment 319090
Uses appropriate return types in CryptoAlgorithmRSA_PSSMac.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342455</commentid>
    <comment_count>31</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 11:32:13 -0700</bug_when>
    <thetext>Attachment 319090 did not pass style-queue:


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:146:  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/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:91:  CryptoAlgorithmRSA_PSS::platformVerify 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:73:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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: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:92:  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/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:124:  CryptoAlgorithmRSA_OAEP::platformDecrypt 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/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:154:  CryptoAlgorithmRSA_PSS::platformVerify 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:63:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 16 in 19 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>1342461</commentid>
    <comment_count>32</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 11:46:15 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #30)
&gt; Created attachment 319090 [details]
&gt; Uses appropriate return types in CryptoAlgorithmRSA_PSSMac.cpp.

I would appreciate someone testing this and confirming it compiles properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342462</commentid>
    <comment_count>33</comment_count>
      <attachid>319066</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-25 11:46:51 -0700</bug_when>
    <thetext>Comment on attachment 319066
Uses &apos;dispatchAlgorithmOperation&apos; for the template name.

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

&gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:84
&gt; +void CryptoAlgorithmRSA_PSS::platformSign(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; data)

should be ExceptionOr&lt;Vector&lt;uint8_t&gt;&gt;

&gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:91
&gt; +void CryptoAlgorithmRSA_PSS::platformVerify(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; signature, const Vector&lt;uint8_t&gt;&amp; data)

should be ExceptionOr&lt;bool&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342487</commentid>
    <comment_count>34</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 13:00:31 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #33)
&gt; Comment on attachment 319066 [details]
&gt; Uses &apos;dispatchAlgorithmOperation&apos; for the template name.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319066&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:84
&gt; &gt; +void CryptoAlgorithmRSA_PSS::platformSign(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; data)
&gt; 
&gt; should be ExceptionOr&lt;Vector&lt;uint8_t&gt;&gt;
&gt; 
&gt; &gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:91
&gt; &gt; +void CryptoAlgorithmRSA_PSS::platformVerify(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; signature, const Vector&lt;uint8_t&gt;&amp; data)
&gt; 
&gt; should be ExceptionOr&lt;bool&gt;

Please see attachment #319090 that already contains these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342525</commentid>
    <comment_count>35</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-25 14:22:23 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #34)
&gt; (In reply to Jiewen Tan from comment #33)
&gt; &gt; Comment on attachment 319066 [details]
&gt; &gt; Uses &apos;dispatchAlgorithmOperation&apos; for the template name.
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=319066&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:84
&gt; &gt; &gt; +void CryptoAlgorithmRSA_PSS::platformSign(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; data)
&gt; &gt; 
&gt; &gt; should be ExceptionOr&lt;Vector&lt;uint8_t&gt;&gt;
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:91
&gt; &gt; &gt; +void CryptoAlgorithmRSA_PSS::platformVerify(CryptoAlgorithmParameters&amp; parameters, const CryptoKey&amp; key, const Vector&lt;uint8_t&gt;&amp; signature, const Vector&lt;uint8_t&gt;&amp; data)
&gt; &gt; 
&gt; &gt; should be ExceptionOr&lt;bool&gt;
&gt; 
&gt; Please see attachment #319090 [details] that already contains these changes.

Built and tested. Should be okay to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342634</commentid>
    <comment_count>36</comment_count>
      <attachid>319090</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-26 00:48:22 -0700</bug_when>
    <thetext>Comment on attachment 319090
Uses appropriate return types in CryptoAlgorithmRSA_PSSMac.cpp.

Clearing flags on attachment: 319090

Committed r221222: &lt;http://trac.webkit.org/changeset/221222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342635</commentid>
    <comment_count>37</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-26 00:48:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318231</attachid>
            <date>2017-08-15 22:09:37 -0700</date>
            <delta_ts>2017-08-16 08:07:10 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-175621-20170816070935.patch</filename>
            <type>text/plain</type>
            <size>44970</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNmYTYxZTBjOTBhNjUz
NWNhODExMjdlYjM1N2Y2NzM4NTE4MzhkMi4uYzdhODk4MmIxOTExMTQyZjJlNGRkN2Y0ZGFlMTE4
YzJjZmNiNDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA4LTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZl
cmlmeSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UDo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVyaWZ5KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmg6CisgICAg
ICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKwogMjAxNy0wOC0xNCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBoYW5k
bGUgY2xpY2sgZXZlbnRzIG9uIG9wdGlvbiBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmNwcAppbmRleCBmZWYwNGViNWRiMTNmZTllM2I5MDgwNGMyMWE1ZDUyMTc1
ZWU0MGIyLi5jMjhlMWNhZjE2NTg1MzBlZmM4NGI5Y2U4MzZiZGE0MmE0MWY0YTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5
UGFpci5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02NSw3ICs2NiwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcgogICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHBsYXRmb3JtRW5jcnlwdChXVEZNb3ZlKGtleSksIFdURk1vdmUocGxhaW5U
ZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250
ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlz
cGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUo
cGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtRW5jcnlwdChrZXksIFdURk1vdmUocGxh
aW5UZXh0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgor
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0g
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
Y2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29y
a1F1ZXVlJiB3b3JrUXVldWUpCkBAIC03NCw3ICs5NiwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKGtleSksIFdU
Rk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAg
d29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJU
ZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtRGVjcnlwdChr
ZXksIFdURk1vdmUoY2lwaGVyVGV4dCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAg
ICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAg
ICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCmluZGV4
IGE5ODhmOTQ3YzYyY2QwYWU1NmM3NmYxODhmODg1ZDA5OGMxYmJkN2EuLjk4YzVlZTcxMDFmYmQy
YzhmYjJiNDhjMDQ2ZmFiZWMyYTcxOWY3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmgKQEAgLTU2LDggKzU2LDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7
CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7
Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChSZWY8
Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChjb25z
dCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYsIFZlY3Rv
cjx1aW50OF90PiYmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAppbmRl
eCBiZTI2YzViNmEyYTI4ODBhYzRjMmY2MDQ1ZWQzMjQ2ODExODlhZmQ5Li5hMDU0MDM2MjJkMjM0
MjZhYTE3MTUxMmMwNDQ0MTUxYjMwOTM0MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAi
Q3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0LDcgKzc1
LDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZv
cm1TaWduKFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29u
dGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZN
b3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29u
dGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TaWdu
KGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgor
ICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtl
YyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAg
ICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC04
Myw3ICsxMDUsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVy
aWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92
ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBj
b250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1v
dmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
ICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9y
bVZlcmlmeShrZXksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRh
c2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCku
Y29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktl
eVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmgKaW5kZXggZTk4MmM0MDc3NzA4ZjRkMDg2MDU2ZTU4NDljYmNj
Y2QyM2YyNmVlNC4uNjI4NWI5YzdiNjVlZmJjYzRkM2NiZjNjZDI3OTZiOWJjNGZjODgxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC01Niw4ICs1Niw4IEBAIHBy
aXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRj
aGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRo
bVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1T
aWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVl
Jik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWlu
dDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYm
LCBWZWN0b3I8dWludDhfdD4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1TaWdu
KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0
dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4
IGNiNTEzYjUzOTIxOGQxMTRhZjc3ZThhZWM4ZDUwZTQxMWU1ZjBkNDYuLmQ0MDU1NjAyMjIxNWMy
MjM0ZThjY2ZiZDdlODQyMjU2ZGE1NTE2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgog
I2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzUsNyArNzYsMjggQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoV1RGTW92ZShw
YXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4dCksIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsK
KworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBb
cGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1FbmNyeXB0
KCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUocGxhaW5UZXh0KSk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAg
ICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdChzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC04
NSw3ICsxMDcsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdChzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwbGF0Zm9ybURlY3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZN
b3ZlKGNpcGhlclRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdv
cmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1EZWNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUo
Y2lwaGVyVGV4dCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3Vs
dCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVz
YWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5oCmluZGV4IDRhZWE2YTRiODhiNjQyY2RlNDE3YmRlNTU5NTA4ZjgwODJj
ZmYxZGIuLjY4ZDgzNTBjYjU0ZTdjYmE5YmU3Njc3YTUyZDUwZmQ0MDU1OTcyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuaApAQCAtNTYsOCArNTYsOCBAQCBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBm
aW5hbDsKIAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgYWxnb3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1
aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9L
ZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhf
dD4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjayk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
LmNwcAppbmRleCAzNmFmM2E5NzRlMWE0ZjcyNzViMGE2MTRiMzM1Y2I2YTA3NDJiMDcwLi5kNDIz
ZmJiMGNiZTE3MDE0MGI5YTQ1ZTMyMmRlZGNhM2Y1YWRiZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hl
ZEtleUdlblBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNTks
MjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHAKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
SW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9y
bVNpZ24oV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdv
cmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
KyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3Zl
KGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TaWduKCpw
YXJhbWV0ZXJzLCBrZXksIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAg
ICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAg
ICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9
CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtR
dWV1ZSkKQEAgLTY3LDcgKzg5LDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVy
aWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmCiAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgcGxhdGZvcm1WZXJpZnkoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShr
ZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAg
IGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1l
dGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJl
ID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHBsYXRmb3JtVmVyaWZ5KCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0
ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2Fn
ZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfUFNTLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTLmgKaW5kZXggNzllOTdlZGRiNWZlMDAwOTcyNDFmZDNjNmVmMmJiYTc1ZTMxZTZl
Mi4uOWZmOTI5ZmM1MTk2YzYzNjQyMzY1YTIyN2M1NGI5ZDcyNDJlNDUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9QU1MuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KFN1
YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBleHBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+
JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAg
IHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtR
dWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYm
IHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggMTZhOWUyNWQ1NmNhMWMwYjIxM2My
ZDQzZWYwODIzYzdmMGE3OWU1Mi4uMTU3MWM5OTA2NDY1MmYzZDQ1ZTk1NzVmYTViYTdjMjBmMzZk
MTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTUsNTgg
Kzk0LDIyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVj
cnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0b3I8CiAgICAgcmV0dXJuIG1waURhdGEodmFs
dWVTZXhwKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0
Zm9ybUVuY3J5cHQoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWlu
VGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVl
JiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRl
eHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5
cHQocnNhS2V5LnBsYXRmb3JtS2V5KCksIFdURk1vdmUocGxhaW5UZXh0KSk7Ci0gICAgICAgICAg
ICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAg
ICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1v
dmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KG91dHB1dCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlw
dChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwgV1RGTW92ZShwbGFp
blRleHQpKTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CisKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0
Y2goCi0gICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNp
cGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgp
KTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtleS5wbGF0
Zm9ybUtleSgpLCBXVEZNb3ZlKGNpcGhlclRleHQpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUob3V0cHV0KSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KGRvd25jYXN0PENy
eXB0b0tleVJTQT4oa2V5KS5wbGF0Zm9ybUtleSgpLCBXVEZNb3ZlKGNpcGhlclRleHQpKTsKKyAg
ICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdD
cnlwdC5jcHAKaW5kZXggMzM4OTY4NmRhNDlkZmEwMzExYzMwMTI2NDAwZTFhMmE1N2EzNzEwMC4u
NzEwZWExODY1NDQ5NTI3M2MxM2EzYmZiOGM5MTgzNGFmMTY5NWNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzYsNTggKzEzNSwyNCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29u
c3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1Ig
fTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1T
aWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
LSAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYg
cnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJz
YUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0
cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVy
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAg
ICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNB
PihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShy
c2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAg
ICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJp
ZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiAqb3V0cHV0OwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCmluZGV4IDVj
ZmYxZjA0ZTY5M2Q1MDYwZGRmMjJkMDc4MDJjOTE1ZTNlNmFhYTcuLmYwODM5ZjlkMGFiMDFhOWZk
YmJhMTI0NzUzNGMwMTE2ZWQ2YjljZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0Ny
eXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEx
LDYwICsxMTAsMjggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHREZWNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gbXBpRGF0
YSh2YWx1ZVNleHApOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4
dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkK
IHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAg
W3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBs
YWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRl
eHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAg
ICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0g
ICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0
aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVs
VmVjdG9yKCksIHBsYWluVGV4dCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiByc2FQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1l
dGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOwor
CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3Rv
cigpLCBwbGFpblRleHQpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZv
cm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9
IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdU
Rk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVJzYU9hZXBQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBj
aXBoZXJUZXh0KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMg
PSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdERlY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhl
clRleHQpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKaW5kZXggNDNjN2E4MWJlMTM5
ZGJlMGNjMWZkN2I2YjQxMzBlYTZhNzJkMjVmNi4uY2MzYTU0MmVjM2ZiN2NjNGFmYWMzYzJiZGE1
MTg3YjVkNmFiN2IxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmgiCiAjaW5jbHVkZSAi
Q3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0
MSw2MCArMTQwLDI4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfCiAgICAgcmV0dXJuIHsgZXJy
b3IgPT0gR1BHX0VSUl9OT19FUlJPUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9Q
U1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVl
JiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bVJTQV9QU1M6OnBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAg
ICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFt
ZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5Lmdl
dCgpKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgYXV0byBv
dXRwdXQgPSBnY3J5cHRTaWduKHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUlu
Qml0cygpLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1l
dGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAg
ICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9
IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKworICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5Lmtl
eVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJz
YVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJuIFdURk1vdmUoKm91
dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnko
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOwotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBh
dXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJl
LCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5z
YWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKworICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRh
dGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNhbHRM
ZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318260</attachid>
            <date>2017-08-16 08:07:15 -0700</date>
            <delta_ts>2017-08-18 00:26:24 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-175621-20170816170713.patch</filename>
            <type>text/plain</type>
            <size>63880</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IzNzJmM2ZlZjUxYTk5
YWNhMWExOGQxOTYzNzU3ZmZkNDcxYzM0Yy4uMDU3MDRlMDVlNzY0YjhiZmRiN2ZjOWVhMDdjOGVh
NTA0ZTZkYjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA4LTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZl
cmlmeSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UDo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVyaWZ5KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmg6CisgICAg
ICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTE2ICBY
YWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dTdHJlYW1lcl1bRU1FXSBSZXdvcmsgaGFuZGxpbmcga2V5IHN5c3RlbXMgYW5kIFVVSURzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4IGZlZjA0ZWI1ZGIxM2Zl
OWUzYjkwODA0YzIxYTVkNTIxNzVlZTQwYjIuLmMyOGUxY2FmMTY1ODUzMGVmYzg0YjljZTgzNmJk
YTQyYTQxZjRhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY1LDcgKzY2LDI4IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1FbmNyeXB0KFdURk1vdmUo
a2V5KSwgV1RGTW92ZShwbGFpblRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwg
cGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29u
dGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1FbmNy
eXB0KGtleSwgV1RGTW92ZShwbGFpblRleHQpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAg
ICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQg
b25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1l
bnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQog
CiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTc0LDcgKzk2LDI4IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFs
aWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1EZWNy
eXB0KFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAg
Y29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBX
VEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gcGxhdGZvcm1EZWNyeXB0KGtleSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7CisgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29k
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5w
b3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFp
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmgKaW5kZXggYTk4OGY5NDdjNjJjZDBhZTU2Yzc2ZjE4OGY4ODVkMDk4YzFi
YmQ3YS4uOThjNWVlNzEwMWZiZDJjOGZiMmI0OGMwNDZmYWJlYzJhNzE5Zjc3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtNTYsOCArNTYsOCBAQCBwcml2YXRlOgog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKSBmaW5hbDsKIAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25z
dCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChSZWY8Q3J5cHRv
S2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2Fs
bGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQg
cGxhdGZvcm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0
b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYmKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoY29u
c3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuY3BwCmluZGV4IGJlMjZjNWI2YTJhMjg4MGFjNGMyZjYwNDVlZDMyNDY4MTE4
OWFmZDkuLmEwNTQwMzYyMmQyMzQyNmFhMTcxNTEyYzA0NDQxNTFiMzA5MzQzMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tl
eVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzQsNyArNzUsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW0KICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdv
cmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
KyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBwbGF0Zm9ybVNpZ24oa2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQg
b25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1l
bnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAg
ICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJp
Znkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKQEAgLTgzLDcgKzEwNSwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtVmVyaWZ5KFdURk1vdmUoa2V5KSwgV1RGTW92
ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJl
ZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5
KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVyaWZ5KGtleSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQg
PSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaAppbmRleCBlOTgyYzQwNzc3
MDhmNGQwODYwNTZlNTg0OWNiY2NjZDIzZjI2ZWU0Li42Mjg1YjljN2I2NWVmYmNjNGQzY2JmM2Nk
Mjc5NmI5YmM0ZmM4ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgK
QEAgLTU2LDggKzU2LDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBi
b29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1z
RGVwcmVjYXRlZCYgYWxnb3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7
Ci0gICAgdm9pZCBwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+
JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYs
IEJvb2xDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYmKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29s
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUC5jcHAKaW5kZXggY2I1MTNiNTM5MjE4ZDExNGFmNzdlOGFlYzhkNTBlNDExZTVm
MGQ0Ni4uZDQwNTU2MDIyMjE1YzIyMzRlOGNjZmJkN2U4NDIyNTZkYTU1MTY1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw3ICs3
NiwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRm
b3JtRW5jcnlwdChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUocGxh
aW5UZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBj
b250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBwbGF0Zm9ybUVuY3J5cHQoKnBhcmFtZXRlcnMsIGtleSwgV1RGTW92ZShwbGFpblRleHQp
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBo
ZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKQEAgLTg1LDcgKzEwNywyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNv
bnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVy
cyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9
IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybURlY3J5cHQoKnBhcmFt
ZXRlcnMsIGtleSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAg
ICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAg
ICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
IH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKaW5kZXggNGFlYTZhNGI4OGI2NDJj
ZGU0MTdiZGU1NTk1MDhmODA4MmNmZjFkYi4uNjhkODM1MGNiNTRlN2NiYTliZTc2NzdhNTJkNTBm
ZDQwNTU5NzIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCkBAIC01Niw4ICs1Niw4IEBAIHByaXZh
dGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVz
KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1Q
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtRW5j
cnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENy
eXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2
b2lkIHBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3Jr
UXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0
b0tleSYsIFZlY3Rvcjx1aW50OF90PiYmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCmluZGV4IDM2YWYzYTk3NGUxYTRmNzI3NWIwYTYxNGIz
MzVjYjZhMDc0MmIwNzAuLmQ0MjNmYmIwY2JlMTcwMTQwYjlhNDVlMzIyZGVkY2EzZjVhZGJmNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9QU1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5
UGFpci5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01OCw3ICs1OSwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnNp
Z24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcAogICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHBsYXRmb3JtU2lnbihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtl
eSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAg
d29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1l
dGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBwbGF0Zm9ybVNpZ24oKnBhcmFtZXRlcnMsIGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJp
Znkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVy
cywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjcsNyArODksMjggQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRh
KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0
LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0
Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RG
TW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3Zl
KGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAg
ICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91
bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9j
dW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAg
ICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
eworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwog
fQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaAppbmRleCA3OWU5N2VkZGI1ZmUwMDA5NzI0
MWZkM2M2ZWYyYmJhNzVlMzFlNmUyLi45ZmY5MjlmYzUxOTZjNjM2NDIzNjVhMjI3YzU0YjlkNzI0
MmU0NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FfUFNTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50
OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4m
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiwgQm9vbENh
bGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0
Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1W
ZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIFZlY3Rv
cjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCAx
NmE5ZTI1ZDU2Y2ExYzBiMjEzYzJkNDNlZjA4MjNjN2YwYTc5ZTUyLi4xNTcxYzk5MDY0NjUyZjNk
NDVlOTU3NWZhNWJhN2MyMGYzNmQxNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNUdDcnlwdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0Eu
aCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC05NSw1OCArOTQsMjIgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3RvcjwKICAg
ICByZXR1cm4gbXBpRGF0YSh2YWx1ZVNleHApOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNv
bnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQpCiB7Ci0gICAg
Y29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtrZXkgPSBX
VEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FLZXkucGxhdGZvcm1LZXkoKSwgV1RGTW92ZShwbGFp
blRleHQpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAg
ICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKFdURk1vdmUob3V0cHV0KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBv
dXRwdXQgPSBnY3J5cHRFbmNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KS5wbGF0Zm9y
bUtleSgpLCBXVEZNb3ZlKHBsYWluVGV4dCkpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3Zl
KCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgY2lw
aGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dERlY3J5cHQocnNhS2V5LnBsYXRmb3JtS2V5KCksIFdURk1vdmUoY2lwaGVyVGV4dCkpOwotICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShvdXRwdXQpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dERlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLnBsYXRmb3JtS2V5KCksIFdURk1v
dmUoY2lwaGVyVGV4dCkpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCAzMzg5Njg2ZGE0OWRmYTAzMTFjMzAx
MjY0MDBlMWEyYTU3YTM3MTAwLi43MTBlYTE4NjU0NDk1MjczYzEzYTNiZmI4YzkxODM0YWYxNjk1
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkdDcnlw
dFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNiw1
OCArMTM1LDI0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfCiAgICAgcmV0dXJuIHsgZXJyb3Ig
PT0gR1BHX0VSUl9OT19FUlJPUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5n
ZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxh
dGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNB
PihrZXkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXko
KSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmICghb3V0
cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAg
IHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1W
ZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0g
V1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0
cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEs
IHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIGlmICghb3V0
cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgot
ICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwor
ICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBk
YXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFvdXRwdXQp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0
dXJuICpvdXRwdXQ7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHAKaW5kZXggNWNmZjFmMDRlNjkzZDUwNjBkZGYyMmQwNzgwMmM5MTVlM2U2YWFh
Ny4uZjA4MzlmOWQwYWIwMWE5ZmRiYmExMjQ3NTM0YzAxMTZlZDZiOWNmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUEdDcnlwdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlS
U0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMTEsNjAgKzExMCwyOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YQogICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtl
eSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJz
YVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFy
YW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlS
U0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlw
dChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCks
IHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcGxhaW5UZXh0KTsKLSAgICAgICAgICAgIGlm
ICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAg
ICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25F
cnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAg
ICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgq
b3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSk7CisKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQ
YXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCk7CisgICAgaWYgKCFvdXRwdXQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJu
IFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhl
clRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0g
ICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShr
ZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwot
ICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0
KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQocnNhS2V5Lmhh
c2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0
ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhlclRleHQpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQp
IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg
YXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMu
bGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJuIFdURk1vdmUo
Km91dHB1dCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNw
cAppbmRleCA0M2M3YTgxYmUxMzlkYmUwY2MxZmQ3YjZiNDEzMGVhNmE3MmQyNWY2Li5jYzNhNTQy
ZWMzZmI3Y2M0YWZhYzNjMmJkYTUxODdiNWQ2YWI3YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlw
dC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQ
YXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGls
aXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTQxLDYwICsxNDAsMjggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50
OF8KICAgICByZXR1cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdU
Rk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8
Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwot
Ci0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFv
dXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9y
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRw
dXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7
CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+
KHBhcmFtZXRlcnMpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKHJzYUtleS5wbGF0
Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29y
aXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKKyAgICBpZiAoIW91
dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAg
ICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
UFNTOjpwbGF0Zm9ybVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxi
b29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9
IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RG
TW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVy
cyk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0
Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQp
IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg
YXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJz
YVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFt
ZXRlcnMpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3Jt
S2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJuIFdURk1vdmUo
Km91dHB1dCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggOTk1
ODkzNzVjZDExYWNhMTlkNWNiOTE1ZjcyOWIwOTg1YWJjZjFhYi4uM2E4MDBlM2U2YWNkZWY1ZGRm
MjZhN2Y0Y2E0ZDk3N2YyYWU0YTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3Bw
CkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksNDggKzU4LDE2IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRSU0FFU19QS0NTMV92MV81KGNv
bnN0IFBsYXRmb3JtUlNBS2V5CiAgICAgcmV0dXJuIFdURk1vdmUocGxhaW5UZXh0KTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoUmVm
PENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUo
KSk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRh
c2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0p
OwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
KTsKKyAgICByZXR1cm4gZW5jcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5z
aXplKCkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVy
VGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVl
JiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RG
TW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5Lmdl
dCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FL
ZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dC5kYXRh
KCksIGNpcGhlclRleHQuc2l6ZSgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJl
c3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBkZWNyeXB0UlNBRVNfUEtDUzFfdjFf
NShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4
dC5kYXRhKCksIGNpcGhlclRleHQuc2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0
b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDJmZTcwNTE0YzI2OTU5NDM3MWM0NmY0YTRh
NDdkNjE4YzRhZDhlOTQuLjRhMGU5YmQ4Y2FhYzhjZTU3ZDk2Yzg2MTljYmRjMDQzNGJhMDNhMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC04OSw0OCArODksMTYgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxh
dGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtR
dWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9
IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQg
PSBzaWduUlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
Y29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0g
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIHNpZ25SU0FTU0FfUEtDUzFfdjFfNShyc2FLZXku
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5r
ZXlTaXplSW5CaXRzKCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9L
ZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25h
dHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6
ZSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29k
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIHZlcmlmeVJTQVNTQV9Q
S0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZv
cm1LZXkoKSwgc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcAppbmRleCBlZjVi
MDlkMmY2ZDhlOGZjNmI5ODdkN2IyNGQ1YTM4OTM3Y2ViZGU1Li4xYTdiYWEzNzU5ODQ4Njc4M2Vi
MTJiZWVhYjhkMTNjN2RiMGE1ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcApAQCAtNjksNTAgKzY5LDE4
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRSU0FfT0FFUChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhCiAgICAgcmV0dXJuIFdURk1vdmUocGxhaW5UZXh0
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJl
ZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxh
dGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQpCiB7Ci0gICAgY29u
dGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxh
aW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVw
UGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENy
eXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBlbmNyeXB0UlNB
X09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFi
ZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCks
IHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOwotICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMp
OwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBy
c2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFy
YW1ldGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkp
OworICAgIHJldHVybiBlbmNyeXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlm
aWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCks
IHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXpl
KCkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
cGxhdGZvcm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92
ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNy
eXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRl
cnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5C
aXRzKCksIGNpcGhlclRleHQuZGF0YSgpLCBjaXBoZXJUZXh0LnNpemUoKSk7Ci0gICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAg
IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlS
U0E+KGtleSk7CisgICAgcmV0dXJuIGRlY3J5cHRSU0FfT0FFUChyc2FLZXkuaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCByc2FLZXkucGxhdGZv
cm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhl
clRleHQuc2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1z
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwCmluZGV4IDM5YjBhMWMyMjli
NjY3M2ZhOGZmNTNhN2E0OWQ2MzViYjc1MGRiZmQuLjhiZDViMDFhNDE2MjY5YmYxNjI1YTEwNDRj
OGFkOWRjMmEwMzM5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFjLmNwcApAQCAtODIsNTAgKzgyLDE4IEBAIHN0YXRp
YyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FfUFNTKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaCwgY29uc3QgUGxhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBs
YXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJl
ZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1l
dGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIHJzYVBh
cmFtcyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMp
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGht
SWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMo
KSwgZGF0YSwgcnNhUGFyYW1zLnNhbHRMZW5ndGgpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29k
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7CisgICAg
cmV0dXJuIHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FL
ZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhUGFyYW1l
dGVycy5zYWx0TGVuZ3RoKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0
Zm9ybVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBw
YXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0
dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVl
dWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZN
b3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAg
ICAgIGF1dG8mIHJzYVBhcmFtcyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFt
cz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHZlcmlmeVJTQV9QU1MocnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWdu
YXR1cmUsIGRhdGEsIHJzYVBhcmFtcy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
LmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNh
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJzYVBhcmFtZXRl
cnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMpOwor
ICAgIHJldHVybiB2ZXJpZnlSU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbWV0ZXJzLnNh
bHRMZW5ndGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318484</attachid>
            <date>2017-08-18 00:26:29 -0700</date>
            <delta_ts>2017-08-21 04:44:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175621-20170818092627.patch</filename>
            <type>text/plain</type>
            <size>65483</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQyNGNmMjk5MTMwMmZj
NTQ1ZmJkYTFlNTU0Y2I5ZWVkYzQ3ZTk3Zi4uZjZlM2Q0YzczMDM4OTY2MWVjMWI3ZWViNjdmZjY0
NTNjMGRiNjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTA4LTE4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNo
IHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJl
dHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBX
ZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1
c2VzIG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0
aCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9t
CisgICAgICAgIHRoZXNlIGFzeW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBh
bmQgcmV0dXJuIGFuIEV4Y2VwdGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzIG9iamVjdHMgYXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICBy
ZWZlcmVuY2VzIGJlY2F1c2UgZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhl
IHVuZGVybHlpbmcKKyAgICAgICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFy
ZSBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlv
bnMgY2FuIHRoZW4gbWFudWFsbHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtl
eQorICAgICAgICBvciBwYXJhbWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lm
aWMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgSW5wdXQgZGF0YSAocGxhaW4gdGV4dCwgY2lw
aGVyIHRleHQgb3Igc2lnbmF0dXJlKSBpcyBwYXNzZWQgdGhyb3VnaAorICAgICAgICBydmFsdWUg
cmVmZXJlbmNlcywgZ2l2aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBhIGNoYW5jZSB0byByZXVzZSB0
aGF0CisgICAgICAgIFZlY3RvciBvYmplY3QgZWZmaWNpZW50bHksIGlmIHBvc3NpYmxlIGFuZCBy
ZXF1aXJlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyBpbiBiZWhhdmlv
ciB0aGF0J3MgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNB
X1BTUzo6dmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTLmg6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAg
ICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAg
KiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1F
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQp
OgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkp
OgorCiAyMDE3LTA4LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtJbnB1dCBFdmVudHNdIFJlbmFtZSBpbnB1dFR5cGUgImZvcm1hdEZvcmVDb2xv
ciIgdG8gImZvcm1hdEZvbnRDb2xvciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NS5jcHAKaW5kZXggZWQ2OWVjZDJlNWQ4MWY4MDhkZDAzNzQyMzU1YjYyZWE1ZThiMGU0Ni4uNDEw
YWNkMTliNzljNzBjMWM0MDRkMzI4ZmRmNzM0NWFiNjk3NTU1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNp
bmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjUsNyArNjYsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNy
eXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwbGF0Zm9ybUVuY3J5cHQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4dCksIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1
ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAg
ICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBwbGF0Zm9ybUVuY3J5cHQoa2V5LCBXVEZNb3ZlKHBsYWluVGV4dCkpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
ZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiwgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29y
a1F1ZXVlKQpAQCAtNzQsNyArOTYsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBwbGF0Zm9ybURlY3J5cHQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGNpcGhl
clRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNv
bnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1v
dmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybURlY3J5cHQoa2V5LCBXVEZNb3Zl
KGNpcGhlclRleHQpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1
bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAppbmRleCA5N2M1MWY2ZDZm
ZTJhNDZjMjhhNGFkYThmMmUwNTI0Yzg4YmFiYmFiLi5lNTJhOTIwZTcxNjc3M2JjMWQyOGE1NWIw
NTNkZjI0ZGZlZDdmN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCkBA
IC01Niw4ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAgYm9v
bCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQg
cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0
b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoUmVmPENyeXB0b0tleT4m
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4m
Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tl
eVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKaW5kZXggOGFkMjE0ZDNk
NmNjZjg0ODEwNDcwY2JjZTkxNjhmNWU5OWY3N2ZlYy4uMGQ4MTM2Y2IxN2YzMmE1NDM1MmI3NTBi
NjdkM2M5Yjk3YmE2MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJT
QS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSwyOCBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbQogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNj
ZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtU2lnbihXVEZN
b3ZlKGtleSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7
CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtU2lnbihrZXksIFdURk1v
dmUoZGF0YSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtODMsNyArMTA1LDI4
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKElu
dmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1W
ZXJpZnkoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29y
a1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAor
ICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVy
ZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1WZXJpZnkoa2V5
LCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNS5oCmluZGV4IDYyMDA2NTkxZTE5ZDY4NmJiNmRiYTAzYWQxN2EzYjZjOGYyNGVmMjEu
Ljg2MDcxZDNlYWMyNGVmNDZlOWJkNzQ1ZTJmODhhZWNjMmE2NTJiZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApAQCAtNTYsOCArNTYsOCBAQCBwcml2YXRlOgogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrKSBmaW5hbDsKIAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5
cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZv
aWQgcGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2ln
bmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBwbGF0
Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjayk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1WZXJp
ZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAppbmRleCA5MTQ2MTYwNzc1
MDI5MjY2MThiOThiZGQ0MjU4YTE5MzIxNjg4ZTMzLi5iNjQyNTAyZGExZWFjMmM1NGIyNzM2YzFj
N2I4OTY1OWVlMjBkMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTc1LDcgKzc2LDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1FbmNyeXB0KFdURk1vdmUocGFyYW1ldGVycyks
IFdURk1vdmUoa2V5KSwgV1RGTW92ZShwbGFpblRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250
ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdU
Rk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtRW5jcnlwdCgqcGFyYW1ldGVy
cywga2V5LCBXVEZNb3ZlKHBsYWluVGV4dCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAg
ICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAg
ICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAK
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtODUsNyArMTA3LDI4
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKElu
dmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1E
ZWNyeXB0KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJU
ZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250
ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlz
cGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0g
V1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IHBsYXRmb3JtRGVjcnlwdCgqcGFyYW1ldGVycywga2V5LCBXVEZNb3ZlKGNpcGhlclRleHQp
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9y
S2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaAppbmRleCAyMDI5ZTQ0NzcyNTU0MGJiMzkxN2Q2NmUzZTUxYzJjYWQ5NmQ5OTRjLi5hYmNk
NTZjYmQyODdjYjYwZDdmZGUyYjQ3NTVkZTFhZWYwOWZiNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
LmgKQEAgLTU2LDggKzU2LDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAg
ICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNv
bnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwg
VmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0
b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2spOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJT
QSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKaW5kZXgg
N2E2NGU2MTgzOWNjN2VhODQyMDNlMGY1M2JkZThjZDZmNjg4NDk0NS4uM2Y3M2I2Zjg1MTNlYjhl
M2ZhZjg1ZmFlNTNhODg0NzAzYWNjNzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNB
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDcgKzU5LDI4IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiBwCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nl
c3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1TaWduKFdURk1v
dmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOwor
CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtU2lnbigqcGFyYW1ldGVycywg
a2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisg
ICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2Vj
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAg
IFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9QU1M6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC02
Nyw3ICs4OSwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnZlcmlmeShzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJgogICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IHBsYXRmb3JtVmVyaWZ5KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92
ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJl
ZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUo
c2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybVZl
cmlmeSgqcGFyYW1ldGVycywga2V5LCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSkp
OworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktl
eVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5o
CmluZGV4IDliY2Q0ZTA0NGNkMDRlYjQ0ZGQ0NDQ5ZDQ4YWYyMDFlZDczNWU4NzEuLjVkODBhNTEx
MDgyZDc4NmJjZGY4OTBmZTk3ZTMxOGIzZmMxOTZlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKQEAg
LTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3Jt
YXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShD
cnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNl
cHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBW
ZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1W
ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxD
cnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+
JiYsIEJvb2xDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gcGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+
IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9L
ZXkmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5j
cHAKaW5kZXggMTZhOWUyNWQ1NmNhMWMwYjIxM2MyZDQzZWYwODIzYzdmMGE3OWU1Mi4uZDM1MmM0
NmRmNmRjNDJhNWIxOWMyYzVhNmQ0ZDY2ZmUwY2IyYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ3J5
cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTUsNTggKzk0LDIwIEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBW
ZWN0b3I8CiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoUmVmPENyeXB0b0tleT4m
JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0
KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAg
ICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0
byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAg
ICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5LnBsYXRmb3JtS2V5KCksIFdU
Rk1vdmUocGxhaW5UZXh0KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0g
ICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtl
eSkucGxhdGZvcm1LZXkoKSwgV1RGTW92ZShwbGFpblRleHQpKTsKKyAgICBpZiAoIW91dHB1dCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJu
IFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNTo6cGxhdGZvcm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0
b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShr
ZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkucGxhdGZvcm1LZXkoKSwgV1RGTW92ZShjaXBoZXJUZXh0
KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAg
W291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0RGVjcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXko
KSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRw
dXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCAzMzg5Njg2ZGE0OWRmYTAz
MTFjMzAxMjY0MDBlMWEyYTU3YTM3MTAwLi4xMGQxZGZlMDBjMDJmMDcwOWQ3YmQ5ZGU4ZThmNDVk
ZjAxODcwZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNw
cApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUg
IkdDcnlwdFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEzNiw1OCArMTM1LDIyIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlm
eShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfCiAgICAgcmV0dXJuIHsg
ZXJyb3IgPT0gR1BHX0VSUl9OT19FUlJPUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0
b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7
Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+
KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FL
ZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkp
OwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91
bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9j
dW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
LSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtv
dXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91
dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZv
cm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlm
ICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZl
Y3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQor
RXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1
cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3
b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVy
ZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBk
YXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBpZiAo
IW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAg
ICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJy
b3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91
dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9
KTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVy
ZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmICghb3V0
cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICBy
ZXR1cm4gKm91dHB1dDsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQ
YXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQR0NyeXB0LmNwcAppbmRleCA1Y2ZmMWYwNGU2OTNkNTA2MGRkZjIyZDA3ODAyYzkxNWUzZTZh
YWE3Li4wYWJhM2NiZTg1MDZiZTQ0OGZhZTZlM2M4YjUzYjI2YjY2MzZkNmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQR0NyeXB0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0tl
eVJTQS5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTExMSw2MCArMTEwLDI2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0
b3I8dWludDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8
dWludDhfdD4mJiBwbGFpblRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVl
dWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
a2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYg
cnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KCpw
YXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tl
eVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNy
eXB0KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXko
KSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBwbGFpblRleHQpOwotICAgICAgICAgICAg
aWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAg
ICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3Zl
KCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChy
c2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJz
YVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcGxhaW5UZXh0KTsKKyAgICBpZiAoIW91dHB1dCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJu
IFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhl
clRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0g
ICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShr
ZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwot
ICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0
KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQocnNhS2V5Lmhh
c2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0
ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhlclRleHQpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQp
IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg
YXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMu
bGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpv
dXRwdXQpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAK
aW5kZXggNDNjN2E4MWJlMTM5ZGJlMGNjMWZkN2I2YjQxMzBlYTZhNzJkMjVmNi4uMWMwZmUzODdi
YWYzMjEwNmVmMGQ1M2YyMWU2ZjUxNmMzNDYzNzczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQu
Y3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFy
YW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTE0MSw2MCArMTQwLDI2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhf
CiAgICAgcmV0dXJuIHsgZXJyb3IgPT0gR1BHX0VSUl9OT19FUlJPUiB9OwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRj
aCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZN
b3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29u
dGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENy
eXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMg
PSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQot
ICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKHJzYUtleS5wbGF0Zm9ybUtleSgp
LCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0
cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgot
ICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwor
ICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRv
JiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihw
YXJhbWV0ZXJzKTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZv
cm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0
aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFvdXRw
dXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJl
dHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6
OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+
IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5y
ZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3Zl
KHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRl
cnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsK
LQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3Jt
S2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewot
ICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRv
JiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVy
cyk7CisKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXko
KSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNh
UGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1
dCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggOTk1ODkzNzVj
ZDExYWNhMTlkNWNiOTE1ZjcyOWIwOTg1YWJjZjFhYi4uM2E4MDBlM2U2YWNkZWY1ZGRmMjZhN2Y0
Y2E0ZDk3N2YyYWU0YTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJDcnlwdG9LZXlSU0EuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksNDggKzU4LDE2IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRSU0FFU19QS0NTMV92MV81KGNvbnN0IFBs
YXRmb3JtUlNBS2V5CiAgICAgcmV0dXJuIFdURk1vdmUocGxhaW5UZXh0KTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoUmVmPENyeXB0
b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxh
aW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtr
ZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5
LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7Ci0g
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAg
IH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAg
ICByZXR1cm4gZW5jcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJz
YUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVj
cnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3Jr
UXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShj
aXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxh
dGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNp
cGhlclRleHQuc2l6ZSgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
IGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FL
ZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dC5kYXRh
KCksIGNpcGhlclRleHQuc2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDJmZTcwNTE0YzI2OTU5NDM3MWM0NmY0YTRhNDdkNjE4
YzRhZDhlOTQuLjEzZTljODQ5ZjU3MDA5ZDIzMzE1NmQ0ODg2N2E1NjJkNjQ3ZjRhNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgogI2luY2x1ZGUgIkNy
eXB0b0RpZ2VzdEFsZ29yaXRobS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04OSw0OCArODgsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9Q
S0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9L
ZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBzaWduUlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUlu
Qml0cygpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCku
Y29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIHNpZ25SU0FTU0Ff
UEtDUzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRm
b3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3Jt
VmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUs
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkm
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBX
VEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1v
dmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAg
ICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hB
bGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUuZGF0
YSgpLCBzaWduYXR1cmUuc2l6ZSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQg
b25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1l
bnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsK
KyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0
dXJuIHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNp
emUoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
TWFjLmNwcAppbmRleCBlZjViMDlkMmY2ZDhlOGZjNmI5ODdkN2IyNGQ1YTM4OTM3Y2ViZGU1Li43
ZTA1MjgzODFhMTdjMzA3ZjIxM2I1MWMxZDVlZmFmMzU5MDA4ZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNw
cApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZC5o
IgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OSw1MCArNjgsMTggQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdFJTQV9PQUVQKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gV1RGTW92ZShwbGFpblRleHQpOwogfQog
Ci12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0
b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVu
Y3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKIHsKLSAgICBjb250ZXh0LnJl
ZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1l
dGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+
KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGVuY3J5cHRSU0FfT0FFUChy
c2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3Rv
cigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5U
ZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
LSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2Rl
KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYVBhcmFt
ZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJz
KTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAg
cmV0dXJuIGVuY3J5cHRSU0FfT0FFUChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwg
cnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5
LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4
dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhl
clRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQ
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRSU0Ff
T0FFUChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJl
bFZlY3RvcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
Y2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRleHQuc2l6ZSgpKTsKLSAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVj
KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYg
cnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBh
cmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
KTsKKyAgICByZXR1cm4gZGVjcnlwdFJTQV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRp
ZmllcigpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgp
LCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVyVGV4dC5z
aXplKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHAKaW5kZXggMzliMGExYzIyOWI2NjczZmE4
ZmY1M2E3YTQ5ZDYzNWJiNzUwZGJmZC4uZDIwYzViY2QwZmQxYWM5YzJhYTI2ZjQ5NmQxYTU1YjNk
ZTI4YmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FfUFNTTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgyLDUwICs4MSwxOCBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBX1BTUyhDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2gsIGNvbnN0IFBsYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXks
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
UFNTOjpwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29u
dGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYg
cnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRv
JiByc2FQYXJhbXMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJh
bWV0ZXJzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzaWduUlNBX1BTUyhyc2FLZXkuaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXpl
SW5CaXRzKCksIGRhdGEsIHJzYVBhcmFtcy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVj
KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYg
cnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJzYVBhcmFt
ZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMp
OworICAgIHJldHVybiBzaWduUlNBX1BTUyhyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIo
KSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEsIHJz
YVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6cGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQordm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0
dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkp
OwotICAgICAgICBhdXRvJiByc2FQYXJhbXMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQ
c3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSB2ZXJpZnlSU0Ff
UFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXko
KSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1
dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0
ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5UlNBX1BTUyhyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhUGFyYW1l
dGVycy5zYWx0TGVuZ3RoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318626</attachid>
            <date>2017-08-21 04:44:45 -0700</date>
            <delta_ts>2017-08-22 05:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175621-20170821134442.patch</filename>
            <type>text/plain</type>
            <size>63887</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNzE3OGZkMTRjYWI1
NTg0NzBjNTAyYzM5NjY5YmQ2OWRmNDVlOC4uODVjZWQ5MWU5OTgwOTU4YmQxNzBmZDlhZGE1ZTUx
NmRlMTg1ZWExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTA4LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNo
IHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJl
dHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBX
ZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1
c2VzIG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0
aCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9t
CisgICAgICAgIHRoZXNlIGFzeW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBh
bmQgcmV0dXJuIGFuIEV4Y2VwdGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzIG9iamVjdHMgYXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICBy
ZWZlcmVuY2VzIGJlY2F1c2UgZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhl
IHVuZGVybHlpbmcKKyAgICAgICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFy
ZSBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlv
bnMgY2FuIHRoZW4gbWFudWFsbHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtl
eQorICAgICAgICBvciBwYXJhbWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lm
aWMgaW1wbGVtZW50YXRpb24uIElucHV0CisgICAgICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2gg
Y29uc3QgcmVmZXJlbmNlcyB0byB0aGUgb3JpZ2luYWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdCk6CisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2
ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpzaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnZlcmlmeSk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oOgorICAg
ICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKwogMjAxNy0wOC0yMCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gQWRk
IGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhS2V5cygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4IGU0ZGI1OTMzOTMy
YmE0ZmFmY2I4NzY4MGQ4MDAwNWVmNjhjMjAxZjQuLjU2ZTc0ZGFjNzJmNmFmODNhZDEzOTJmZTMw
MjcxMWFlZjg3NzQ1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFy
YW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJT
QS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Myw3ICs1NCwyOCBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNj
ZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRW5jcnlwdChX
VEZNb3ZlKGtleSksIFdURk1vdmUocGxhaW5UZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4
dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZNb3Zl
KGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRm
b3JtRW5jcnlwdChrZXksIFdURk1vdmUocGxhaW5UZXh0KSk7CisgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAg
ICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
KyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5
PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC02Miw3ICs4
NCwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRm
b3JtRGVjcnlwdChXVEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsK
KworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBb
a2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IHBsYXRmb3JtRGVjcnlwdChrZXksIFdURk1vdmUoY2lwaGVyVGV4dCkpOworICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlP
cktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNS5oCmluZGV4IGQzYzFmMmE2MjFhYmI0NmI1ZWUxM2FkN2JhOTM5
M2I3YWY4ZjBjZjEuLjcyNmZjNDc3NjI4NmI4MTE3ZGZjNTg1ZWRkMWRiNzU4YWNhMzJmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKQEAgLTUwLDggKzUwLDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJl
ZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBm
aW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rv
cjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5
cHQoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUm
KTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5
cHQoY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDI5M2I4
ZWZlZGRjZWU0Yzk5ZjA3ZmFlNTkxOTQyMTgwMDlmZTIwMjcuLjVlNGIwOWQ1NTQ0OTJjMjAzNmQ0
YWY1M2UyNDRlMzFkMDAzODQwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FI
YXNoZWRLZXlHZW5QYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDcg
KzU5LDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxh
dGZvcm1TaWduKFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAg
Y29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBX
VEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1T
aWduKGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAg
IFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAg
ICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBA
IC02Nyw3ICs4OSwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2
ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcgogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHBsYXRmb3JtVmVyaWZ5KFdURk1vdmUoa2V5KSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZN
b3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1
ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RG
TW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRm
b3JtVmVyaWZ5KGtleSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9y
S2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzUuaAppbmRleCBjNGMyYWEzNGNmNGM4NWFmYzg0Y2RkZmU3ZDVj
NzAzYWQwNGI1ZTE5Li4yYTM0Zjc1YzRhOGJlMTg4MDU0ZjAzYWM4MTcxMGE3NDBmODlmZTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKQEAgLTQ5LDggKzQ5LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQs
IFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
KSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rv
cjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlm
eShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1
aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UC5jcHAKaW5kZXggNGRlYmZmMDI3MzgwOWRhZmI0ZWQ5MTgzMWQzNzlhMTllMDhhYmFlYS4uNWFi
ZGVhYWJmNzc1MzkyNjEyMmI4MTIwM2YwY2Q4ZTJhYWE5NGFjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhh
c2hlZEtleUdlblBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRl
ICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTksNyAr
NjAsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0
Zm9ybUVuY3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBs
YWluVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
Y29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtl
eSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gcGxhdGZvcm1FbmNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUocGxhaW5UZXh0
KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCkBAIC02OSw3ICs5MSwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNv
bnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVy
cyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9
IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybURlY3J5cHQoKnBhcmFt
ZXRlcnMsIGtleSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAg
ICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAg
ICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
IH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKaW5kZXggMmY1NTQxNjY3MjViNzAy
ZTNiMjk2ZTg1ZGEwMzliYTUyOWU5OTQ2NC4uNzg5YTRmZWYxYWJkYjJiMDA2NjQzMDkzMTQ2MmEw
ZGUxNDkwZTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8
Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYs
IFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVj
dG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVjcnlwdChDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3Bw
CmluZGV4IDdhNjRlNjE4MzljYzdlYTg0MjAzZTBmNTNiZGU4Y2Q2ZjY4ODQ5NDUuLjNmNzNiNmY4
NTEzZWI4ZTNmYWY4NWZhZTUzYTg4NDcwM2FjYzc3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5
R2VuUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgogI2luY2x1ZGUgIkNyeXB0
b0tleVJTQS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw3ICs1OSwyOCBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcAogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZh
bGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtU2ln
bihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoZGF0YSksIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1
ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybVNpZ24oKnBhcmFt
ZXRlcnMsIGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAg
ICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAg
ICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAog
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXks
IFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9v
bENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KQpAQCAtNjcsNyArODksMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnko
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYKICAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSks
IFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29u
dGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJz
ID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBX
VEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxh
dGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3Zl
KGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAg
ICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisg
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSBy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQV9QU1M6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1MuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9QU1MuaAppbmRleCA5YmNkNGUwNDRjZDA0ZWI0NGRkNDQ0OWQ0OGFmMjAxZWQ3MzVlODcxLi4z
M2Q3MjM0MDFjZGE3MjM3MmFkOGI3NzdlNmZkOTkxZTY5ZjY4ZjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uy5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRv
S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tl
eT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBs
YXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1
aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdD
cnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDA4YTdiZmVlYTU1Mzc3ZTNkYTlhOTM4YTBh
NjY5ZjMxN2ZiNzMzNjMuLmU3NzFjMDQxMDE3NmQzYmY0ZDMwN2E1N2VlNTQ2OWQxNTg2MmU2ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApAQCAtMzAsMTEg
KzMwLDEwIEBACiAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWlu
VGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlw
dChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkK
IHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBkYXRhIGluIGEgYGRhdGFgIHMtZXhwcmVz
c2lvbiB1c2luZyBQS0NTIzEgcGFkZGluZy4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
c2V4cF90PiBkYXRhU2V4cDsKQEAgLTY0LDcgKzYzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rv
cjwKICAgICByZXR1cm4gbXBpRGF0YShhU2V4cCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0
b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0
YSBpbiBhbiBgZW5jLXZhbGAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGVuY1ZhbFNleHA7CkBAIC05NCw1OCAr
OTMsMjAgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNy
eXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3RvcjwKICAgICByZXR1cm4gbXBpRGF0YSh2YWx1
ZVNleHApOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRW5jcnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5U
ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRF
bmNyeXB0KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBXVEZNb3ZlKHBsYWluVGV4dCkpOwotICAgICAg
ICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9w
ZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBX
VEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShvdXRwdXQpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVu
Y3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLnBsYXRmb3JtS2V5KCksIHBsYWluVGV4
dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5
PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
aXBoZXJUZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBo
ZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkucGxhdGZv
cm1LZXkoKSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwgY2lwaGVyVGV4dCk7CisgICAgaWYgKCFvdXRw
dXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJl
dHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IGI2NWE0YzIyNmY2
NjI5MWQwMTFjYjk1NDNiMTEwYTdmMGQ3NTVkYTAuLjkyYWViNGYyNWJjZTJhOWZiOTAwM2E1YjUw
YTJiOWFjZjVkZmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5
cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5j
bHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTM1LDU4ICsxMzQsMjIgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0
VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1
cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250
ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1v
dmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNh
S2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdU
Rk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9y
bUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxh
dGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworICAgIHJldHVybiAqb3V0cHV0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCmluZGV4IDBmZmJiZTM0YzYzYTJiMjgw
ZjJiMzk2OTI2NjY0ZGNkOWY4YjZjZTYuLmQzMGQyYjRlZTQ3ODEwMmMzOWNjYzgwOGIyNTExNjQ0
NDExNzdiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTExLDYwICsxMTAsMjYgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gbXBpRGF0YSh2YWx1ZVNleHApOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVy
cyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0g
V1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwg
cGxhaW5UZXh0KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMg
PSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWlu
VGV4dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShj
aXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
UnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdERlY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJz
YUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhlclRl
eHQpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAg
IFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5
LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7
CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCA0M2M3YTgxYmUxMzlkYmUw
Y2MxZmQ3YjZiNDEzMGVhNmE3MmQyNWY2Li5mMTY3YzBkMmRkYmY3NWYzNDkzYmY2Y2EwMzYzNjY5
NzU3MzIwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQxLDYw
ICsxNDAsMjYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlf
c2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1cm4geyBlcnJvciA9
PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6
cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTUzo6cGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0g
ICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5n
ZXQoKSk7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJ
bkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFt
ZXRlcnMuc2FsdExlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0g
ICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7CisKKyAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5r
ZXlTaXplSW5CaXRzKCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCBy
c2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0
cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBS
ZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1
cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0
dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAg
ICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
c2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFy
YW1ldGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
LSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWdu
YXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0
ZXJzLnNhbHRMZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAppbmRleCAzYWMwNGU1YTA1MTk2Nzll
YjZlNTUzNjE0M2VkNWJkNTZjYmE3YTVmLi4zOWM4MTNlNjM1OTQyZTBmODU5MzAwMDE4MmI0ZTVi
NmViZjBiMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDcgKzMw
LDYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0tleVJTQS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw0OCArNTQsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdFJTQUVTX1BLQ1MxX3YxXzUoY29uc3QgUGxhdGZvcm1S
U0FLZXkKICAgICByZXR1cm4gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChSZWY8Q3J5cHRvS2V5PiYm
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1F
bmNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWlu
VGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5
ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gZW5jcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5r
ZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRv
d25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4gZW5jcnlwdFJTQUVTX1BLQ1Mx
X3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWlu
VGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZv
cm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJU
ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsK
LSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9
IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtl
eS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdFJTQUVTX1BLQ1MxX3YxXzUo
cnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRleHQp
OwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFz
ayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsK
LSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7
CisgICAgcmV0dXJuIGRlY3J5cHRSU0FFU19QS0NTMV92MV81KHJzYUtleS5wbGF0Zm9ybUtleSgp
LCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAppbmRleCAwMTUyZjY2
NGMzMzA4ZTIwMjdmYmExYWQ5ODYwODRlOTA5YjQ5Nzk3Li44N2U2YzIwYjg0MTY4ODYzM2IzYzQx
YzU4ODU5YzM0Y2E5ZDBhOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC04NCw0OCArODMsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlm
eVJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShy
c2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJz
YUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIHNpZ25SU0FTU0FfUEtDUzFf
djFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBC
b29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4
dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgc2ln
bmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSk7Ci0gICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4g
dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwCmluZGV4IDExZDE4YzdhZTAyMjQyMTc1ZTI3MzY4
Mzg1NjI2Mzg5MmY5Y2M4MTkuLjE2NjAxMzM3ODMyMzRmZmE3OGNlM2Y3NDUyMjcyNTVhYTE3NDMw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVBNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBNYWMuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1MCArNjMsMTggQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdFJTQV9PQUVQKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gV1RGTW92ZShwbGFpblRleHQpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBs
YWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAg
ICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZW5jcnlwdFJT
QV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLmxh
YmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygp
LCBwbGFpblRleHQpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29u
dGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNh
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBlbmNyeXB0UlNB
X09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFi
ZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCks
IHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3Jt
RGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4
dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFy
YW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVy
VGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gZGVjcnlwdFJTQV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FL
ZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNv
ZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAg
ICByZXR1cm4gZGVjcnlwdFJTQV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FL
ZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTU01hYy5jcHAKaW5kZXggMzliMGExYzIyOWI2NjczZmE4ZmY1M2E3YTQ5ZDYzNWJi
NzUwZGJmZC4uNDRiNWNlMjcwMjA1OWYxM2FmZjQzNDIwMjYwZDg5NTg2MWRlZjI4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1NNYWMuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNh
UHNzUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgyLDUwICs4MSwxOCBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBX1BTUyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IGNvbnN0IFBsYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNp
Z24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigp
OwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVy
cyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFt
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
ZGF0YSwgcnNhUGFyYW1zLnNhbHRMZW5ndGgpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgcmV0
dXJuIHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXku
cGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhUGFyYW1ldGVy
cy5zYWx0TGVuZ3RoKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9y
bVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJl
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9Q
U1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkp
OwotICAgICAgICBhdXRvJiByc2FQYXJhbXMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQ
c3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSB2ZXJpZnlSU0Ff
UFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXko
KSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1
dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0
ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5UlNBX1BTUyhyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhUGFyYW1l
dGVycy5zYWx0TGVuZ3RoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318754</attachid>
            <date>2017-08-22 05:33:19 -0700</date>
            <delta_ts>2017-08-22 06:39:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175621-20170822143317.patch</filename>
            <type>text/plain</type>
            <size>60418</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0YzAxMjMwMGU4OWY1
YzI5NDY3YTljNDc5M2ZiYjlmNmFlYmNiZC4uMGYyYWQ2MzkyYjdkOGM0MGE1YzQyMzVjOTM3MGI5
OWU1MGNiZWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE3LTA4LTIyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNo
IHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJl
dHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBX
ZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1
c2VzIG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBUaGUgV29ya1F1ZXVl
IGRpc3BhdGNoIGNvZGUgaXMgY29uZGVuc2VkIGludG8gdHdvIHN0YXRpYyBmdW5jdGlvbnMgb24K
KyAgICAgICAgdGhlIENyeXB0b0FsZ29yaXRobSBjbGFzcywgdGhlIGZpcnN0IHZhcmlhdGlvbiBo
YW5kbGluZyBWZWN0b3JDYWxsYmFjaworICAgICAgICBhcyB0aGUgY2FsbGJhY2sgdHlwZSBhbmQg
dGhlIG90aGVyIGhhbmRsaW5nIEJvb2xDYWxsYmFjay4gVGhlIG9wZXJhdGlvbgorICAgICAgICBp
cyBrZXB0IGluIGEgV1RGOjpGdW5jdGlvbjw+IG9iamVjdCB0aGF0IHJldHVybnMgYW4gRXhjZXB0
aW9uT3I8PiB2YWx1ZQorICAgICAgICBlbWJlZGRpbmcgZWl0aGVyIGEgVmVjdG9yPHVpbnQ4X3Q+
IG9iamVjdCBvciBhIGJvb2xlYW4gdmFsdWUsIGFzCisgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0
aGUgY2FsbGJhY2sgdHlwZS4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNl
IGFzeW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4
Y2VwdGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVj
dHMgYXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1
c2UgZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAg
ICAgICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3Vn
aCBjb25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFu
dWFsbHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBw
YXJhbWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRp
b24uIElucHV0CisgICAgICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNl
cyB0byB0aGUgb3JpZ2luYWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0tIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRpc3BhdGNoT3BlcmF0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaDoKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRE
ZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxh
dGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVj
cnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNy
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTIx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJ
XSBBZGQgc3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtLmNwcAppbmRleCA3ZTRkY2M5MDkwN2U0MjkzOWExN2RiMDI1OGQ0OTU2
NDJhZmI0ZjcyLi43MDk5NzYyMDdhNDg2ODg4MjM5OWVkZTViNGRhYzIyMjZjYTA0NDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAtMjgsNiArMjgsOCBA
QAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDcnlwdG9BbGdvcml0
aG06OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYs
IFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgV29ya1F1ZXVlJikKQEAgLTkwLDYgKzkyLDQyIEBAIEV4Y2VwdGlvbk9yPHNpemVfdD4g
Q3J5cHRvQWxnb3JpdGhtOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZT4KK3N0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9uSW1wbChXb3JrUXVldWUmIHdvcmtRdWV1
ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzdWx0Q2FsbGJhY2tUeXBlJiYg
Y2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaywgT3BlcmF0aW9uVHlwZSYmIG9wZXJhdGlvbikKK3sKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1vdmUo
b3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOworICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQor
Cit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb24oV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmIG9wZXJhdGlvbikKK3sKKyAg
ICBkaXNwYXRjaE9wZXJhdGlvbkltcGwod29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIFdURk1vdmUob3BlcmF0aW9uKSk7Cit9
CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbihXb3JrUXVldWUmIHdv
cmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJiBvcGVyYXRpb24pCit7CisgICAgZGlzcGF0Y2hP
cGVyYXRpb25JbXBsKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZNb3ZlKG9wZXJhdGlvbikpOworfQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IGViYTdjNWQx
ODQ2MmZiOWZmMGRkOGFmNGQwZDI1YzMwYWNiNmI5ZGQuLmU3MDgyMTM0MjU1OWQzYWRkNzRjYjVj
YzU1Y2NlYzAwZTg1N2UwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cmFwS2V5KFJl
ZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNl
cHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgdW53cmFwS2V5KFJlZjxDcnlwdG9L
ZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKTsKKworICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoT3BlcmF0aW9uKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3JD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4oKT4mJik7CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRp
b24oV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJvb2xDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAppbmRleCBlNGRiNTkzMzkzMmJhNGZhZmNiODc2ODBkODAwMDVlZjY4YzIw
MWY0Li5mOGY4MWRjMjk3OWZlMGYzNDgwYjIzY2JiNTUzYTFkZTQ1NjQ0NzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tl
eVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTMsNyArNTQsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjplbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWlu
VGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29u
dGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29u
dGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAg
ICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCld
IHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoa2V5LCBwbGFpblRleHQpOwor
ICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpk
ZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8
Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBA
IC02Miw3ICs2NywxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRl
Y3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcgogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29y
a1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5
ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0geworICAg
ICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChrZXksIGNpcGhlclRleHQpOworICAgICAg
ICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmgKaW5kZXggZDNjMWYyYTYyMWFiYjQ2YjVlZTEzYWQ3YmE5MzkzYjdhZjhmMGNmMS4u
NzI2ZmM0Nzc2Mjg2YjgxMTdkZmM1ODVlZGQxZGI3NThhY2EzMmYxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtNTAsOCArNTAsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4m
JiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAg
dm9pZCBwbGF0Zm9ybUVuY3J5cHQoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYs
IFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRv
S2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2Fs
bGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKaW5kZXggMjkzYjhlZmVkZGNlZTRjOTlm
MDdmYWU1OTE5NDIxODAwOWZlMjAyNy4uNmIxYzFkYzM5ODkxOTdkYzUzMzVhZGI5NTEyM2MxNjlj
NmI3ZmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBh
cmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlS
U0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNTksMTEgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW0KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFj
Y2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RG
TW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJh
dGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1v
dmUoZGF0YSldIHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oa2V5LCBkYXRhKTsK
KyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVm
PENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjcsNyArNzIsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXIKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKGtleSksIFdU
Rk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0
Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25h
dHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAgICAg
ICAgICAgIHJldHVybiBwbGF0Zm9ybVZlcmlmeShrZXksIHNpZ25hdHVyZSwgZGF0YSk7CisgICAg
ICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5l
cmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaAppbmRleCBjNGMyYWEzNGNmNGM4NWFmYzg0Y2RkZmU3ZDVjNzAzYWQwNGI1
ZTE5Li4yYTM0Zjc1YzRhOGJlMTg4MDU0ZjAzYWM4MTcxMGE3NDBmODlmZTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlw
dG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsK
IAotICAgIHZvaWQgcGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90
PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5
cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYm
LCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5k
ZXggNGRlYmZmMDI3MzgwOWRhZmI0ZWQ5MTgzMWQzNzlhMTllMDhhYmFlYS4uMjYxNWE1NWNhNjVi
ZmVmZmFmOWJiMmI0MzVlMTVkMzFjNjNkNjdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdl
blBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTksNyArNjAsMTEgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxp
ZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybUVuY3J5
cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4dCks
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwg
d29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBb
cGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZv
cm1FbmNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIHBsYWluVGV4dCk7CisgICAgICAgIH0pOwogfQog
CiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTY5LDcgKzc0LDEx
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKElu
dmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1E
ZWNyeXB0KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJU
ZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250
ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250
ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAg
ICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkp
LCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0geworICAgICAgICAgICAgcmV0dXJu
IHBsYXRmb3JtRGVjcnlwdCgqcGFyYW1ldGVycywga2V5LCBjaXBoZXJUZXh0KTsKKyAgICAgICAg
fSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDJmNTU0MTY2NzI1
YjcwMmUzYjI5NmU4NWRhMDM5YmE1MjllOTk0NjQuLjc4OWE0ZmVmMWFiZGIyYjAwNjY0MzA5MzE0
NjJhMGRlMTQ5MGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAtNDksOCArNDksOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwg
UmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYp
IGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90
PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYs
IFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQoQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
LmNwcAppbmRleCA3YTY0ZTYxODM5Y2M3ZWE4NDIwM2UwZjUzYmRlOGNkNmY2ODg0OTQ1Li5lN2Y0
MTY5MmZkODE3MjI4ODM3MThjNzBkNzY5NTFjZTA5NmM4ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYUhhc2hl
ZEtleUdlblBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNTks
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHAKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
SW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9y
bVNpZ24oV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdv
cmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW3Bh
cmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEg
PSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWduKCpwYXJh
bWV0ZXJzLCBrZXksIGRhdGEpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjcsNyArNzIsMTEg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52
YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZl
cmlmeShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJl
KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29y
a1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0g
V1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRl
cnMsIGtleSwgc2lnbmF0dXJlLCBkYXRhKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX1BTUzo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBX1BTUy5oCmluZGV4IDliY2Q0ZTA0NGNkMDRlYjQ0ZGQ0NDQ5ZDQ4YWYyMDFlZDcz
NWU4NzEuLjMzZDcyMzQwMWNkYTcyMzcyYWQ4Yjc3N2U2ZmQ5OTFlNjlmNjhmMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtl
eShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZv
cm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8
Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAg
IHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggMDhhN2JmZWVhNTUzNzdlM2Rh
OWE5MzhhMGE2NjlmMzE3ZmI3MzM2My4uZTc3MWMwNDEwMTc2ZDNiZjRkMzA3YTU3ZWU1NDY5ZDE1
ODYyZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBA
IC0zMCwxMSArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUg
IkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgVmVjdG9yPHVpbnQ4X3Q+
JiYgcGxhaW5UZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxh
aW5UZXh0KQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBgZGF0YWAg
cy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOwpAQCAtNjQsNyArNjMsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgVmVjdG9yPAogICAgIHJldHVybiBtcGlEYXRhKGFTZXhwKTsKIH0KIAotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNl
eHAsIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewogICAgIC8vIEVtYmVkIHRoZSBjaXBoZXIt
dGV4dCBkYXRhIGluIGFuIGBlbmMtdmFsYCBzLWV4cHJlc3Npb24gdXNpbmcgUEtDUyMxIHBhZGRp
bmcuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZW5jVmFsU2V4cDsKQEAg
LTk0LDU4ICs5MywyMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgVmVjdG9yPAogICAgIHJldHVybiBtcGlE
YXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4m
JiBwbGFpblRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShr
ZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
ICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9
IGdjcnlwdEVuY3J5cHQocnNhS2V5LnBsYXRmb3JtS2V5KCksIFdURk1vdmUocGxhaW5UZXh0KSk7
Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAot
ICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291
dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0RW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwg
cGxhaW5UZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KFJlZjxD
cnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCi0gICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZN
b3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtl
eS5wbGF0Zm9ybUtleSgpLCBXVEZNb3ZlKGNpcGhlclRleHQpKTsKLSAgICAgICAgICAgIGlmICgh
b3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAg
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJv
cik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0
cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUob3V0cHV0
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5KS5wbGF0Zm9ybUtleSgpLCBjaXBoZXJUZXh0KTsKKyAgICBp
ZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggYjY1
YTRjMjI2ZjY2MjkxZDAxMWNiOTU0M2IxMTBhN2YwZDc1NWRhMC4uOTJhZWI0ZjI1YmNlMmE5ZmI5
MDAzYTViNTBhMmI5YWNmNWRmYWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNUdDcnlwdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0Eu
aCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMzUsNTggKzEzNCwyMiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29s
PiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4Xwog
ICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5
ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAot
ICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0
U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKCkpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQog
ewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBb
a2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEg
PSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5
LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKCkpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5w
b3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAg
ICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJz
YUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGht
SWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuICpvdXRwdXQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKaW5kZXggMGZmYmJlMzRj
NjNhMmIyODBmMmIzOTY5MjY2NjRkY2Q5ZjhiNmNlNi4uZDMwZDJiNGVlNDc4MTAyYzM5Y2NjODA4
YjI1MTE2NDQ0MTE3N2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTEsNjAgKzEx
MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5
cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogICAgIHJldHVybiBtcGlEYXRhKHZhbHVl
U2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlw
dChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJz
LCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBwbGFp
blRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAg
ICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KHJzYUtleS5oYXNoQWxnb3JpdGht
SWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZl
Y3RvcigpLCBwbGFpblRleHQpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAot
ICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3Io
KSwgcGxhaW5UZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRv
S2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURl
Y3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250
ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBX
VEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwg
Y2lwaGVyVGV4dCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAg
ICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7Cisg
ICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworCisgICAgYXV0
byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBjaXBo
ZXJUZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCmluZGV4IDQzYzdhODFi
ZTEzOWRiZTBjYzFmZDdiNmI0MTMwZWE2YTcyZDI1ZjYuLmYxNjdjMGQyZGRiZjc1ZjM0OTNiZjZj
YTAzNjM2Njk3NTczMjBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIgogI2luY2x1
ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNDEsNjAgKzE0MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJp
ZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7
IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICAg
ICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXku
a2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwg
cnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJz
KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlm
aWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZN
b3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3Jt
VmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFt
ZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUs
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0Fs
Z29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdU
Rk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92
ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
JmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2Fz
dDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0
ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9y
bUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsK
LSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFj
ayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0
byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJzYVBh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRl
cnMpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5
KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJz
YVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRw
dXQpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDNhYzA0ZTVh
MDUxOTY3OWViNmU1NTM2MTQzZWQ1YmQ1NmNiYTdhNWYuLjM5YzgxM2U2MzU5NDJlMGY4NTkzMDAw
MTgyYjRlNWI2ZWJmMGIyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDQ4ICs1NCwxNiBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShjb25zdCBQ
bGF0Zm9ybVJTQUtleQogICAgIHJldHVybiBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
LmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNh
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBlbmNyeXB0UlNB
RVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMo
KSwgcGxhaW5UZXh0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybURlY3J5cHQoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0
LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBo
ZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRl
eHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tl
eVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBRVNfUEtD
UzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lw
aGVyVGV4dCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5KTsKKyAgICByZXR1cm4gZGVjcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRm
b3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRleHQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4
IDAxNTJmNjY0YzMzMDhlMjAyN2ZiYTFhZDk4NjA4NGU5MDliNDk3OTcuLjg3ZTZjMjBiODQxNjg4
NjMzYjNjNDFjNTg4NTljMzRjYTlkMGE5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVN
YWMuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
S2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTg0LDQ4ICs4MywxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9v
bD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNo
LAogICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tl
eT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1T
aWduKGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1v
dmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9L
ZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc2lnblJTQVNTQV9QS0NT
MV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1L
ZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSk7Ci0gICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4gc2lnblJTQVNT
QV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxh
dGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSk7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9L
ZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAg
ICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShr
ZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBh
dXRvIHJlc3VsdCA9IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGht
SWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhKTsKLSAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2so
cmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAg
IHJldHVybiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKaW5kZXggMTFkMThjN2FlMDIyNDIx
NzVlMjczNjgzODU2MjYzODkyZjljYzgxOS4uMTY2MDEzMzc4MzIzNGZmYTc4Y2UzZjc0NTIyNzI1
NWFhMTc0MzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
ICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDUwICs2
MywxOCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0UlNBX09B
RVAoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogICAgIHJldHVybiBXVEZNb3ZlKHBsYWlu
VGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlw
dChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJz
LCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdU
Rk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRv
d25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBl
bmNyeXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFt
ZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXpl
SW5CaXRzKCksIHBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBh
dXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIGVu
Y3J5cHRSU0FfT0FFUChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1l
dGVycy5sYWJlbFZlY3RvcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJ
bkJpdHMoKSwgcGxhaW5UZXh0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBj
aXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjaXBoZXJUZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkp
LCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
JmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRleHQpOwotICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
ZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRv
JiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4o
cGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkpOworICAgIHJldHVybiBkZWNyeXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRleHQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FfUFNTTWFjLmNwcAppbmRleCAzOWIwYTFjMjI5YjY2NzNmYThmZjUzYTdh
NDlkNjM1YmI3NTBkYmZkLi40NGI1Y2UyNzAyMDU5ZjEzYWZmNDM0MjAyNjBkODk1ODYxZGVmMjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJT
QV9QU1NNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTU01hYy5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9EaWdlc3RBbGdvcml0aG0uaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODIsNTAgKzgxLDE4IEBAIHN0YXRp
YyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FfUFNTKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaCwgY29uc3QgUGxhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBs
YXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShw
YXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYg
cnNhUGFyYW1zID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUlu
Qml0cygpLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7Ci0gICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0
ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsK
KyAgICByZXR1cm4gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FQ
YXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6
OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtl
eS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtcyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHZl
cmlmeVJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0
Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYVBhcmFtcy5zYWx0TGVuZ3RoKTsKLSAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+
KHBhcmFtZXRlcnMpOworICAgIHJldHVybiB2ZXJpZnlSU0FfUFNTKHJzYUtleS5oYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCBy
c2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318755</attachid>
            <date>2017-08-22 06:39:26 -0700</date>
            <delta_ts>2017-08-24 23:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175621-20170822153924.patch</filename>
            <type>text/plain</type>
            <size>59584</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0YzAxMjMwMGU4OWY1
YzI5NDY3YTljNDc5M2ZiYjlmNmFlYmNiZC4uMGYyYWQ2MzkyYjdkOGM0MGE1YzQyMzVjOTM3MGI5
OWU1MGNiZWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE3LTA4LTIyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNo
IHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJl
dHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBX
ZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1
c2VzIG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBUaGUgV29ya1F1ZXVl
IGRpc3BhdGNoIGNvZGUgaXMgY29uZGVuc2VkIGludG8gdHdvIHN0YXRpYyBmdW5jdGlvbnMgb24K
KyAgICAgICAgdGhlIENyeXB0b0FsZ29yaXRobSBjbGFzcywgdGhlIGZpcnN0IHZhcmlhdGlvbiBo
YW5kbGluZyBWZWN0b3JDYWxsYmFjaworICAgICAgICBhcyB0aGUgY2FsbGJhY2sgdHlwZSBhbmQg
dGhlIG90aGVyIGhhbmRsaW5nIEJvb2xDYWxsYmFjay4gVGhlIG9wZXJhdGlvbgorICAgICAgICBp
cyBrZXB0IGluIGEgV1RGOjpGdW5jdGlvbjw+IG9iamVjdCB0aGF0IHJldHVybnMgYW4gRXhjZXB0
aW9uT3I8PiB2YWx1ZQorICAgICAgICBlbWJlZGRpbmcgZWl0aGVyIGEgVmVjdG9yPHVpbnQ4X3Q+
IG9iamVjdCBvciBhIGJvb2xlYW4gdmFsdWUsIGFzCisgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0
aGUgY2FsbGJhY2sgdHlwZS4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNl
IGFzeW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4
Y2VwdGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVj
dHMgYXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1
c2UgZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAg
ICAgICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3Vn
aCBjb25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFu
dWFsbHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBw
YXJhbWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRp
b24uIElucHV0CisgICAgICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNl
cyB0byB0aGUgb3JpZ2luYWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0tIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRpc3BhdGNoT3BlcmF0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaDoKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRE
ZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxh
dGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVj
cnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNy
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTIx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJ
XSBBZGQgc3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtLmNwcAppbmRleCA3ZTRkY2M5MDkwN2U0MjkzOWExN2RiMDI1OGQ0OTU2
NDJhZmI0ZjcyLi43MDk5NzYyMDdhNDg2ODg4MjM5OWVkZTViNGRhYzIyMjZjYTA0NDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAtMjgsNiArMjgsOCBA
QAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDcnlwdG9BbGdvcml0
aG06OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYs
IFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgV29ya1F1ZXVlJikKQEAgLTkwLDYgKzkyLDQyIEBAIEV4Y2VwdGlvbk9yPHNpemVfdD4g
Q3J5cHRvQWxnb3JpdGhtOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZT4KK3N0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9uSW1wbChXb3JrUXVldWUmIHdvcmtRdWV1
ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzdWx0Q2FsbGJhY2tUeXBlJiYg
Y2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaywgT3BlcmF0aW9uVHlwZSYmIG9wZXJhdGlvbikKK3sKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1vdmUo
b3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOworICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQor
Cit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb24oV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmIG9wZXJhdGlvbikKK3sKKyAg
ICBkaXNwYXRjaE9wZXJhdGlvbkltcGwod29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIFdURk1vdmUob3BlcmF0aW9uKSk7Cit9
CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbihXb3JrUXVldWUmIHdv
cmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJiBvcGVyYXRpb24pCit7CisgICAgZGlzcGF0Y2hP
cGVyYXRpb25JbXBsKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZNb3ZlKG9wZXJhdGlvbikpOworfQorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IGViYTdjNWQx
ODQ2MmZiOWZmMGRkOGFmNGQwZDI1YzMwYWNiNmI5ZGQuLmU3MDgyMTM0MjU1OWQzYWRkNzRjYjVj
YzU1Y2NlYzAwZTg1N2UwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cmFwS2V5KFJl
ZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNl
cHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgdW53cmFwS2V5KFJlZjxDcnlwdG9L
ZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKTsKKworICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoT3BlcmF0aW9uKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3JD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4oKT4mJik7CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRp
b24oV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJvb2xDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAppbmRleCBlNGRiNTkzMzkzMmJhNGZhZmNiODc2ODBkODAwMDVlZjY4YzIw
MWY0Li5mOGY0ODY1YmVmOTgyMTkxOGQ4YWM3N2RkYmI4ZTQzNjNmYWUzN2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNTMsNyArNTMsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vz
c0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoV1RG
TW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNo
T3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRl
eHQgPSBXVEZNb3ZlKHBsYWluVGV4dCldIHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybUVu
Y3J5cHQoa2V5LCBwbGFpblRleHQpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC02Miw3ICs2NiwxMSBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKGtleSks
IFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9u
KHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RG
TW92ZShjaXBoZXJUZXh0KV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChr
ZXksIGNpcGhlclRleHQpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKaW5kZXggZDNjMWYyYTYyMWFiYjQ2YjVl
ZTEzYWQ3YmE5MzkzYjdhZjhmMGNmMS4uNzI2ZmM0Nzc2Mjg2YjgxMTdkZmM1ODVlZGQxZGI3NThh
Y2EzMmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtNTAsOCAr
NTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5
RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tl
eUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoUmVmPENyeXB0b0tl
eT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBs
YXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
KyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQo
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAK
aW5kZXggMjkzYjhlZmVkZGNlZTRjOTlmMDdmYWU1OTE5NDIxODAwOWZlMjAyNy4uYzlkNGNmMTY1
YWNiZjk1NDA3MGY2MzllY2RkNDM1NGI4MDhjMWRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcApAQCAtNTgsNyArNTgsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW0KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShrZXkpLCBXVEZN
b3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUs
IGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwK
KyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAg
ICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oa2V5LCBkYXRhKTsKKyAgICAgICAgfSk7CiB9
CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
Qm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQpAQCAtNjcsNyArNzEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJl
KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29y
a1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUo
c2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAgICAgICAgICAgIHJldHVybiBw
bGF0Zm9ybVZlcmlmeShrZXksIHNpZ25hdHVyZSwgZGF0YSk7CisgICAgICAgIH0pOwogfQogCiB2
b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApp
bmRleCBjNGMyYWEzNGNmNGM4NWFmYzg0Y2RkZmU3ZDVjNzAzYWQwNGI1ZTE5Li4yYTM0Zjc1YzRh
OGJlMTg4MDU0ZjAzYWM4MTcxMGE3NDBmODlmZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81LmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9y
dEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURh
dGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxh
dGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29y
a1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0
b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29sQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1
ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5kZXggNGRlYmZmMDI3Mzgw
OWRhZmI0ZWQ5MTgzMWQzNzlhMTllMDhhYmFlYS4uY2VlNzQ3ZWVjOTQzM2NlNzY3ZGI1ODZjMTgz
MzFmZDMxMjcwZjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApAQCAtNTksNyArNTksMTEg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52
YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybUVu
Y3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4
dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4
dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4
dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAg
ICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwg
cGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxh
dGZvcm1FbmNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIHBsYWluVGV4dCk7CisgICAgICAgIH0pOwog
fQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTY5LDcgKzcz
LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZv
cm1EZWNyeXB0KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBo
ZXJUZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBj
b250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBj
b250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisg
ICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShr
ZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0geworICAgICAgICAgICAgcmV0
dXJuIHBsYXRmb3JtRGVjcnlwdCgqcGFyYW1ldGVycywga2V5LCBjaXBoZXJUZXh0KTsKKyAgICAg
ICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDJmNTU0MTY2
NzI1YjcwMmUzYjI5NmU4NWRhMDM5YmE1MjllOTk0NjQuLjc4OWE0ZmVmMWFiZGIyYjAwNjY0MzA5
MzE0NjJhMGRlMTQ5MGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAtNDksOCArNDksOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYm
LCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1h
dCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50
OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+
JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
KyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlY3J5cHQo
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTLmNwcAppbmRleCA3YTY0ZTYxODM5Y2M3ZWE4NDIwM2UwZjUzYmRlOGNkNmY2ODg0OTQ1Li5m
ZTE5NzhjZWFkMGQ1YTczMDdiNmMzYzIwOWNiNjQ5YTRiZjYxODgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
UFNTLmNwcApAQCAtNTgsNyArNTgsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpz
aWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHAKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShr
ZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3
b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkg
PSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1
cm4gcGxhdGZvcm1TaWduKCpwYXJhbWV0ZXJzLCBrZXksIGRhdGEpOworICAgICAgICB9KTsKIH0K
IAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
Qm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQpAQCAtNjcsNyArNzEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJp
Znkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYKICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtl
eSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAg
ZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNp
Z25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxh
dGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgc2lnbmF0dXJlLCBkYXRhKTsKKyAgICAgICAg
fSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oCmluZGV4IDliY2Q0ZTA0NGNkMDRl
YjQ0ZGQ0NDQ5ZDQ4YWYyMDFlZDczNWU4NzEuLjMzZDcyMzQwMWNkYTcyMzcyYWQ4Yjc3N2U2ZmQ5
OTFlNjlmNjhmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxD
cnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5h
bDsKIAotICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVj
dG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1
aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnko
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5k
ZXggMDhhN2JmZWVhNTUzNzdlM2RhOWE5MzhhMGE2NjlmMzE3ZmI3MzM2My4uZTc3MWMwNDEwMTc2
ZDNiZjRkMzA3YTU3ZWU1NDY5ZDE1ODYyZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zMCwxMSArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkNyeXB0
b0tleVJTQS5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10
ZXh0IGRhdGEgaW4gYSBgZGF0YWAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOwpAQCAtNjQsNyAr
NjMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5
cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgVmVjdG9yPAogICAgIHJldHVybiBtcGlEYXRhKGFTZXhw
KTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNy
eXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9z
ZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewogICAg
IC8vIEVtYmVkIHRoZSBjaXBoZXItdGV4dCBkYXRhIGluIGFuIGBlbmMtdmFsYCBzLWV4cHJlc3Np
b24gdXNpbmcgUEtDUyMxIHBhZGRpbmcuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3Nl
eHBfdD4gZW5jVmFsU2V4cDsKQEAgLTk0LDU4ICs5MywyMCBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgVmVj
dG9yPAogICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVu
Y3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5U
ZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAg
ICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAg
YXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAg
ICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5LnBsYXRmb3JtS2V5KCks
IFdURk1vdmUocGxhaW5UZXh0KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+
KGtleSkucGxhdGZvcm1LZXkoKSwgcGxhaW5UZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1v
dmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
cGxhdGZvcm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBj
aXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5y
ZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtl
eSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHREZWNyeXB0KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBXVEZNb3ZlKGNpcGhlclRleHQp
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUob3V0cHV0KSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHREZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KS5wbGF0Zm9ybUtleSgp
LCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdDcnlwdC5jcHAKaW5kZXggYjY1YTRjMjI2ZjY2MjkxZDAxMWNiOTU0M2IxMTBhN2YwZDc1NWRh
MC4uOTJhZWI0ZjI1YmNlMmE5ZmI5MDAzYTViNTBhMmI5YWNmNWRmYWIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzUsNTggKzEzNCwyMiBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJS
T1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRp
c3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRh
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAg
ICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwg
ZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgaWYg
KCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAg
ICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpv
dXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgZGF0YSwgcnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmICghb3V0cHV0KQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92
ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
cGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNp
Z25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ss
IEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4g
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZN
b3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQp
IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg
YXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8gb3V0
cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEs
IHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW91dHB1dCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuICpv
dXRwdXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlw
dC5jcHAKaW5kZXggMGZmYmJlMzRjNjNhMmIyODBmMmIzOTY5MjY2NjRkY2Q5ZjhiNmNlNi4uZDMw
ZDJiNGVlNDc4MTAyYzM5Y2NjODA4YjI1MTE2NDQ0MTE3N2JkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIK
ICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMTEsNjAgKzExMCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogICAg
IHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNh
UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KCpwYXJh
bWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0
KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBwbGFpblRleHQpOwotICAgICAgICAgICAgaWYg
KCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAg
ICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpv
dXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENy
eXB0b0tleVJTQT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FL
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBh
cmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcGxhaW5UZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdU
Rk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRm
b3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBw
YXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVy
VGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVl
JiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lw
aGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
LSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3Zl
KGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRl
cnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7
Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5n
ZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXku
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFt
ZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1
dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAg
ICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVy
cy5sYWJlbFZlY3RvcigpLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUo
Km91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5
cHQuY3BwCmluZGV4IDQzYzdhODFiZTEzOWRiZTBjYzFmZDdiNmI0MTMwZWE2YTcyZDI1ZjYuLmYx
NjdjMGQyZGRiZjc1ZjM0OTNiZjZjYTAzNjM2Njk3NTczMjBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
R0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJz
YVBzc1BhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkdDcnlw
dFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDEsNjAgKzE0MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9y
PHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4m
JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9
IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIHJz
YVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJh
bWV0ZXJzKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKHJzYUtleS5w
bGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FLZXkuaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAg
ICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAg
ICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVy
YXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RG
TW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNh
UHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihy
c2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5
Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7Cisg
ICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8
dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2Vw
dGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5
KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBh
dXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAg
ICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNz
UGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0
VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwotICAgICAg
ICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9w
ZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBX
VEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkpOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJp
ZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgaWYgKCFv
dXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAg
IHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVN
YWMuY3BwCmluZGV4IDNhYzA0ZTVhMDUxOTY3OWViNmU1NTM2MTQzZWQ1YmQ1NmNiYTdhNWYuLjM5
YzgxM2U2MzU5NDJlMGY4NTkzMDAwMTgyYjRlNWI2ZWJmMGIyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81TWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5
cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDQ4
ICs1NCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0UlNB
RVNfUEtDUzFfdjFfNShjb25zdCBQbGF0Zm9ybVJTQUtleQogICAgIHJldHVybiBXVEZNb3ZlKHBs
YWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxh
dGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFp
blRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7
Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9
IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShy
c2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsK
LSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOwor
ICAgIHJldHVybiBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5
ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5
LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
LSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2Rl
KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9
IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4gZGVjcnlwdFJTQUVTX1BL
Q1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNp
cGhlclRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwCmluZGV4IDAxNTJmNjY0YzMzMDhlMjAyN2ZiYTFhZDk4NjA4NGU5MDli
NDk3OTcuLjg3ZTZjMjBiODQxNjg4NjMzYjNjNDFjNTg4NTljMzRjYTlkMGE5ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAi
Q29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGht
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDQ4ICs4MywxNiBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0
Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gc2lnblJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsK
KyAgICByZXR1cm4gc2lnblJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
ZGF0YSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1
cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81
KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwg
c2lnbmF0dXJlLCBkYXRhKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
IGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewot
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShyc2FL
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25h
dHVyZSwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAK
aW5kZXggMTFkMThjN2FlMDIyNDIxNzVlMjczNjgzODU2MjYzODkyZjljYzgxOS4uMTY2MDEzMzc4
MzIzNGZmYTc4Y2UzZjc0NTIyNzI1NWFhMTc0MzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNB
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY0LDUwICs2MywxOCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBkZWNyeXB0UlNBX09BRVAoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogICAg
IHJldHVybiBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3Zl
KGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAg
ICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBlbmNyeXB0UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3Jt
S2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1z
PihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+
KGtleSk7CisgICAgcmV0dXJuIGVuY3J5cHRSU0FfT0FFUChyc2FLZXkuaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCByc2FLZXkucGxhdGZvcm1L
ZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7
Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJz
KSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8m
IHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigq
cGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJT
QT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBX09BRVAocnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3Io
KSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRl
eHQpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9
KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93
bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBkZWNyeXB0UlNBX09BRVAocnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3Io
KSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRl
eHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFjLmNwcAppbmRleCAzOWIw
YTFjMjI5YjY2NzNmYThmZjUzYTdhNDlkNjM1YmI3NTBkYmZkLi40NGI1Y2UyNzAyMDU5ZjEzYWZm
NDM0MjAyNjBkODk1ODYxZGVmMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlw
dG9EaWdlc3RBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
ODIsNTAgKzgxLDE4IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FfUFNTKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3QgUGxhCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0
b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5Lmdl
dCgpKTsKLSAgICAgICAgYXV0byYgcnNhUGFyYW1zID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc2lnblJT
QV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtl
eSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsK
KyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNz
UGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hB
bGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6
ZUluQml0cygpLCBkYXRhLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJv
b2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkoQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
CiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRl
cnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9
IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFtcyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAg
ICAgICBhdXRvIHJlc3VsdCA9IHZlcmlmeVJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYVBhcmFt
cy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNv
bnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIHJldHVybiB2ZXJpZnlSU0Ff
UFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXko
KSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319066</attachid>
            <date>2017-08-24 23:29:30 -0700</date>
            <delta_ts>2017-08-25 11:30:12 -0700</delta_ts>
            <desc>Uses &apos;dispatchAlgorithmOperation&apos; for the template name.</desc>
            <filename>bug-175621-20170825082928.patch</filename>
            <type>text/plain</type>
            <size>59612</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxNDRkZDU1ZTZlOGUx
ODZmZDkxNjgyNTYxYmIzMzQzOTRjNmNiYi4uMWM5ODNlNWYwOGJmZWUzYzNjMTYxNGU1OWZlMTQz
NzcxYjg4OTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE3LTA4LTI0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQdXNoIHRo
ZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJldHdl
ZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBXZWIg
Q3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1c2Vz
IG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBUaGUgV29ya1F1ZXVlIGRp
c3BhdGNoIGNvZGUgaXMgY29uZGVuc2VkIGludG8gdHdvIHN0YXRpYyBmdW5jdGlvbnMgb24KKyAg
ICAgICAgdGhlIENyeXB0b0FsZ29yaXRobSBjbGFzcywgdGhlIGZpcnN0IHZhcmlhdGlvbiBoYW5k
bGluZyBWZWN0b3JDYWxsYmFjaworICAgICAgICBhcyB0aGUgY2FsbGJhY2sgdHlwZSBhbmQgdGhl
IG90aGVyIGhhbmRsaW5nIEJvb2xDYWxsYmFjay4gVGhlIG9wZXJhdGlvbgorICAgICAgICBpcyBr
ZXB0IGluIGEgV1RGOjpGdW5jdGlvbjw+IG9iamVjdCB0aGF0IHJldHVybnMgYW4gRXhjZXB0aW9u
T3I8PiB2YWx1ZQorICAgICAgICBlbWJlZGRpbmcgZWl0aGVyIGEgVmVjdG9yPHVpbnQ4X3Q+IG9i
amVjdCBvciBhIGJvb2xlYW4gdmFsdWUsIGFzCisgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0aGUg
Y2FsbGJhY2sgdHlwZS4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZp
YyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFz
eW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2Vw
dGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVjdHMg
YXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1c2Ug
ZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAgICAg
ICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3VnaCBj
b25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFudWFs
bHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBwYXJh
bWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24u
IElucHV0CisgICAgICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcyB0
byB0aGUgb3JpZ2luYWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0t
IG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRpc3BhdGNoT3BlcmF0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OmRpc3BhdGNoT3BlcmF0aW9uKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3Jp
dGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81OjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5o
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaDoKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTI0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRk
IEZpbGUgYW5kIERpcmVjdG9yeSBFbnRyaWVzIEFQSSB0byBzdGF0dXMgcGFnZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggN2U0ZGNjOTA5MDdlNDI5Mzlh
MTdkYjAyNThkNDk1NjQyYWZiNGY3Mi4uNTU5M2NmYjY2YjRlMGEyYjQxNmQxODMzZGFjODA4YzY1
ZjkzNmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpCkBAIC05MCw2ICs5Miw0MiBAQCBFeGNlcHRp
b25PcjxzaXplX3Q+IENyeXB0b0FsZ29yaXRobTo6Z2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcgogICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRDYWxsYmFja1R5cGUsIHR5cGVuYW1l
IE9wZXJhdGlvblR5cGU+CitzdGF0aWMgdm9pZCBkaXNwYXRjaEFsZ29yaXRobU9wZXJhdGlvbihX
b3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVz
dWx0Q2FsbGJhY2tUeXBlJiYgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6RXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgT3BlcmF0aW9uVHlwZSYmIG9wZXJhdGlvbikKK3sK
KyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW29w
ZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRl
eHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
ZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRp
b24oV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYm
IG9wZXJhdGlvbikKK3sKKyAgICBkaXNwYXRjaEFsZ29yaXRobU9wZXJhdGlvbih3b3JrUXVldWUs
IGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
V1RGTW92ZShvcGVyYXRpb24pKTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG06OmRpc3BhdGNo
T3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25Pcjxib29sPigpPiYmIG9wZXJh
dGlvbikKK3sKKyAgICBkaXNwYXRjaEFsZ29yaXRobU9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRl
eHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgV1RGTW92
ZShvcGVyYXRpb24pKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uaAppbmRleCBlYmE3YzVkMTg0NjJmYjlmZjBkZDhhZjRkMGQyNWMzMGFjYjZi
OWRkLi5lNzA4MjEzNDI1NTlkM2FkZDc0Y2I1Y2M1NWNjZWMwMGU4NTdlMDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhf
dD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CiAgICAgdmlydHVh
bCB2b2lkIHVud3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVj
dG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCBFeGNlcHRp
b25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Jik7CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE9wZXJhdGlvbihXb3JrUXVldWUmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2sm
JiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+KCk+JiYpOworICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9uKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25Pcjxib29sPigpPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXggZTRkYjU5MzM5
MzJiYTRmYWZjYjg3NjgwZDgwMDA1ZWY2OGMyMDFmNC4uZjhmNDg2NWJlZjk4MjE5MThkOGFjNzdk
ZGJiOGU0MzYzZmFlMzdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5j
cHAKQEAgLTUzLDcgKzUzLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6ZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgcGxhdGZvcm1FbmNyeXB0KFdURk1vdmUoa2V5KSwgV1RGTW92ZShwbGFpblRleHQp
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQs
IHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAg
W2tleSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpXSB7Cisg
ICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KGtleSwgcGxhaW5UZXh0KTsKKyAgICAg
ICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlw
dChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0
b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjIs
NyArNjYsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0
KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBw
bGF0Zm9ybURlY3J5cHQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGNpcGhlclRleHQpLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1
ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUo
Y2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW2tleSA9IFdU
Rk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCldIHsKKyAgICAgICAg
ICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQoa2V5LCBjaXBoZXJUZXh0KTsKKyAgICAgICAgfSk7
CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NS5oCmluZGV4IGQzYzFmMmE2MjFhYmI0NmI1ZWUxM2FkN2JhOTM5M2I3YWY4ZjBjZjEuLjcyNmZj
NDc3NjI4NmI4MTE3ZGZjNTg1ZWRkMWRiNzU4YWNhMzJmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81LmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGlt
cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtl
eURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQg
cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0
b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoUmVmPENyeXB0b0tleT4m
JiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDI5M2I4ZWZlZGRjZWU0Yzk5ZjA3ZmFl
NTkxOTQyMTgwMDlmZTIwMjcuLmM5ZDRjZjE2NWFjYmY5NTQwNzBmNjM5ZWNkZDQzNTRiODA4YzFk
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKQEAgLTU4LDcg
KzU4LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxh
dGZvcm1TaWduKFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAg
ZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWdu
KGtleSwgZGF0YSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81Ojp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1
cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTY3LDcgKzcxLDExIEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nl
c3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1WZXJpZnkoV1RG
TW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2Fs
bGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsK
KworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92
ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoa2V5LCBzaWduYXR1cmUs
IGRhdGEpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBL
ZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKaW5kZXggYzRjMmFhMzRjZjRjODVhZmM4NGNkZGZl
N2Q1YzcwM2FkMDRiNWUxOS4uMmEzNGY3NWM0YThiZTE4ODA1NGYwM2FjODE3MTBhNzQwZjg5ZmUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC00OSw4ICs0OSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRh
JiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmLCBW
ZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1W
ZXJpZnkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0
b3I8dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVy
aWZ5KGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuY3BwCmluZGV4IDRkZWJmZjAyNzM4MDlkYWZiNGVkOTE4MzFkMzc5YTE5ZTA4YWJhZWEu
LmNlZTc0N2VlYzk0MzNjZTc2N2RiNTg2YzE4MzMxZmQzMTI3MGY2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1FbmNyeXB0KFdURk1vdmUocGFyYW1ldGVycyksIFdU
Rk1vdmUoa2V5KSwgV1RGTW92ZShwbGFpblRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRj
aE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0
KV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRW5jcnlwdCgqcGFyYW1ldGVycywga2V5
LCBwbGFpblRleHQpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCkBAIC02OSw3ICs3MywxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRp
c3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUo
cGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1vdmUoY2lw
aGVyVGV4dCldIHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQoKnBhcmFtZXRl
cnMsIGtleSwgY2lwaGVyVGV4dCk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2Fn
ZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuaAppbmRleCAyZjU1NDE2NjcyNWI3MDJlM2IyOTZlODVkYTAzOWJhNTI5ZTk5
NDY0Li43ODlhNGZlZjFhYmRiMmIwMDY2NDMwOTMxNDYyYTBkZTE0OTBlOTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtl
eShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZv
cm1FbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBS
ZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwot
ICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBs
YXRmb3JtRW5jcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gcGxhdGZvcm1EZWNyeXB0KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKaW5kZXggN2E2NGU2MTgzOWNjN2Vh
ODQyMDNlMGY1M2JkZThjZDZmNjg4NDk0NS4uZmUxOTc4Y2VhZDBkNWE3MzA3YjZjM2MyMDljYjY0
OWE0YmY2MTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5jcHAKQEAgLTU4LDcgKzU4LDExIEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mJiBwCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRB
Y2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1TaWduKFdU
Rk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUp
OworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtwYXJhbWV0ZXJz
ID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92
ZShkYXRhKV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtU2lnbigqcGFyYW1ldGVycywg
a2V5LCBkYXRhKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBh
cmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1
cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTY3LDcgKzcxLDExIEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRBY2Nl
c3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1WZXJpZnkoV1RG
TW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1v
dmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
Y29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwg
Y29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAor
ICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUo
a2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRh
KV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5KCpwYXJhbWV0ZXJzLCBrZXks
IHNpZ25hdHVyZSwgZGF0YSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQV9QU1M6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1MuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9QU1MuaAppbmRleCA5YmNkNGUwNDRjZDA0ZWI0NGRkNDQ0OWQ0OGFmMjAxZWQ3MzVlODcxLi4z
M2Q3MjM0MDFjZGE3MjM3MmFkOGI3NzdlNmZkOTkxZTY5ZjY4ZjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uy5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRv
S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tl
eT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBs
YXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1
aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdD
cnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDA4YTdiZmVlYTU1Mzc3ZTNkYTlhOTM4YTBh
NjY5ZjMxN2ZiNzMzNjMuLmU3NzFjMDQxMDE3NmQzYmY0ZDMwN2E1N2VlNTQ2OWQxNTg2MmU2ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApAQCAtMzAsMTEg
KzMwLDEwIEBACiAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWlu
VGV4dCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlw
dChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkK
IHsKICAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBkYXRhIGluIGEgYGRhdGFgIHMtZXhwcmVz
c2lvbiB1c2luZyBQS0NTIzEgcGFkZGluZy4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
c2V4cF90PiBkYXRhU2V4cDsKQEAgLTY0LDcgKzYzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rv
cjwKICAgICByZXR1cm4gbXBpRGF0YShhU2V4cCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0
b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0
YSBpbiBhbiBgZW5jLXZhbGAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGVuY1ZhbFNleHA7CkBAIC05NCw1OCAr
OTMsMjAgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNy
eXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3RvcjwKICAgICByZXR1cm4gbXBpRGF0YSh2YWx1
ZVNleHApOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRW5jcnlwdChSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5U
ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRF
bmNyeXB0KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBXVEZNb3ZlKHBsYWluVGV4dCkpOwotICAgICAg
ICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9w
ZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBX
VEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShvdXRwdXQpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVu
Y3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLnBsYXRmb3JtS2V5KCksIHBsYWluVGV4
dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5
PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
aXBoZXJUZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBo
ZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkucGxhdGZv
cm1LZXkoKSwgV1RGTW92ZShjaXBoZXJUZXh0KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwgY2lwaGVyVGV4dCk7CisgICAgaWYgKCFvdXRw
dXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJl
dHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IGI2NWE0YzIyNmY2
NjI5MWQwMTFjYjk1NDNiMTEwYTdmMGQ3NTVkYTAuLjkyYWViNGYyNWJjZTJhOWZiOTAwM2E1YjUw
YTJiOWFjZjVkZmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5
cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5j
bHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTM1LDU4ICsxMzQsMjIgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0
VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1
cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250
ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdURk1v
dmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNh
S2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2tleSA9IFdU
Rk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9y
bUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxh
dGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworICAgIHJldHVybiAqb3V0cHV0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCmluZGV4IDBmZmJiZTM0YzYzYTJiMjgw
ZjJiMzk2OTI2NjY0ZGNkOWY4YjZjZTYuLmQzMGQyYjRlZTQ3ODEwMmMzOWNjYzgwOGIyNTExNjQ0
NDExNzdiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTExLDYwICsxMTAsMjYgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gbXBpRGF0YSh2YWx1ZVNleHApOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVy
cyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0g
V1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwg
cGxhaW5UZXh0KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAg
ICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMg
PSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWlu
VGV4dCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShj
aXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
UnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdERlY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJz
YUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIGNpcGhlclRl
eHQpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAg
IFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8m
IHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5
LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7
CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCA0M2M3YTgxYmUxMzlkYmUw
Y2MxZmQ3YjZiNDEzMGVhNmE3MmQyNWY2Li5mMTY3YzBkMmRkYmY3NWYzNDkzYmY2Y2EwMzYzNjY5
NzU3MzIwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQxLDYw
ICsxNDAsMjYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlf
c2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1cm4geyBlcnJvciA9
PSBHUEdfRVJSX05PX0VSUk9SIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6
cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTUzo6cGxhdGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0g
ICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5n
ZXQoKSk7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJ
bkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFt
ZXRlcnMuc2FsdExlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0g
ICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7CisKKyAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5r
ZXlTaXplSW5CaXRzKCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCBy
c2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0
cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBS
ZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1
cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0
dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAg
ICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
c2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFy
YW1ldGVycy5zYWx0TGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
LSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWdu
YXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0
ZXJzLnNhbHRMZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAppbmRleCAzYWMwNGU1YTA1MTk2Nzll
YjZlNTUzNjE0M2VkNWJkNTZjYmE3YTVmLi4zOWM4MTNlNjM1OTQyZTBmODU5MzAwMDE4MmI0ZTVi
NmViZjBiMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDcgKzMw
LDYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0tleVJTQS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw0OCArNTQsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdFJTQUVTX1BLQ1MxX3YxXzUoY29uc3QgUGxhdGZvcm1S
U0FLZXkKICAgICByZXR1cm4gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChSZWY8Q3J5cHRvS2V5PiYm
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1F
bmNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWlu
VGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5
ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gZW5jcnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5r
ZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRv
d25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4gZW5jcnlwdFJTQUVTX1BLQ1Mx
X3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWlu
VGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZv
cm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJU
ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsK
LSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9
IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtl
eS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdFJTQUVTX1BLQ1MxX3YxXzUo
cnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGNpcGhlclRleHQp
OwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFz
ayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsK
LSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7
CisgICAgcmV0dXJuIGRlY3J5cHRSU0FFU19QS0NTMV92MV81KHJzYUtleS5wbGF0Zm9ybUtleSgp
LCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAppbmRleCAwMTUyZjY2
NGMzMzA4ZTIwMjdmYmExYWQ5ODYwODRlOTA5YjQ5Nzk3Li44N2U2YzIwYjg0MTY4ODYzM2IzYzQx
YzU4ODU5YzM0Y2E5ZDBhOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC04NCw0OCArODMsMTYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlm
eVJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShy
c2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJz
YUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIHNpZ25SU0FTU0FfUEtDUzFf
djFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBC
b29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4
dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgc2ln
bmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1
bHQgPSB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZp
ZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSk7Ci0gICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4g
dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwCmluZGV4IDExZDE4YzdhZTAyMjQyMTc1ZTI3MzY4
Mzg1NjI2Mzg5MmY5Y2M4MTkuLjE2NjAxMzM3ODMyMzRmZmE3OGNlM2Y3NDUyMjcyNTVhYTE3NDMw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVBNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBNYWMuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw1MCArNjMsMTggQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdFJTQV9PQUVQKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGEKICAgICByZXR1cm4gV1RGTW92ZShwbGFpblRleHQpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBs
YWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAg
ICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZW5jcnlwdFJT
QV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLmxh
YmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygp
LCBwbGFpblRleHQpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29u
dGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNh
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBlbmNyeXB0UlNB
X09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFi
ZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCks
IHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3Jt
RGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4
dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFy
YW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgY2lwaGVy
VGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gZGVjcnlwdFJTQV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FL
ZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNv
ZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAg
ICByZXR1cm4gZGVjcnlwdFJTQV9PQUVQKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FL
ZXkua2V5U2l6ZUluQml0cygpLCBjaXBoZXJUZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTU01hYy5jcHAKaW5kZXggMzliMGExYzIyOWI2NjczZmE4ZmY1M2E3YTQ5ZDYzNWJi
NzUwZGJmZC4uNDRiNWNlMjcwMjA1OWYxM2FmZjQzNDIwMjYwZDg5NTg2MWRlZjI4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9Q
U1NNYWMuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNh
UHNzUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgyLDUwICs4MSwxOCBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBX1BTUyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IGNvbnN0IFBsYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNp
Z24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigp
OwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVy
cyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIHJzYVBhcmFt
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOwot
ICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
ZGF0YSwgcnNhUGFyYW1zLnNhbHRMZW5ndGgpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgcmV0
dXJuIHNpZ25SU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXku
cGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhUGFyYW1ldGVy
cy5zYWx0TGVuZ3RoKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9y
bVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJl
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9Q
U1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkp
OwotICAgICAgICBhdXRvJiByc2FQYXJhbXMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQ
c3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSB2ZXJpZnlSU0Ff
UFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXko
KSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1
dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0
ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5UlNBX1BTUyhyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNhUGFyYW1l
dGVycy5zYWx0TGVuZ3RoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319090</attachid>
            <date>2017-08-25 11:30:17 -0700</date>
            <delta_ts>2017-08-26 00:48:22 -0700</delta_ts>
            <desc>Uses appropriate return types in CryptoAlgorithmRSA_PSSMac.cpp.</desc>
            <filename>bug-175621-20170825203015.patch</filename>
            <type>text/plain</type>
            <size>59633</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc0YzAxMjMwMGU4OWY1
YzI5NDY3YTljNDc5M2ZiYjlmNmFlYmNiZC4uOGIxYTU1MGRlYjFhZjQyZTA3MWViZGE3NWUyNmI0
OWU2YzNkMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE3LTA4LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBSU0EgYWxnb3JpdGhtcyBpbnRvIHNoYXJlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU2
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQdXNoIHRo
ZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29kZSBkdXBsaWNhdGVkIGJldHdl
ZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxlbWVudGF0aW9ucyBvZiBXZWIg
Q3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAgVGhpcyBwYXRjaCBmb2N1c2Vz
IG9uIHRoZSBSU0EtYmFzZWQgYWxnb3JpdGhtcy4KKworICAgICAgICBUaGUgV29ya1F1ZXVlIGRp
c3BhdGNoIGNvZGUgaXMgY29uZGVuc2VkIGludG8gdHdvIHN0YXRpYyBmdW5jdGlvbnMgb24KKyAg
ICAgICAgdGhlIENyeXB0b0FsZ29yaXRobSBjbGFzcywgdGhlIGZpcnN0IHZhcmlhdGlvbiBoYW5k
bGluZyBWZWN0b3JDYWxsYmFjaworICAgICAgICBhcyB0aGUgY2FsbGJhY2sgdHlwZSBhbmQgdGhl
IG90aGVyIGhhbmRsaW5nIEJvb2xDYWxsYmFjay4gVGhlIG9wZXJhdGlvbgorICAgICAgICBpcyBr
ZXB0IGluIGEgV1RGOjpGdW5jdGlvbjw+IG9iamVjdCB0aGF0IHJldHVybnMgYW4gRXhjZXB0aW9u
T3I8PiB2YWx1ZQorICAgICAgICBlbWJlZGRpbmcgZWl0aGVyIGEgVmVjdG9yPHVpbnQ4X3Q+IG9i
amVjdCBvciBhIGJvb2xlYW4gdmFsdWUsIGFzCisgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0aGUg
Y2FsbGJhY2sgdHlwZS4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZp
YyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFz
eW5jaHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2Vw
dGlvbk9yCisgICAgICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVjdHMg
YXJlIHBhc3NlZCB0aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1c2Ug
ZGF0YSBnZXR0ZXJzIGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAgICAg
ICAgVmVjdG9yIG9iamVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3VnaCBj
b25zdCByZWZlcmVuY2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFudWFs
bHkgcmV0cmlldmUgYW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBwYXJh
bWV0ZXIgZGF0YSwgYXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24u
IElucHV0CisgICAgICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcyB0
byB0aGUgb3JpZ2luYWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0t
IG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRpc3BhdGNoT3BlcmF0aW9uSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OmRpc3BhdGNoT3BlcmF0aW9uKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3Jp
dGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81OjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5o
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6c2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaDoKKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZv
cm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTIxICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJXSBB
ZGQgc3VwcG9ydCBmb3IgQ2FjaGUuYWRkL2FkZEFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcAppbmRleCA3ZTRkY2M5MDkwN2U0MjkzOWExN2RiMDI1OGQ0OTU2NDJh
ZmI0ZjcyLi41NTkzY2ZiNjZiNGUwYTJiNDE2ZDE4MzNkYWM4MDhjNjVmOTM2YzI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDcnlwdG9BbGdvcml0aG06
OmVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJl
ZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgV29ya1F1ZXVlJikKQEAgLTkwLDYgKzkyLDQyIEBAIEV4Y2VwdGlvbk9yPHNpemVfdD4gQ3J5
cHRvQWxnb3JpdGhtOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
CiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4K
K3N0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1
ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUm
JiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBPcGVyYXRpb25UeXBlJiYgb3BlcmF0aW9uKQoreworICAgIGNvbnRleHQucmVm
KCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92
ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gb3BlcmF0aW9uKCk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAg
ICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cit9
CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbihXb3JrUXVldWUmIHdv
cmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+KCk+JiYgb3BlcmF0aW9uKQorewor
ICAgIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZNb3ZlKG9wZXJhdGlv
bikpOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb24oV29ya1F1
ZXVlJiB3b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJvb2xDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBX
VEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYgb3BlcmF0aW9uKQoreworICAgIGRp
c3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwor
fQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmlu
ZGV4IGViYTdjNWQxODQ2MmZiOWZmMGRkOGFmNGQwZDI1YzMwYWNiNmI5ZGQuLmU3MDgyMTM0MjU1
OWQzYWRkNzRjYjVjYzU1Y2NlYzAwZTg1N2UwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3cmFwS2V5KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgdW53cmFwS2V5
KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0
S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKTsKKworICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9uKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4oKT4mJik7CisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hPcGVyYXRpb24oV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJvb2xD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PGJvb2w+KCk+JiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCBlNGRiNTkzMzkzMmJhNGZhZmNiODc2ODBk
ODAwMDVlZjY4YzIwMWY0Li5mOGY0ODY1YmVmOTgyMTkxOGQ4YWM3N2RkYmI4ZTQzNjNmYWUzN2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNTMsNyArNTMs
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXIKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
SW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9y
bUVuY3J5cHQoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHBsYWluVGV4dCksIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKwor
ICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFj
ayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShr
ZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCldIHsKKyAgICAgICAgICAgIHJldHVy
biBwbGF0Zm9ybUVuY3J5cHQoa2V5LCBwbGFpblRleHQpOworICAgICAgICB9KTsKIH0KIAogdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBAIC02Miw3ICs2NiwxMSBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmRlY3J5cHQoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNj
ZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVjcnlwdChX
VEZNb3ZlKGtleSksIFdURk1vdmUoY2lwaGVyVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3Bh
dGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBo
ZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRm
b3JtRGVjcnlwdChrZXksIGNpcGhlclRleHQpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKaW5kZXggZDNjMWYy
YTYyMWFiYjQ2YjVlZTEzYWQ3YmE5MzkzYjdhZjhmMGNmMS4uNzI2ZmM0Nzc2Mjg2YjgxMTdkZmM1
ODVlZGQxZGI3NThhY2EzMmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUu
aApAQCAtNTAsOCArNTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tl
eUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0
S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQo
UmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4
Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsK
LSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhf
dD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNS5jcHAKaW5kZXggMjkzYjhlZmVkZGNlZTRjOTlmMDdmYWU1OTE5NDIxODAwOWZlMjAy
Ny4uYzlkNGNmMTY1YWNiZjk1NDA3MGY2MzllY2RkNDM1NGI4MDhjMWRkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApAQCAtNTgsNyArNTgsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW0KICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vz
c0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92
ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlv
bih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSldIHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oa2V5LCBkYXRhKTsKKyAg
ICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZl
cmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjcsNyArNzEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXIKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKGtleSksIFdURk1v
dmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hP
cGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVy
ZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAgICAgICAg
ICAgIHJldHVybiBwbGF0Zm9ybVZlcmlmeShrZXksIHNpZ25hdHVyZSwgZGF0YSk7CisgICAgICAg
IH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuaAppbmRleCBjNGMyYWEzNGNmNGM4NWFmYzg0Y2RkZmU3ZDVjNzAzYWQwNGI1ZTE5
Li4yYTM0Zjc1YzRhOGJlMTg4MDU0ZjAzYWM4MTcxMGE3NDBmODlmZTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9L
ZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAot
ICAgIHZvaWQgcGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYm
LCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRv
S2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBC
b29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
KyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5kZXgg
NGRlYmZmMDI3MzgwOWRhZmI0ZWQ5MTgzMWQzNzlhMTllMDhhYmFlYS4uY2VlNzQ3ZWVjOTQzM2Nl
NzY3ZGI1ODZjMTgzMzFmZDMxMjcwZjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApAQCAt
NTksNyArNTksMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwbGF0Zm9ybUVuY3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZN
b3ZlKHBsYWluVGV4dCksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtR
dWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdU
Rk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpXSB7CisgICAgICAgICAg
ICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KCpwYXJhbWV0ZXJzLCBrZXksIHBsYWluVGV4dCk7Cisg
ICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJl
ZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkK
QEAgLTY5LDcgKzczLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgcGxhdGZvcm1EZWNyeXB0KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwg
V1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24o
d29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0KV0geworICAg
ICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdCgqcGFyYW1ldGVycywga2V5LCBjaXBoZXJU
ZXh0KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6Omdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmlu
ZGV4IDJmNTU0MTY2NzI1YjcwMmUzYjI5NmU4NWRhMDM5YmE1MjllOTk0NjQuLjc4OWE0ZmVmMWFi
ZGIyYjAwNjY0MzA5MzE0NjJhMGRlMTQ5MGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAt
NDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1h
dCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KENy
eXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYs
IFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9y
bURlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJl
ZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNl
cHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1FbmNyeXB0KENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0
Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX1BTUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTLmNwcAppbmRleCA3YTY0ZTYxODM5Y2M3ZWE4NDIwM2UwZjUzYmRlOGNk
NmY2ODg0OTQ1Li5mZTE5NzhjZWFkMGQ1YTczMDdiNmMzYzIwOWNiNjQ5YTRiZjYxODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfUFNTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTLmNwcApAQCAtNTgsNyArNTgsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FfUFNTOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHAKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShwYXJhbWV0ZXJz
KSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRj
aE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAg
ICAgICAgICByZXR1cm4gcGxhdGZvcm1TaWduKCpwYXJhbWV0ZXJzLCBrZXksIGRhdGEpOworICAg
ICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjp2ZXJpZnkoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjcsNyArNzEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfUFNTOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
JiYKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVl
dWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtwYXJhbWV0
ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUg
PSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAg
ICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgc2lnbmF0dXJlLCBkYXRh
KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6Z2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oCmluZGV4IDli
Y2Q0ZTA0NGNkMDRlYjQ0ZGQ0NDQ5ZDQ4YWYyMDFlZDczNWU4NzEuLjMzZDcyMzQwMWNkYTcyMzcy
YWQ4Yjc3N2U2ZmQ5OTFlNjlmNjhmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgKQEAgLTQ5LDggKzQ5
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURh
dGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlG
b3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWlu
dDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+
JiYsIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxh
dGZvcm1TaWduKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxh
dGZvcm1WZXJpZnkoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdD
cnlwdC5jcHAKaW5kZXggMDhhN2JmZWVhNTUzNzdlM2RhOWE5MzhhMGE2NjlmMzE3ZmI3MzM2My4u
ZTc3MWMwNDEwMTc2ZDNiZjRkMzA3YTU3ZWU1NDY5ZDE1ODYyZTZkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zMCwxMSArMzAsMTAgQEAKIAogI2lu
Y2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewogICAgIC8vIEVtYmVk
IHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBgZGF0YWAgcy1leHByZXNzaW9uIHVzaW5nIFBLQ1Mj
MSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhw
OwpAQCAtNjQsNyArNjMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgVmVjdG9yPAogICAgIHJldHVybiBt
cGlEYXRhKGFTZXhwKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIGNp
cGhlclRleHQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERl
Y3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJU
ZXh0KQogewogICAgIC8vIEVtYmVkIHRoZSBjaXBoZXItdGV4dCBkYXRhIGluIGFuIGBlbmMtdmFs
YCBzLWV4cHJlc3Npb24gdXNpbmcgUEtDUyMxIHBhZGRpbmcuCiAgICAgUEFMOjpHQ3J5cHQ6Okhh
bmRsZTxnY3J5X3NleHBfdD4gZW5jVmFsU2V4cDsKQEAgLTk0LDU4ICs5MywyMCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgVmVjdG9yPAogICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KFJlZjxD
cnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRp
c3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3Zl
KHBsYWluVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewot
ICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0
KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5LnBs
YXRmb3JtS2V5KCksIFdURk1vdmUocGxhaW5UZXh0KSk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1
dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKG91dHB1dCkpOwot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSkucGxhdGZvcm1LZXkoKSwgcGxhaW5UZXh0KTsKKyAgICBpZiAoIW91
dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAg
cmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8
dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0g
ICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtrZXkg
PSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBXVEZNb3Zl
KGNpcGhlclRleHQpKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAg
ICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUob3V0cHV0KSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KS5w
bGF0Zm9ybUtleSgpLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91
dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggYjY1YTRjMjI2ZjY2MjkxZDAxMWNiOTU0M2Ix
MTBhN2YwZDc1NWRhMC4uOTJhZWI0ZjI1YmNlMmE5ZmI5MDAzYTViNTBhMmI5YWNmNWRmYWIxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzUsNTggKzEz
NCwyMiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQ
R19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4m
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmIGtleSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAg
d29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5n
ZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxh
dGZvcm1LZXkoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNB
PihrZXkpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXko
KSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmICghb3V0
cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICBy
ZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1
aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0
aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVy
aWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVy
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0g
ICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBzaWdu
YXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVy
ZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICAgICAg
aWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAg
ICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3Zl
KCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWdu
YXR1cmUsIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAo
IW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Cisg
ICAgcmV0dXJuICpvdXRwdXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUEdDcnlwdC5jcHAKaW5kZXggMGZmYmJlMzRjNjNhMmIyODBmMmIzOTY5MjY2NjRkY2Q5
ZjhiNmNlNi4uZDMwZDJiNGVlNDc4MTAyYzM5Y2NjODA4YjI1MTE2NDQ0MTE3N2JkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlw
dG9LZXlSU0EuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTEsNjAgKzExMCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBoYQogICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJh
bWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4
dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAg
ICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQ
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBn
Y3J5cHRFbmNyeXB0KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxh
dGZvcm1LZXkoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBwbGFpblRleHQpOwotICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUtleSA9
IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0
RW5jcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3Jt
S2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcGxhaW5UZXh0KTsKKyAgICBpZiAo
IW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Cisg
ICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1
ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBr
ZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8m
IHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigq
cGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9L
ZXlSU0E+KGtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVj
cnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5
KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4dCk7Ci0gICAgICAgICAg
ICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAg
ICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1v
dmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0
KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwg
cnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIW91dHB1
dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0
dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
U0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQV9QU1NHQ3J5cHQuY3BwCmluZGV4IDQzYzdhODFiZTEzOWRiZTBjYzFmZDdiNmI0MTMwZWE2
YTcyZDI1ZjYuLmYxNjdjMGQyZGRiZjc1ZjM0OTNiZjZjYTAzNjM2Njk3NTczMjBkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
U0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0
b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2lu
Y2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDEsNjAgKzE0MCwyNiBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJS
T1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVm
PENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNp
Z24oQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigp
OwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1
dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAg
ICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQ
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRT
aWduKHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCBy
c2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3Ro
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKworICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
ZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2Fs
dExlbmd0aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEs
IEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtR
dWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3Jt
VmVyaWZ5KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRp
c3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9
IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RG
TW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQo
KSk7Ci0gICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0
cHV0ID0gZ2NyeXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEs
IHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5n
dGgpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
aygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAg
IFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkpOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtZXRlcnMpOworCisgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0YSwgcnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7
CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDNhYzA0ZTVhMDUxOTY3OWViNmU1NTM2MTQzZWQ1YmQ1
NmNiYTdhNWYuLjM5YzgxM2U2MzU5NDJlMGY4NTkzMDAwMTgyYjRlNWI2ZWJmMGIyZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU1LDQ4ICs1NCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShjb25zdCBQbGF0Zm9ybVJTQUtleQogICAgIHJldHVy
biBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBwbGFpblRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSks
IHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNv
bnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBlbmNyeXB0UlNBRVNf
UEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwg
cGxhaW5UZXh0KTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRl
eHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkpOworICAgIHJldHVybiBlbmNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxh
dGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJU
ZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWNyeXB0UlNBRVNfUEtDUzFfdjFfNShyc2FLZXkucGxhdGZvcm1L
ZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgY2lwaGVyVGV4dCk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1
dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICByZXR1cm4gZGVj
cnlwdFJTQUVTX1BLQ1MxX3YxXzUocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXpl
SW5CaXRzKCksIGNpcGhlclRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDAxNTJmNjY0YzMzMDhlMjAyN2ZiYTFh
ZDk4NjA4NGU5MDliNDk3OTcuLjg3ZTZjMjBiODQxNjg4NjMzYjNjNDFjNTg4NTljMzRjYTlkMGE5
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDQ4
ICs4MywxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3Yx
XzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gc2lnblJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJp
dHMoKSwgZGF0YSk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tl
eVJTQT4oa2V5KTsKKyAgICByZXR1cm4gc2lnblJTQVNTQV9QS0NTMV92MV81KHJzYUtleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNp
emVJbkJpdHMoKSwgZGF0YSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9y
PGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdv
cmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3Zl
KHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHZlcmlmeVJTQVNT
QV9QS0NTMV92MV81KHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FLZXkucGxh
dGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgot
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgcnNhS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiB2ZXJpZnlSU0FTU0FfUEtD
UzFfdjFfNShyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3Jt
S2V5KCksIHNpZ25hdHVyZSwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUE1hYy5jcHAKaW5kZXggMTFkMThjN2FlMDIyNDIxNzVlMjczNjgzODU2MjYzODkyZjljYzgx
OS4uMTY2MDEzMzc4MzIzNGZmYTc4Y2UzZjc0NTIyNzI1NWFhMTc0MzBiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1h
Yy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgiCiAjaW5jbHVkZSAi
Q3J5cHRvS2V5UlNBLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDUwICs2MywxOCBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0UlNBX09BRVAoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBoYQogICAgIHJldHVybiBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBr
ZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJzYVBh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5
LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBlbmNyeXB0UlNBX09BRVAocnNhS2V5Lmhh
c2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgcnNh
S2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRzKCksIHBsYWluVGV4dCk7Ci0g
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAg
IH0pOworICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSk7CisgICAgcmV0dXJuIGVuY3J5cHRSU0FfT0FFUChyc2FLZXkuaGFz
aEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5sYWJlbFZlY3RvcigpLCByc2FL
ZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgcGxhaW5UZXh0KTsKIH0K
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3Jt
RGVjcnlwdChDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJUZXh0KQogewotICAgIGNv
bnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92
ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShj
aXBoZXJUZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0
UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMu
bGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRz
KCksIGNpcGhlclRleHQpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
Y29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0g
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYg
cnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpOworICAgIHJldHVybiBkZWNyeXB0
UlNBX09BRVAocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMu
bGFiZWxWZWN0b3IoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtleS5rZXlTaXplSW5CaXRz
KCksIGNpcGhlclRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTTWFjLmNw
cAppbmRleCAzOWIwYTFjMjI5YjY2NzNmYThmZjUzYTdhNDlkNjM1YmI3NTBkYmZkLi45ZmFjYmI4
NDY3OTkyNWQ0MmRlYzJhYTg4MzE0NDAwN2Q5ODI1N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU01hYy5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKICNp
bmNsdWRlICJDcnlwdG9EaWdlc3RBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0Eu
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODIsNTAgKzgxLDE4IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJp
ZnlSU0FfUFNTKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3QgUGxhCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3Jt
U2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0
ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUp
CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBs
YXRmb3JtU2lnbihDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShw
YXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYg
cnNhUGFyYW1zID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUlu
Qml0cygpLCBkYXRhLCByc2FQYXJhbXMuc2FsdExlbmd0aCk7Ci0gICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0
ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsK
KyAgICByZXR1cm4gc2lnblJTQV9QU1MocnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCks
IHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FLZXkua2V5U2l6ZUluQml0cygpLCBkYXRhLCByc2FQ
YXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6
OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+
IENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3Zl
KHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvJiByc2FQYXJhbXMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSB2ZXJpZnlSU0FfUFNTKHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FQYXJhbXMuc2FsdExl
bmd0aCk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGVj
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAg
IH0pOwotICAgIH0pOworICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5UlNBX1BTUyhyc2FL
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25h
dHVyZSwgZGF0YSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>