<?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>165111</bug_id>
          
          <creation_ts>2016-11-28 13:56:53 -0800</creation_ts>
          <short_desc>CryptoAlgorithm::generateKey() should take lvalue reference to const CryptoAlgorithmParameters</short_desc>
          <delta_ts>2016-11-29 10:52:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253977</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-28 13:56:53 -0800</bug_when>
    <thetext>CryptoAlgorithm::generateKey() and its overrides always expect to receive a non-null pointer to a CryptoAlgorithmParameter object and never take ownership of it. Currently the CryptoAlgorithmParameter object is passed as a lvalue reference to a std::unique_ptr&lt;CryptoAlgorithmParameter&gt; const. It is sufficient to pass it as a lvalue reference to a CryptoAlgorithmParameter const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253983</commentid>
    <comment_count>1</comment_count>
      <attachid>295528</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-28 14:03:57 -0800</bug_when>
    <thetext>Created attachment 295528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253986</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-28 14:05:36 -0800</bug_when>
    <thetext>Attachment 295528 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:91:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:80:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:66:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:91:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:71:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 16 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>1253989</commentid>
    <comment_count>3</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-11-28 14:06:40 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; CryptoAlgorithm::generateKey() and its overrides always expect to receive a
&gt; non-null pointer to a CryptoAlgorithmParameter object and never take
&gt; ownership of it. Currently the CryptoAlgorithmParameter object is passed as
&gt; a lvalue reference to a std::unique_ptr&lt;CryptoAlgorithmParameter&gt; const. It
&gt; is sufficient to pass it as a lvalue reference to a CryptoAlgorithmParameter
&gt; const.

Actually, it is a backward compatibility issue. Both SubtleCrypto::generateKey() and WebKitSubtleCrypto::generateKey() go through the same underlying CryptoKeyRSA::generatePair() to generate a RSA key pair. However, parameters used by those two are different. That&apos;s why I extract parameters outside of the CryptoAlgorithmParameter object. Ideally, we should pass the CryptoAlgorithmParameter object to CryptoKeyRSA::generatePair() once WebKitSubtleCrypto is deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253990</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-11-28 14:08:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; CryptoAlgorithm::generateKey() and its overrides always expect to receive a
&gt; &gt; non-null pointer to a CryptoAlgorithmParameter object and never take
&gt; &gt; ownership of it. Currently the CryptoAlgorithmParameter object is passed as
&gt; &gt; a lvalue reference to a std::unique_ptr&lt;CryptoAlgorithmParameter&gt; const. It
&gt; &gt; is sufficient to pass it as a lvalue reference to a CryptoAlgorithmParameter
&gt; &gt; const.
&gt; 
&gt; Actually, it is a backward compatibility issue. Both
&gt; SubtleCrypto::generateKey() and WebKitSubtleCrypto::generateKey() go through
&gt; the same underlying CryptoKeyRSA::generatePair() to generate a RSA key pair.
&gt; However, parameters used by those two are different. That&apos;s why I extract
&gt; parameters outside of the CryptoAlgorithmParameter object. Ideally, we
&gt; should pass the CryptoAlgorithmParameter object to
&gt; CryptoKeyRSA::generatePair() once WebKitSubtleCrypto is deprecated.

And because CryptoKeyRSA::generatePair() will generate keys async. It will take over the ownership of the CryptoAlgorithmParameter object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254107</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-28 17:02:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; CryptoAlgorithm::generateKey() and its overrides always expect to receive a
&gt; &gt; &gt; non-null pointer to a CryptoAlgorithmParameter object and never take
&gt; &gt; &gt; ownership of it. Currently the CryptoAlgorithmParameter object is passed as
&gt; &gt; &gt; a lvalue reference to a std::unique_ptr&lt;CryptoAlgorithmParameter&gt; const. It
&gt; &gt; &gt; is sufficient to pass it as a lvalue reference to a CryptoAlgorithmParameter
&gt; &gt; &gt; const.
&gt; &gt; 
&gt; &gt; Actually, it is a backward compatibility issue. Both
&gt; &gt; SubtleCrypto::generateKey() and WebKitSubtleCrypto::generateKey() go through
&gt; &gt; the same underlying CryptoKeyRSA::generatePair() to generate a RSA key pair.
&gt; &gt; However, parameters used by those two are different. That&apos;s why I extract
&gt; &gt; parameters outside of the CryptoAlgorithmParameter object. Ideally, we
&gt; &gt; should pass the CryptoAlgorithmParameter object to
&gt; &gt; CryptoKeyRSA::generatePair() once WebKitSubtleCrypto is deprecated.
&gt; 
&gt; And because CryptoKeyRSA::generatePair() will generate keys async. It will
&gt; take over the ownership of the CryptoAlgorithmParameter object.

Jiewen and I discussed this in person today (11/28). For now the proposed change is sufficient as key generation (CryptoAlgorithm::generateKey()) does not need to take ownership of the CryptoAlgorithmParameter object in both the old and new Web Crypto implementation. In the future we plan to change the new implementation such that key generation is asynchronous; =&gt; it will make sense for CryptoAlgorithm::generateKey() to take ownership of the CryptoAlgorithmParameter object. We will update the interface of CryptoAlgorithm::generateKey() as necessary to support such transfer of ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254109</commentid>
    <comment_count>6</comment_count>
      <attachid>295553</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-28 17:03:19 -0800</bug_when>
    <thetext>Created attachment 295553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254111</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-28 17:05:11 -0800</bug_when>
    <thetext>Attachment 295553 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:91:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:80:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:66:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:91:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:71:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 16 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>1254183</commentid>
    <comment_count>8</comment_count>
      <attachid>295553</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-28 19:59:46 -0800</bug_when>
    <thetext>Comment on attachment 295553
Patch

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

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:555
&gt; +    algorithm-&gt;generateKey(*params.get(), extractable, keyUsages, WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&amp;state));

Should not need the .get() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254327</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-29 10:50:09 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:555
&gt; &gt; +    algorithm-&gt;generateKey(*params.get(), extractable, keyUsages, WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&amp;state));
&gt; 
&gt; Should not need the .get() here.

Will remove .get() before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254330</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-29 10:52:10 -0800</bug_when>
    <thetext>Committed r209077: &lt;http://trac.webkit.org/changeset/209077&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295528</attachid>
            <date>2016-11-28 14:03:57 -0800</date>
            <delta_ts>2016-11-28 17:03:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165111-20161128140334.patch</filename>
            <type>text/plain</type>
            <size>22153</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NkZGUzOTkyZjQ5MzZj
NzdhMzMzNjAwNTEyODg1NjhjZjA1Zjk3Yy4uYWY0ZmE3MTY0ZWQ5M2U0YmFiNDNhZGMxODlmMGE5
M2QzYjA1MTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTExLTI4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDcnlwdG9BbGdvcml0aG06
OmdlbmVyYXRlS2V5KCkgc2hvdWxkIHRha2UgbHZhbHVlIHJlZmVyZW5jZSB0byBjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjUxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KCkgYW5kIGl0cyBvdmVy
cmlkZXMgYWx3YXlzIGV4cGVjdCB0byByZWNlaXZlIGEgbm9uLW51bGwgcG9pbnRlcgorICAgICAg
ICB0byBhIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlciBvYmplY3QgYW5kIG5ldmVyIHRha2Ugb3du
ZXJzaGlwIG9mIGl0LiBUaGlzIGtpbmQgb2YgcmVsYXRpb25zaGlwCisgICAgICAgIGlzIGJlc3Qg
ZXhwcmVzc2VkIGJ5IG1vZGlmeWluZyBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KCkgdG8g
dGFrZSBhIGx2YWx1ZSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSBjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXIgb2JqZWN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdl
bmVyYXRlS2V5UHJvbWlzZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KToKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1BRVNfS1cuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhN
QUM6OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1ITUFDLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleSk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2Vu
ZXJhdGVLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmg6CisKIDIwMTYtMTEtMjggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEJsYWNrbGlzdCBOZXRmbGl4IGZvciBUb3VjaEJhciBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5k
ZXggZDFhMjY3MmU2YjE0Y2M0NTc1M2M2ZWFhY2JhMTc3ZDkwMTJhNzk3NS4uZDNjOGZiZTc4YTYw
MGM3YmViYmM4MTAxOTYxZjM2NjM1NjU4OGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtNTUyLDcgKzU1Miw3IEBA
IHN0YXRpYyB2b2lkIGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25HZW5lcmF0ZUtleVByb21pc2UoRXhl
Y1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVyCiAgICAgLy8gVGhlIDExIERlY2VtYmVyIDIwMTQgdmVy
c2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBzdWdnZXN0cyB3ZSBzaG91bGQgcGVyZm9ybSB0aGUg
Zm9sbG93aW5nIHRhc2sgYXN5bmNocm9ub3VzbHkKICAgICAvLyByZWdhcmRsZXNzIHdoYXQga2lu
ZCBvZiBrZXlzIGl0IHByb2R1Y2VzOiBodHRwczovL3d3dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJ
LyNTdWJ0bGVDcnlwdG8tbWV0aG9kLWdlbmVyYXRlS2V5CiAgICAgLy8gVGhhdCdzIHNpbXBseSBu
b3QgZWZmaWNpZW50IGZvciBBRVMgYW5kIEhNQUMga2V5cy4gVGhlcmVmb3JlLCB3ZSBwZXJmb3Jt
IGl0IGFzIGFuIGFzeW5jIHRhc2sgY29uZGl0aW9uYWxseS4KLSAgICBhbGdvcml0aG0tPmdlbmVy
YXRlS2V5KFdURk1vdmUocGFyYW1zKSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleSgm
cGFyYW1zLmdldCgpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4
ZWNTdGF0ZSgmc3RhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQganNTdWJ0bGVDcnlwdG9GdW5jdGlv
bkltcG9ydEtleVByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRl
eCA4NTEyNzljZTI0NzdiODZiMjE2MWQ3M2E5NmM3OGJjNDJkMWMxMjlmLi43MTExZWE1NTY3ZmRh
MjRiZGQ1NzYxNzdkZjBjZGQyNDE2MzVhZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobTo6
ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVm
PAogICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE5PVF9TVVBQT1JURURfRVJSKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JL
ZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAgICBleGNlcHRpb25D
YWxsYmFjayhOT1RfU1VQUE9SVEVEX0VSUik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtLmgKaW5kZXggODMyYjk5NGY2YTZjOTUwMjZhNjBjYmNlNGFkM2NiY2E4NGM1ZDY3
YS4uNDEyODdkMDExMTI2MjM4MTdmYjAyNDE0MzlmMDUwYTBlMWVmODNhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rv
ckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBXb3JrUXVldWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVL
ZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURh
dGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhwb3J0S2V5KFN1YnRsZUNy
eXB0bzo6S2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKaW5kZXggNWQ5YjBlN2I4
MDQwODE5NTA3YjQ3ZDcxOGU5YzE5NjcyNTc5Y2I5ZS4uNWI1ZGY1MzM4MTdjZjM1MGY0MWZkOTI2
ZWIzYmQwZDQ3MTY3Nzc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKQEAgLTg4LDEwICs4OCw5
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgcGxhdGZvcm1EZWNyeXB0KFdURk1vdmUo
cGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMp
OwotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPihwYXJhbWV0ZXJzKTsKIAogICAg
IGlmICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQyh1c2FnZXMpKSB7
CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFNZTlRBWF9FUlIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5o
CmluZGV4IDE0ODVjMTFhNzdmMzUyOTNlMTVmMDgxZjE5ZTljNTg3YzUzN2YxOGEuLmU1NmU0OGU1
ZjAxOWU5NmEyZDdiODNiYmRkMDU5Nzc1ZDg4NTQwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZW5jcnlwdChzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKSBmaW5hbDsKICAgICB2b2lkIGRlY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9L
ZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikgZmluYWw7Ci0gICAg
dm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9y
S2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5
T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9y
bWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXko
U3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5k
ZXggMzVjN2E3YjY2MzRkZDc0NjI2NjRjNTlmNzEyMmRhNzcwNmMxMGViMi4uODE5MDI4ZmZmMGRh
ZDA2M2RjYWVmNDBkYmZkODAyZWYwN2EzYTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC02
MywxNSArNjMsMTQgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmtleUFsZ29yaXRobU1h
dGNoZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMpOwogICAgIGlm
ICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRvQWxnb3JpdGhtQUVTX0tXKHVzYWdlcykpIHsKICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU1lOVEFYX0VSUik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXLCBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlH
ZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKS5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAg
IGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1csIGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcz4o
cGFyYW1ldGVycykubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19LVy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXLmgKaW5kZXggZGYyZjQ4NzJkNzFmN2EzMjZhM2UzZTg1ZWJm
MjMxZWZjYWY4Y2NkNi4uNDM1ZWUxM2RjZWViOGM2ZGQ3NGYxMzNhY2MxMWNjMzQxNDM5Y2NkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0tXLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBDcnlwdG9B
bGdvcml0aG1BRVNfS1coKSA9IGRlZmF1bHQ7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIHZv
aWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAg
dm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1h
dCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IGU0NmJkZGZlMzgwMzAwY2QzMWQxOWZk
MDJmMjI4ZGJhZjgzNzYzNTYuLmZiOTc0NDVmM2U0ZTIzNWM5NjdhZjUzYjMzZWQxOWY1NmM2YTRj
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC02OSwxMCArNjksOSBAQCBib29sIENyeXB0b0FsZ29y
aXRobUhNQUM6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1Bh
cmFtc0RlcAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6
OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIENy
eXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAg
QVNTRVJUKHBhcmFtZXRlcnMpOwotICAgIGNvbnN0IGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oKnBhcmFtZXRlcnMpOworICAgIGNv
bnN0IGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcz4ocGFyYW1ldGVycyk7CiAKICAgICBpZiAodXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0
b0FsZ29yaXRobUhNQUModXNhZ2VzKSkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTWU5U
QVhfRVJSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuaAppbmRleCA2ZjhmODgyNzcwZmM4YTE3MDU0YzJmNDg3YjY2YWE4
OTAwYzQyMzY4Li4wNGZiYWI0NjkxMjczMTkzYjhjYTlhN2M1YjU3ZWM3M2YxMWNhMzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1I
TUFDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtSE1BQy5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGht
SE1BQygpID0gZGVmYXVsdDsKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKICAgICB2b2lkIGltcG9y
dEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBSZWY8Q3J5
cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXggM2Q5OGVlNTJh
ZDkyNmNhNGQ0NmMzYjg5NDYyZjBjODcyNDBiZDg5MC4uM2I0OGVlMzdmNTk3NzMyYmJkNTZmOWJk
NmMyM2MzNTdiNjY0NDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5j
cHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAgcGxhdGZv
cm1EZWNyeXB0KFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRl
cnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JL
ZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQogewotICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPigqcGFyYW1l
dGVycyk7CisgICAgY29uc3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1ldGVycyk7CiAKICAgICBpZiAodXNhZ2VzICYg
KENyeXB0b0tleVVzYWdlU2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5IHwgQ3J5cHRvS2V5VXNh
Z2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMgfCBDcnlwdG9LZXlVc2FnZVdy
YXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soU1lOVEFYX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKaW5k
ZXggZWRhOGVjZTI0ODRkOTdiY2RhMTdlNWFkM2E3ZTNmYzQ3YTVhNDNjYS4uYTk4OGY5NDdjNjJj
ZDBhZTU2Yzc2ZjE4OGY4ODVkMDk4YzFiYmQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbmNyeXB0
KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRv
S2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2Fs
bGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpIGZpbmFsOwogICAg
IHZvaWQgZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUm
KSBmaW5hbDsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxl
Q3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwg
S2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKaW5kZXggMDcwNDI4YjBjMWNiYjZjYTNl
NjJhOWU5MThmMDZkY2FhNmI0NWU3ZS4uMDc1ZWRiNmM0MjllMTY2YjMwZjBmZmM5OTIxM2QyOTdj
NzQxZDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApAQCAt
NjgsMTAgKzY4LDggQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6a2V5
QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1l
dGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlP
cktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIEFTU0VS
VChwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPigqcGFyYW1ldGVycyk7Cit2b2lk
IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ss
IEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmCisgICAgY29uc3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1ldGVycyk7CiAKICAgICBpZiAodXNh
Z2VzICYgKENyeXB0b0tleVVzYWdlRGVjcnlwdCB8IENyeXB0b0tleVVzYWdlRW5jcnlwdCB8IENy
eXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzIHwgQ3J5cHRv
S2V5VXNhZ2VXcmFwS2V5IHwgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpKSB7CiAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKFNZTlRBWF9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmgKaW5kZXggYTMzZTVhMDRkZWUzMDlhODE0N2Y0NDg4MGI5OGE3Y2U1YzE5MzNlMS4u
MWYzNDM5OGEwODZjNzU0YTliNzRmM2ZhYzFkZTNhMDRkNDVmYTdhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKSA9IGRlZmF1bHQ7CiAgICAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lk
IGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktl
eVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQs
IEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShTdWJ0
bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5k
ZXggMzI1MTQzMWExZmFkMDIwZDUwMDQwMjI3NGE0ODk4ZjE5MmNjZDI1Yi4uNzlhZmM1NDk0Y2Y3
OThmMTNkM2QxMmVlMzZhMmY5MjQ4NDQ3YzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApA
QCAtODgsMTAgKzg4LDkgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlwdChz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KICAgICBwbGF0Zm9ybURl
Y3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGNpcGhlclRl
eHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRl
eHQsIHdvcmtRdWV1ZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVy
YXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBBU1NFUlQocGFyYW1ldGVycyk7Ci0gICAgY29uc3QgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4o
KnBhcmFtZXRlcnMpOworICAgIGNvbnN0IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxD
cnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtZXRlcnMpOwogCiAgICAg
aWYgKHVzYWdlcyAmIChDcnlwdG9LZXlVc2FnZVNpZ24gfCBDcnlwdG9LZXlVc2FnZVZlcmlmeSB8
IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKSkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTWU5UQVhfRVJSKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
CmluZGV4IGU3Y2IzZDkwNDliZWU1OWI5MjQ1ZDI5OGE1YWFmYzM4MzA1ZGYxZmYuLjRhZWE2YTRi
ODhiNjQyY2RlNDE3YmRlNTU5NTA4ZjgwODJjZmYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApA
QCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbmNyeXB0KHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0
b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpIGZpbmFsOwogICAgIHZvaWQgZGVjcnlw
dChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0
b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKSBmaW5hbDsKLSAg
ICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5
T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBL
ZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlG
b3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtl
eShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295553</attachid>
            <date>2016-11-28 17:03:19 -0800</date>
            <delta_ts>2016-11-28 19:59:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165111-20161128170255.patch</filename>
            <type>text/plain</type>
            <size>22168</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NkZGUzOTkyZjQ5MzZj
NzdhMzMzNjAwNTEyODg1NjhjZjA1Zjk3Yy4uYWY0ZmE3MTY0ZWQ5M2U0YmFiNDNhZGMxODlmMGE5
M2QzYjA1MTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTExLTI4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDcnlwdG9BbGdvcml0aG06
OmdlbmVyYXRlS2V5KCkgc2hvdWxkIHRha2UgbHZhbHVlIHJlZmVyZW5jZSB0byBjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjUxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KCkgYW5kIGl0cyBvdmVy
cmlkZXMgYWx3YXlzIGV4cGVjdCB0byByZWNlaXZlIGEgbm9uLW51bGwgcG9pbnRlcgorICAgICAg
ICB0byBhIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlciBvYmplY3QgYW5kIG5ldmVyIHRha2Ugb3du
ZXJzaGlwIG9mIGl0LiBUaGlzIGtpbmQgb2YgcmVsYXRpb25zaGlwCisgICAgICAgIGlzIGJlc3Qg
ZXhwcmVzc2VkIGJ5IG1vZGlmeWluZyBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KCkgdG8g
dGFrZSBhIGx2YWx1ZSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSBjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXIgb2JqZWN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdl
bmVyYXRlS2V5UHJvbWlzZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KToKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1BRVNfS1cuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhN
QUM6OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1ITUFDLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleSk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzUuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2Vu
ZXJhdGVLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmg6CisKIDIwMTYtMTEtMjggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEJsYWNrbGlzdCBOZXRmbGl4IGZvciBUb3VjaEJhciBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5k
ZXggZDFhMjY3MmU2YjE0Y2M0NTc1M2M2ZWFhY2JhMTc3ZDkwMTJhNzk3NS4uYzM4YmExMjE4Y2U3
Zjc5NTI3MmMzN2YxOTY2YWE2MmRkNDQ0NmM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtNTUyLDcgKzU1Miw3IEBA
IHN0YXRpYyB2b2lkIGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25HZW5lcmF0ZUtleVByb21pc2UoRXhl
Y1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVyCiAgICAgLy8gVGhlIDExIERlY2VtYmVyIDIwMTQgdmVy
c2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBzdWdnZXN0cyB3ZSBzaG91bGQgcGVyZm9ybSB0aGUg
Zm9sbG93aW5nIHRhc2sgYXN5bmNocm9ub3VzbHkKICAgICAvLyByZWdhcmRsZXNzIHdoYXQga2lu
ZCBvZiBrZXlzIGl0IHByb2R1Y2VzOiBodHRwczovL3d3dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJ
LyNTdWJ0bGVDcnlwdG8tbWV0aG9kLWdlbmVyYXRlS2V5CiAgICAgLy8gVGhhdCdzIHNpbXBseSBu
b3QgZWZmaWNpZW50IGZvciBBRVMgYW5kIEhNQUMga2V5cy4gVGhlcmVmb3JlLCB3ZSBwZXJmb3Jt
IGl0IGFzIGFuIGFzeW5jIHRhc2sgY29uZGl0aW9uYWxseS4KLSAgICBhbGdvcml0aG0tPmdlbmVy
YXRlS2V5KFdURk1vdmUocGFyYW1zKSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleSgq
cGFyYW1zLmdldCgpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4
ZWNTdGF0ZSgmc3RhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQganNTdWJ0bGVDcnlwdG9GdW5jdGlv
bkltcG9ydEtleVByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRl
eCA4NTEyNzljZTI0NzdiODZiMjE2MWQ3M2E5NmM3OGJjNDJkMWMxMjlmLi43MTExZWE1NTY3ZmRh
MjRiZGQ1NzYxNzdkZjBjZGQyNDE2MzVhZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobTo6
ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVm
PAogICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE5PVF9TVVBQT1JURURfRVJSKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JL
ZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAgICBleGNlcHRpb25D
YWxsYmFjayhOT1RfU1VQUE9SVEVEX0VSUik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtLmgKaW5kZXggODMyYjk5NGY2YTZjOTUwMjZhNjBjYmNlNGFkM2NiY2E4NGM1ZDY3
YS4uNDEyODdkMDExMTI2MjM4MTdmYjAyNDE0MzlmMDUwYTBlMWVmODNhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rv
ckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBXb3JrUXVldWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVL
ZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURh
dGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhwb3J0S2V5KFN1YnRsZUNy
eXB0bzo6S2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKaW5kZXggNWQ5YjBlN2I4
MDQwODE5NTA3YjQ3ZDcxOGU5YzE5NjcyNTc5Y2I5ZS4uN2UwNjFhMjMzZDFiMjY3ZGQyZTE2ODAy
NjkzNTRjMmYyYjljODkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKQEAgLTg4LDEwICs4OCw5
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgcGxhdGZvcm1EZWNyeXB0KFdURk1vdmUo
cGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMp
OwotICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKyAgICBjb25zdCBhdXRvJiBhZXNQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPihwYXJhbWV0ZXJzKTsK
IAogICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQyh1c2Fn
ZXMpKSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFNZTlRBWF9FUlIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQy5oCmluZGV4IDE0ODVjMTFhNzdmMzUyOTNlMTVmMDgxZjE5ZTljNTg3YzUzN2YxOGEuLmU1
NmU0OGU1ZjAxOWU5NmEyZDdiODNiYmRkMDU5Nzc1ZDg4NTQwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZW5jcnlwdChzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwg
VmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKSBmaW5hbDsKICAgICB2b2lkIGRl
Y3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxD
cnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikgZmluYWw7
Ci0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAs
IEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6
S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBleHBv
cnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5j
cHAKaW5kZXggMzVjN2E3YjY2MzRkZDc0NjI2NjRjNTlmNzEyMmRhNzcwNmMxMGViMi4uODE5MDI4
ZmZmMGRhZDA2M2RjYWVmNDBkYmZkODAyZWYwN2EzYTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3Bw
CkBAIC02MywxNSArNjMsMTQgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmtleUFsZ29y
aXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6Omdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMpOwog
ICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5cHRvQWxnb3JpdGhtQUVTX0tXKHVzYWdlcykp
IHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU1lOVEFYX0VSUik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXLCBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1B
ZXNLZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKS5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfS1csIGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBh
cmFtcz4ocGFyYW1ldGVycykubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmgKaW5kZXggZGYyZjQ4NzJkNzFmN2EzMjZhM2Uz
ZTg1ZWJmMjMxZWZjYWY4Y2NkNi4uNDM1ZWUxM2RjZWViOGM2ZGQ3NGYxMzNhY2MxMWNjMzQxNDM5
Y2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBD
cnlwdG9BbGdvcml0aG1BRVNfS1coKSA9IGRlZmF1bHQ7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOwor
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7
CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IGU0NmJkZGZlMzgwMzAwY2Qz
MWQxOWZkMDJmMjI4ZGJhZjgzNzYzNTYuLmZiOTc0NDVmM2U0ZTIzNWM5NjdhZjUzYjMzZWQxOWY1
NmM2YTRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC02OSwxMCArNjksOSBAQCBib29sIENyeXB0
b0FsZ29yaXRobUhNQUM6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGht
SG1hY1BhcmFtc0RlcAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2
b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7
Ci0gICAgQVNTRVJUKHBhcmFtZXRlcnMpOwotICAgIGNvbnN0IGF1dG8mIGhtYWNQYXJhbWV0ZXJz
ID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oKnBhcmFtZXRlcnMpOwor
ICAgIGNvbnN0IGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
SG1hY0tleVBhcmFtcz4ocGFyYW1ldGVycyk7CiAKICAgICBpZiAodXNhZ2VzQXJlSW52YWxpZEZv
ckNyeXB0b0FsZ29yaXRobUhNQUModXNhZ2VzKSkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhTWU5UQVhfRVJSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAppbmRleCA2ZjhmODgyNzcwZmM4YTE3MDU0YzJmNDg3
YjY2YWE4OTAwYzQyMzY4Li4wNGZiYWI0NjkxMjczMTkzYjhjYTlhN2M1YjU3ZWM3M2YxMWNhMzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1ITUFDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSE1BQy5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxn
b3JpdGhtSE1BQygpID0gZGVmYXVsdDsKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CisgICAgdm9pZCBn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKICAgICB2b2lk
IGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgZXhwb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBS
ZWY8Q3J5cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXggM2Q5
OGVlNTJhZDkyNmNhNGQ0NmMzYjg5NDYyZjBjODcyNDBiZDg5MC4uM2I0OGVlMzdmNTk3NzMyYmJk
NTZmOWJkNmMyM2MzNTdiNjY0NDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5jcHAKQEAgLTc3LDEwICs3Nyw5IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyCiAgICAg
cGxhdGZvcm1EZWNyeXB0KFdURk1vdmUoa2V5KSwgV1RGTW92ZShjaXBoZXJUZXh0KSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVl
dWUpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRl
S2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewotICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBhdXRvJiBy
c2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPigq
cGFyYW1ldGVycyk7CisgICAgY29uc3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1ldGVycyk7CiAKICAgICBpZiAodXNh
Z2VzICYgKENyeXB0b0tleVVzYWdlU2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5IHwgQ3J5cHRv
S2V5VXNhZ2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMgfCBDcnlwdG9LZXlV
c2FnZVdyYXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soU1lOVEFYX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
LmgKaW5kZXggZWRhOGVjZTI0ODRkOTdiY2RhMTdlNWFkM2E3ZTNmYzQ3YTVhNDNjYS4uYTk4OGY5
NDdjNjJjZDBhZTU2Yzc2ZjE4OGY4ODVkMDk4YzFiYmQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBl
bmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8
Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpIGZpbmFs
OwogICAgIHZvaWQgZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3Jr
UXVldWUmKSBmaW5hbDsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2sm
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXko
U3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tl
eT4mJiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKaW5kZXggMDcwNDI4YjBjMWNi
YjZjYTNlNjJhOWU5MThmMDZkY2FhNmI0NWU3ZS4uYzVmMDBiNThiODE0Mjk0NGNlM2I4ZDBlZjc1
OWZkNmZjMzg5ZjIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNw
cApAQCAtNjgsMTAgKzY4LDkgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJh
dGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYg
cGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2Vz
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQordm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogewotICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBhdXRv
JiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2Vu
UGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgY29uc3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1ldGVycyk7
CiAKICAgICBpZiAodXNhZ2VzICYgKENyeXB0b0tleVVzYWdlRGVjcnlwdCB8IENyeXB0b0tleVVz
YWdlRW5jcnlwdCB8IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNhZ2VEZXJp
dmVCaXRzIHwgQ3J5cHRvS2V5VXNhZ2VXcmFwS2V5IHwgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkp
KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFNZTlRBWF9FUlIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81LmgKaW5kZXggYTMzZTVhMDRkZWUzMDlhODE0N2Y0NDg4MGI5
OGE3Y2U1YzE5MzNlMS4uMWYzNDM5OGEwODZjNzU0YTliNzRmM2ZhYzFkZTNhMDRkNDVmYTdhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC00NCw3ICs0NCw3IEBA
IHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKSA9IGRlZmF1
bHQ7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5
cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5
RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHAKaW5kZXggMzI1MTQzMWExZmFkMDIwZDUwMDQwMjI3NGE0ODk4ZjE5MmNjZDI1
Yi4uNzlhZmM1NDk0Y2Y3OThmMTNkM2QxMmVlMzZhMmY5MjQ4NDQ3YzQ0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmNwcApAQCAtODgsMTAgKzg4LDkgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6ZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4K
ICAgICBwbGF0Zm9ybURlY3J5cHQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBX
VEZNb3ZlKGNpcGhlclRleHQpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQocGFyYW1ldGVycyk7Ci0gICAgY29u
c3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hl
ZEtleUdlblBhcmFtcz4oKnBhcmFtZXRlcnMpOworICAgIGNvbnN0IGF1dG8mIHJzYVBhcmFtZXRl
cnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFt
ZXRlcnMpOwogCiAgICAgaWYgKHVzYWdlcyAmIChDcnlwdG9LZXlVc2FnZVNpZ24gfCBDcnlwdG9L
ZXlVc2FnZVZlcmlmeSB8IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNhZ2VE
ZXJpdmVCaXRzKSkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTWU5UQVhfRVJSKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5oCmluZGV4IGU3Y2IzZDkwNDliZWU1OWI5MjQ1ZDI5OGE1YWFmYzM4MzA1
ZGYxZmYuLjRhZWE2YTRiODhiNjQyY2RlNDE3YmRlNTU5NTA4ZjgwODJjZmYxZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbmNy
eXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5
cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpIGZpbmFsOwog
ICAgIHZvaWQgZGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVl
dWUmKSBmaW5hbDsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3Vi
dGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGV4cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4m
JiwgS2V5RGF0YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCg==
</data>
<flag name="review"
          id="318113"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>