<?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>124451</bug_id>
          
          <creation_ts>2013-11-16 01:07:02 -0800</creation_ts>
          <short_desc>WebCrypto no longer uses sequences of ArrayBuffers</short_desc>
          <delta_ts>2013-11-16 11:12:16 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951344</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-16 01:07:02 -0800</bug_when>
    <thetext>It&apos;s been decided at F2F yesterday to undo the new feature in the latest draft where data was passed as sequences of CryptoOperationDatas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951348</commentid>
    <comment_count>1</comment_count>
      <attachid>217122</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-16 01:19:53 -0800</bug_when>
    <thetext>Created attachment 217122
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951349</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-16 01:20:56 -0800</bug_when>
    <thetext>Attachment 217122 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-192-encrypt-decrypt.html&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-256-encrypt-decrypt.html&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-encrypt-decrypt.html&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-import-jwk.html&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-wrong-key-class-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/aes-cbc-wrong-key-class.html&apos;, u&apos;LayoutTests/crypto/subtle/argument-conversion-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/argument-conversion.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-import-jwk.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-sign-verify-empty-key.html&apos;, u&apos;LayoutTests/crypto/subtle/hmac-sign-verify.html&apos;, u&apos;LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-sign-verify.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-1-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/sha-1.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-224-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/sha-224.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-256-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/sha-256.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-384-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/sha-384.html&apos;, u&apos;LayoutTests/crypto/subtle/sha-512-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/sha-512.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoOperationData.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCryptoOperationData.h&apos;, u&apos;Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithm.h&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmHMACMac.cpp&apos;, u&apos;Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h&apos;]&quot; exit_code: 1
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:45:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:45:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:92:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:131:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:39:  transformAES_CBC is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:86:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:99:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/crypto/CryptoAlgorithm.h:57:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 41 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>951371</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-16 10:56:35 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r159379&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951372</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-16 11:12:16 -0800</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r159380&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217122</attachid>
            <date>2013-11-16 01:19:53 -0800</date>
            <delta_ts>2013-11-16 09:26:02 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>CryptoOperationData.txt</filename>
            <type>text/plain</type>
            <size>73925</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTM3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEzLTExLTE2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFdlYkNyeXB0byBubyBsb25n
ZXIgdXNlcyBzZXF1ZW5jZXMgb2YgQXJyYXlCdWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgIENoYW5nZWQgYWxsIG9wZXJhdGlvbnMgdG8gdGFrZSBzaW5nbGUgQ3J5cHRvT3BlcmF0
aW9uRGF0YSBvYmplY3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRp
b25EYXRhLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1N1YnRsZUNyeXB0bzo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNy
eXB0bzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAgICAgICAqIGNy
eXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGVjcnlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OnNpZ24pOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0u
aDoKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzU6OnZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0
KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmg6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuaDoKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEE1MTIuaDoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19D
QkNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NCQyk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjplbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxj
dWxhdGVTaWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6
c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOgor
ICAgICAgICAqIGNyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFt
cy5oOgorCiAyMDEzLTExLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgZXhwb3J0aW5nIHN5bW1ldHJpYyBrZXlzIGFzIEpXSwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRh
dGEuY3BwCShyZXZpc2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyOSArMzQsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgc2Vx
dWVuY2VPZkNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgcmVzdWx0KQotewotICAg
IHVuc2lnbmVkIHNlcXVlbmNlTGVuZ3RoOwotICAgIEpTT2JqZWN0KiBzZXF1ZW5jZSA9IHRvSlNT
ZXF1ZW5jZShleGVjLCB2YWx1ZSwgc2VxdWVuY2VMZW5ndGgpOwotICAgIGlmICghc2VxdWVuY2Up
IHsKLSAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZXF1ZW5jZUxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgaXRlbSA9IHNlcXVlbmNlLT5nZXQoZXhlYywg
aSk7Ci0gICAgICAgIGlmIChBcnJheUJ1ZmZlciogYnVmZmVyID0gdG9BcnJheUJ1ZmZlcihpdGVt
KSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpKTsKLSAgICAgICAg
ZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZm
ZXJWaWV3KGl0ZW0pKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihz
dGF0aWNfY2FzdDxjaGFyKj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSksIGJ1ZmZlclZpZXct
PmJ5dGVMZW5ndGgoKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBj
YW4gYmUgcGFydCBvZiBDcnlwdG9PcGVyYXRpb25EYXRhIHNlcXVlbmNlIik7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IGJvb2wgY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgcmVzdWx0KQogewogICAgIGlmIChBcnJh
eUJ1ZmZlciogYnVmZmVyID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuaAkocmV2aXNp
b24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRp
b25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgSlNDcnlw
dG9PcGVyYXRpb25EYXRhX2gKICNkZWZpbmUgSlNDcnlwdG9PcGVyYXRpb25EYXRhX2gKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTM5LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBl
ZGVmIHN0ZDo6cGFpcjxjb25zdCBjaGFyKiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOwog
Ci1ib29sIHNlcXVlbmNlT2ZDcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYpOwogYm9v
bCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
VmFsdWUsIENyeXB0b09wZXJhdGlvbkRhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRv
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsOCArMTU1
LDggQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdAogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9u
RGF0YT4gZGF0YTsKLSAgICBpZiAoIXNlcXVlbmNlT2ZDcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpKSB7CisgICAgQ3J5
cHRvT3BlcmF0aW9uRGF0YSBkYXRhOworICAgIGlmICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21K
U1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLCBkYXRhKSkgewogICAgICAg
ICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICB9CkBAIC0yMDEsOCArMjAxLDggQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6
ZGVjcnlwdChFeGVjU3RhdAogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAK
LSAgICBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4gZGF0YTsKLSAgICBpZiAoIXNlcXVlbmNl
T2ZDcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMiksIGRhdGEpKSB7CisgICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOworICAgIGlm
ICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpLCBkYXRhKSkgewogICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
OwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC0yNDcsOCArMjQ3LDgg
QEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUqIAogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0
YT4gZGF0YTsKLSAgICBpZiAoIXNlcXVlbmNlT2ZDcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFs
dWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMiksIGRhdGEpKSB7CisgICAgQ3J5cHRv
T3BlcmF0aW9uRGF0YSBkYXRhOworICAgIGlmICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1Zh
bHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLCBkYXRhKSkgewogICAgICAgICBB
U1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CkBAIC0yOTksOCArMjk5LDggQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dmVy
aWZ5KEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAg
ICBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4gZGF0YTsKLSAgICBpZiAoIXNlcXVlbmNlT2ZD
cnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMyksIGRhdGEpKSB7CisgICAgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhOworICAgIGlmICgh
Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDMpLCBkYXRhKSkgewogICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC0zMzUsOCArMzM1LDggQEAg
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4g
ZGF0YTsKLSAgICBpZiAoIXNlcXVlbmNlT2ZDcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUo
ZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSksIGRhdGEpKSB7CisgICAgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSBkYXRhOworICAgIGlmICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVl
KGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBkYXRhKSkgewogICAgICAgICBBU1NF
UlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAko
cmV2aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI3ICs0MCwyNyBAQCBDcnlwdG9BbGdvcml0aG06
On5DcnlwdG9BbGdvcml0aG0oKQogewogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VX
cmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0
YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgc3Rk
Ojp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OnNpZ24o
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OnNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgVmVj
dG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVy
PiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6dmVyaWZ5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVl
X3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25E
YXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBDcnlwdG9BbGdvcml0aG06OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9t
aXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCShy
ZXZpc2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQogCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+
Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6
OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0
cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmVy
aWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxDcnlwdG9P
cGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9t
aXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgc3Rk
Ojp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyaXZlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIENy
eXB0b0FsZ29yaXRobSogZGVyaXZlZEtleVR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81TWFjLmNwcAkocmV2aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgYm9vbCBnZXRDb21tb25DcnlwdG9EaWdl
c3RBbGdvcml0CiAgICAgfQogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRh
dGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYg
a2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
bWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENy
eXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtcyYgcnNhU1NBUGFyYW1ldGVycyA9IHRvQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zKHBhcmFtZXRlcnMpOwogCkBAIC0xMTEsOCArMTExLDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gZGF0YS5zaXplKCk7ICsraSkKLSAg
ICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7Cisg
ICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CiAKICAgICBWZWN0
b3I8dW5zaWduZWQgY2hhcj4gZGlnZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIApA
QCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnMKICAgICBwcm9taXNlLT5mdWxmaWxsKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4m
IGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBw
cm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXMmIHJzYVNTQVBhcmFtZXRlcnMgPSB0b0NyeXB0b0FsZ29yaXRobVJzYVNzYVBh
cmFtcyhwYXJhbWV0ZXJzKTsKIApAQCAtMTUxLDggKzE1MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IGRhdGEuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOworICAgIGRpZ2VzdC0+YWRk
Qnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwogCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IGRpZ2VzdERhdGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfQ0JDLmgJKHJldmlzaW9uIDE1OTM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCAr
NDEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VX
cmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVy
PiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhj
ZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNv
ZGUmKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtSE1BQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAkocmV2aXNpb24gMTU5Mzc3KQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1
bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29u
c3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJv
bWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBw
ZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgc3RkOjp1
bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwg
c3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURF
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgJKHJldmlzaW9u
IDE1OTM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaWduKGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5
cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4m
IGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNl
V3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2Vu
ZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCShyZXZp
c2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRoCiAgICAgcmV0dXJuIHNfaWRlbnRpZmll
cjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0
YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewpA
QCAtNjEsOCArNjEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBD
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRh
dGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsKKyAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEu
Zmlyc3QsIGRhdGEuc2Vjb25kKTsKIAogICAgIHByb21pc2UtPmZ1bGZpbGwoZGlnZXN0LT5jb21w
dXRlSGFzaCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmgJKHJldmlzaW9uIDE1OTM3NykKKysrIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VX
cmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWdl
c3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJikg
T1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtU0hBMSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwCShyZXZpc2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3Jp
dGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0
b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIy
NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21p
c2UsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MSw4ICs2MSw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNv
bmQpOworICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwogCiAg
ICAgcHJvbWlzZS0+ZnVsZmlsbChkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0LmgJKHJldmlzaW9uIDE1OTM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3Bl
cmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6dW5pcXVl
X3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKIAogcHJpdmF0
ZToKICAgICBDcnlwdG9BbGdvcml0aG1TSEEyMjQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNw
cAkocmV2aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBA
QCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRoCiAgICAgcmV0dXJuIHNf
aWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlv
bkRhdGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4
Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2Rl
JikKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2KTsKICAgICBp
ZiAoIWRpZ2VzdCkgewpAQCAtNjEsOCArNjEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1
Njo6ZGlnZXN0KGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMCwgc2l6ZSA9IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBkaWdl
c3QtPmFkZEJ5dGVzKGRhdGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsKKyAgICBkaWdlc3Qt
PmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKIAogICAgIHByb21pc2UtPmZ1bGZp
bGwoZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCShyZXZp
c2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyNTYuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBw
ZXI+LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAJKHJldmlzaW9uIDE1OTM3
NykKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTM4NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3Rk
Ojp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKK3Zv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIHN0ZDo6dW5pcXVlX3B0
cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKQEAg
LTYxLDggKzYxLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBk
YXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRh
W2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZp
cnN0LCBkYXRhLnNlY29uZCk7CiAKICAgICBwcm9taXNlLT5mdWxmaWxsKGRpZ2VzdC0+Y29tcHV0
ZUhhc2goKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEzODQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaAkocmV2aXNpb24gMTU5Mzc3KQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYsIHN0ZDo6dW5pcXVlX3B0cjxQcm9t
aXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29k
ZSYpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTM4NCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCShyZXZpc2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRv
QWxnb3JpdGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25z
dCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9t
aXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+
IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CkBAIC02MSw4ICs2MSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZGF0YS5zaXplKCk7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YVtpXS5maXJzdCwgZGF0YVtp
XS5zZWNvbmQpOworICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQp
OwogCiAgICAgcHJvbWlzZS0+ZnVsZmlsbChkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmgJKHJldmlzaW9uIDE1OTM3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5
cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIHN0ZDo6
dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKIAog
cHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1TSEE1MTIoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNw
cAkocmV2aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NP
cGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3Bl
cmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlz
ZSkKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBj
b25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UpCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YocGFyYW1ldGVycy5pdikgPT0ga0NDQmxvY2tTaXplQUVTMTI4LCAiSW5pdGlhbGl6YXRpb24g
dmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyBhbGdvcml0aG0gYmxvY2sgc2l6ZSIpOwog
CkBAIC01OCwyNCArNTgsMTggQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJh
dGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IGlucHV0U2l6ZSA9IDA7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgaW5wdXRTaXplICs9IGRhdGFbaV0uc2Vjb25kOwotCi0gICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IHJlc3VsdChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgaW5w
dXRTaXplLCB0cnVlKSk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyKiBwID0gcmVzdWx0LmRhdGEoKTsK
LSAgICBzaXplX3QgcmVzdWx0Q2h1bmtTaXplOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgc3RhdHVzID0gQ0NDcnlw
dG9yVXBkYXRlKGNyeXB0b3IsIGRhdGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kLCBwLCByZXN1
bHQuZW5kKCkgLSBwLCAmcmVzdWx0Q2h1bmtTaXplKTsKLSAgICAgICAgaWYgKHN0YXR1cykgewot
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KG51bGxwdHIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHAgKz0gcmVzdWx0Q2h1bmtTaXplOworICAgIFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiByZXN1bHQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGRh
dGEuc2Vjb25kLCB0cnVlKSk7CisKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1
cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgcmVz
dWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJmJ5dGVzV3JpdHRlbik7CisgICAgaWYgKHN0YXR1
cykgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yRmluYWwoY3J5cHRvciwgcCwgcmVzdWx0LmVu
ZCgpIC0gcCwgJnJlc3VsdENodW5rU2l6ZSk7Ci0gICAgcCArPSByZXN1bHRDaHVua1NpemU7CisK
KyAgICB1bnNpZ25lZCBjaGFyKiBwID0gcmVzdWx0LmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAg
ICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCByZXN1bHQuZW5kKCkgLSBwLCAm
Ynl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVzV3JpdHRlbjsKICAgICBpZiAoc3RhdHVzKSB7
CiAgICAgICAgIHByb21pc2UtPnJlamVjdChudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
ODksNyArODMsNyBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1BRVNfQ0JDKENDT3BlcmF0aW9uCiAg
ICAgcHJvbWlzZS0+ZnVsZmlsbChyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRh
PiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtl
eSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21p
c2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlw
dG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIGFlc0NCQ1BhcmFtZXRlcnMgPSB0b0NyeXB0b0FsZ29y
aXRobUFlc0NiY1BhcmFtcyhwYXJhbWV0ZXJzKTsKIApAQCAtMTAyLDcgKzk2LDcgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDOjplbmNyeXB0KGNvbgogICAgIHRyYW5zZm9ybUFFU19DQkMo
a0NDRW5jcnlwdCwgYWVzQ0JDUGFyYW1ldGVycywgYWVzS2V5LCBkYXRhLCBzdGQ6Om1vdmUocHJv
bWlzZSkpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJh
bXMmIGFlc0NCQ1BhcmFtZXRlcnMgPSB0b0NyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyhwYXJh
bWV0ZXJzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1ITUFDTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCShyZXZpc2lvbiAxNTkzNzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBib29sIGdldENvbW1vbkNyeXB0b0FsZ29yaXRobShD
cnkKICAgICB9CiB9CiAKLXN0YXRpYyBWZWN0b3I8dW5zaWduZWQgY2hhcj4gY2FsY3VsYXRlU2ln
bmF0dXJlKENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5
LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEpCitzdGF0aWMgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0aG0gYWxnb3Jp
dGhtLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSkKIHsKICAgICBzaXplX3QgZGlnZXN0TGVuZ3RoOwogICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CkBAIC04MiwxOCArODIsMTMgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBjYWxj
dWxhdGVTaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBDQ0ht
YWNDb250ZXh0IGNvbnRleHQ7Ci0gICAgY29uc3QgY2hhcioga2V5RGF0YSA9IGtleS5kYXRhKCkg
PyBrZXkuZGF0YSgpIDogIiI7IC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ2NzQyNT4gSE1BQyBjcmFz
aGVzIHdoZW4ga2V5IHBvaW50ZXIgaXMgbnVsbC4KLSAgICBDQ0htYWNJbml0KCZjb250ZXh0LCBh
bGdvcml0aG0sIGtleURhdGEsIGtleS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIENDSG1hY1VwZGF0ZSgm
Y29udGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IHJlc3VsdChkaWdlc3RMZW5ndGgpOwotICAgIENDSG1hY0ZpbmFsKCZjb250
ZXh0LCByZXN1bHQuZGF0YSgpKTsKKyAgICBjb25zdCBjaGFyKiBrZXlEYXRhID0ga2V5LmRhdGEo
KSA/IGtleS5kYXRhKCkgOiAiIjsgLy8gPHJkYXI6Ly9wcm9ibGVtLzE1NDY3NDI1PiBITUFDIGNy
YXNoZXMgd2hlbiBrZXkgcG9pbnRlciBpcyBudWxsLgorICAgIENDSG1hYyhhbGdvcml0aG0sIGtl
eURhdGEsIGtleS5zaXplKCksIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCByZXN1bHQuZGF0YSgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3Rk
Ojp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFy
YW1zJiBobWFjUGFyYW1ldGVycyA9IHRvQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyhwYXJhbWV0
ZXJzKTsKIApAQCAtMTE0LDcgKzEwOSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2ln
bihjb25zdCBDcnkKICAgICBwcm9taXNlLT5mdWxmaWxsKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBleHBlY3RlZFNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRh
dGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHBy
b21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUht
YWNQYXJhbXMmIGhtYWNQYXJhbWV0ZXJzID0gdG9DcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zKHBh
cmFtZXRlcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9Dcnlw
dG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaAkocmV2
aXNpb24gMTU5Mzc3KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zX2gKIAogI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Mzc3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNlcyBvZiBBcnJheUJ1ZmZlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQ1MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVz
dHMgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtMTkyLWVu
Y3J5cHQtZGVjcnlwdC5odG1sOgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvYWVzLWNiYy0yNTYt
ZW5jcnlwdC1kZWNyeXB0Lmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWVu
Y3J5cHQtZGVjcnlwdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMt
Y2JjLWVuY3J5cHQtZGVjcnlwdC13aXRoLXBhZGRpbmcuaHRtbDoKKyAgICAgICAgKiBjcnlwdG8v
c3VidGxlL2Flcy1jYmMtZW5jcnlwdC1kZWNyeXB0Lmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1
YnRsZS9hZXMtY2JjLWltcG9ydC1qd2suaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Fl
cy1jYmMtd3Jvbmcta2V5LWNsYXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjcnlwdG8vc3Vi
dGxlL2Flcy1jYmMtd3Jvbmcta2V5LWNsYXNzLmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1YnRs
ZS9hcmd1bWVudC1jb252ZXJzaW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjcnlwdG8vc3Vi
dGxlL2FyZ3VtZW50LWNvbnZlcnNpb24uaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2ht
YWMtaW1wb3J0LWp3ay5odG1sOgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvaG1hYy1zaWduLXZl
cmlmeS1lbXB0eS1rZXkuaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2htYWMtc2lnbi12
ZXJpZnkuaHRtbDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LXNp
Z24tdmVyaWZ5Lmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9zaGEtMS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9zaGEtMS5odG1sOgorICAgICAgICAqIGNyeXB0
by9zdWJ0bGUvc2hhLTIyNC1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9z
aGEtMjI0Lmh0bWw6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9zaGEtMjU2LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3NoYS0yNTYuaHRtbDoKKyAgICAgICAgKiBjcnlw
dG8vc3VidGxlL3NoYS0zODQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUv
c2hhLTM4NC5odG1sOgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvc2hhLTUxMi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWw6CisKIDIwMTMtMTEtMTUg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBl
eHBvcnRpbmcgc3ltbWV0cmljIGtleXMgYXMgSldLCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2Flcy1jYmMtMTkyLWVuY3J5cHQtZGVjcnlwdC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy0xOTItZW5jcnlwdC1kZWNyeXB0Lmh0bWwJ
KHJldmlzaW9uIDE1OTM3NykKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy0x
OTItZW5jcnlwdC1kZWNyeXB0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMyBA
QCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3Iiwga2V5RGF0YSwgCiAgICAgc2hvdWxkQmUo
ImtleS51c2FnZXMiLCAiWydlbmNyeXB0JywgJ2RlY3J5cHQnXSIpOwogCiAgICAgZGVidWcoIlVz
aW5nIHRoZSBrZXkgdG8gZW5jcnlwdCBwbGFpbnRleHQuLi4iKTsKLSAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVzLWNiYyIsIGl2OiBpdn0sIGtleSwgW3BsYWludGV4
dF0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwg
aXY6IGl2fSwga2V5LCBwbGFpbnRleHQpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAg
ICBlbmNyeXB0aW9uUmVzdWx0ID0gcmVzdWx0OwogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3Ry
aW5nKG5ldyBVaW50OEFycmF5KGVuY3J5cHRpb25SZXN1bHQpKSIsICInNGYwMjFkYjI0M2JjNjMz
ZDcxNzgxODNhOWZhMDcxZThiNGQ5YWRhOWFkN2RlZGY0ZTVlNzM4NzYzZjY5MTQ1YTU3MWIyNDIw
MTJmYjdhZTA3ZmE5YmFhYzNkZjEwMmUwMDhiMGUyNzk4ODU5ODg4MWQ5MjBhOWU2NGY1NjE1Y2Q2
MTJjY2Q3OTIyNGIzNTA5MzVkNDVkZDZhOThmODE3NiciKTsKIAogICAgIGRlYnVnKCJEZWNyeXB0
aW5nIGl0IGJhY2suLi4iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1l
OiAiYWVzLWNiYyIsIGl2OiBpdn0sIGtleSwgW3Jlc3VsdF0pOworICAgIHJldHVybiBjcnlwdG8u
c3VidGxlLmRlY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwgaXY6IGl2fSwga2V5LCByZXN1bHQpOwog
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBkZWNyeXB0aW9uUmVzdWx0ID0gcmVzdWx0
OwogICAgIHNob3VsZEJlKCJuZXcgVWludDhBcnJheShkZWNyeXB0aW9uUmVzdWx0KSIsICJwbGFp
bnRleHQiKTsKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy0yNTYtZW5j
cnlwdC1kZWNyeXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLTI1Ni1lbmNyeXB0LWRlY3J5cHQuaHRtbAkocmV2aXNpb24gMTU5Mzc3KQorKysg
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLTI1Ni1lbmNyeXB0LWRlY3J5cHQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBAIGNyeXB0by5zdWJ0bGUuaW1wb3J0
S2V5KCJyYXciLCBrZXlEYXRhLCAKICAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICJbJ2VuY3J5
cHQnLCAnZGVjcnlwdCddIik7CiAKICAgICBkZWJ1ZygiVXNpbmcgdGhlIGtleSB0byBlbmNyeXB0
IHBsYWludGV4dC4uLiIpOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6
ICJhZXMtY2JjIiwgaXY6IGl2fSwga2V5LCBbcGxhaW50ZXh0XSk7CisgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogImFlcy1jYmMiLCBpdjogaXZ9LCBrZXksIHBsYWludGV4
dCk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGVuY3J5cHRpb25SZXN1bHQgPSBy
ZXN1bHQ7CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZW5j
cnlwdGlvblJlc3VsdCkpIiwgIidmNThjNGMwNGQ2ZTVmMWJhNzc5ZWFiZmI1ZjdiZmJkNjljZmM0
ZTk2N2VkYjgwOGQ2NzlmNzc3YmM2NzAyYzdkMzlmMjMzNjlhOWQ5YmFjZmE1MzBlMjYzMDQyMzE0
NjFiMmViMDVlMmMzOWJlOWZjZGE2YzE5MDc4YzZhOWQxYjNmNDYxNzk2ZDZiMGQ2YjJlMGMyYTcy
YjRkODBlNjQ0JyIpOwogCiAgICAgZGVidWcoIkRlY3J5cHRpbmcgaXQgYmFjay4uLiIpOwotICAg
IHJldHVybiBjcnlwdG8uc3VidGxlLmRlY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwgaXY6IGl2fSwg
a2V5LCBbcmVzdWx0XSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGVjcnlwdCh7bmFtZTog
ImFlcy1jYmMiLCBpdjogaXZ9LCBrZXksIHJlc3VsdCk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3Vs
dCkgewogICAgIGRlY3J5cHRpb25SZXN1bHQgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoIm5ldyBV
aW50OEFycmF5KGRlY3J5cHRpb25SZXN1bHQpIiwgInBsYWludGV4dCIpOwpJbmRleDogTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWVuY3J5cHQtZGVjcnlwdC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWVuY3J5cHQt
ZGVjcnlwdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1OTM3NykKKysrIExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvYWVzLWNiYy1lbmNyeXB0LWRlY3J5cHQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNCwxMCArMTQsMTAgQEAgUEFTUyBieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50
OEFycmF5KGVuYwogRGVjcnlwdGluZyBpdCBiYWNrLi4uCiBQQVNTIG5ldyBVaW50OEFycmF5KGRl
Y3J5cHRpb25SZXN1bHQpIGlzIHBsYWludGV4dAogVGVzdGluZyBpbml0aWFsaXphdGlvbiB2ZWN0
b3IgYmluZGluZ3MuLi4KLVBBU1MgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAnQUVTLUNC
QycsIGl2OiBudWxsfSwga2V5LCBbcGxhaW50ZXh0XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9iamVjdHMgY2FuIGJlIHBh
c3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRhLgotUEFTUyBjcnlwdG8uc3VidGxlLmVuY3J5cHQo
e25hbWU6ICdBRVMtQ0JDJ30sIGtleSwgW3BsYWludGV4dF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBi
ZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5lbmNy
eXB0KHtuYW1lOiAnQUVTLUNCQycsIGl2OiAzfSwga2V5LCBbcGxhaW50ZXh0XSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9i
amVjdHMgY2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRhLgotUEFTUyBjcnlwdG8u
c3VidGxlLmVuY3J5cHQoe25hbWU6ICdBRVMtQ0JDJywgaXY6IG5ldyBVaW50OEFycmF5KFswXSl9
LCBrZXksIFtwbGFpbnRleHRdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEFFUy1DQkMgaW5pdGlh
bGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzLgorUEFTUyBjcnlwdG8uc3VidGxlLmVuY3J5
cHQoe25hbWU6ICdBRVMtQ0JDJywgaXY6IG51bGx9LCBrZXksIHBsYWludGV4dCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9i
amVjdHMgY2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRhLgorUEFTUyBjcnlwdG8u
c3VidGxlLmVuY3J5cHQoe25hbWU6ICdBRVMtQ0JDJ30sIGtleSwgcGxhaW50ZXh0KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcg
b2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEuCitQQVNTIGNyeXB0
by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogJ0FFUy1DQkMnLCBpdjogM30sIGtleSwgcGxhaW50ZXh0
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1
ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEuCitQ
QVNTIGNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogJ0FFUy1DQkMnLCBpdjogbmV3IFVpbnQ4
QXJyYXkoWzBdKX0sIGtleSwgcGxhaW50ZXh0KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEFFUy1D
QkMgaW5pdGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzLgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL2Flcy1jYmMtZW5jcnlwdC1kZWNyeXB0LXdpdGgtcGFkZGluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy1lbmNyeXB0LWRlY3J5
cHQtd2l0aC1wYWRkaW5nLmh0bWwJKHJldmlzaW9uIDE1OTM3NykKKysrIExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvYWVzLWNiYy1lbmNyeXB0LWRlY3J5cHQtd2l0aC1wYWRkaW5nLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMyBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgi
cmF3Iiwga2V5RGF0YSwgCiAgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAiWydlbmNyeXB0Jywg
J2RlY3J5cHQnXSIpOwogCiAgICAgZGVidWcoIlVzaW5nIHRoZSBrZXkgdG8gZW5jcnlwdCBwbGFp
bnRleHQuLi4iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVz
LWNiYyIsIGl2OiBpdn0sIGtleSwgW3BsYWludGV4dF0pOworICAgIHJldHVybiBjcnlwdG8uc3Vi
dGxlLmVuY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwgaXY6IGl2fSwga2V5LCBwbGFpbnRleHQpOwog
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBjeXBoZXJ0ZXh0ID0gcmVzdWx0OwogICAg
IHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KGN5cGhlcnRleHQpKSIs
ICInNjMwMTk5YzVmMjAyY2M3MTY3YmI4NGM2YzcyYjM0OWQnIik7CiAKICAgICBkZWJ1ZygiRGVj
cnlwdGluZyBpdCBiYWNrLi4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGVjcnlwdCh7
bmFtZTogImFlcy1jYmMiLCBpdjogaXZ9LCBrZXksIFtyZXN1bHRdKTsKKyAgICByZXR1cm4gY3J5
cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOiAiYWVzLWNiYyIsIGl2OiBpdn0sIGtleSwgcmVzdWx0
KTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgZGVjcnlwdGlvblJlc3VsdCA9IHJl
c3VsdDsKICAgICBzaG91bGRCZSgibmV3IFVpbnQ4QXJyYXkoZGVjcnlwdGlvblJlc3VsdCkiLCAi
cGxhaW50ZXh0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZW5j
cnlwdC1kZWNyeXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLWVuY3J5cHQtZGVjcnlwdC5odG1sCShyZXZpc2lvbiAxNTkzNzcpCisrKyBMYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtZW5jcnlwdC1kZWNyeXB0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDIyICsyOCwyMiBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3
Iiwga2V5RGF0YSwgCiAgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAiWydlbmNyeXB0JywgJ2Rl
Y3J5cHQnXSIpOwogCiAgICAgZGVidWcoIlVzaW5nIHRoZSBrZXkgdG8gZW5jcnlwdCBwbGFpbnRl
eHQuLi4iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtuYW1lOiAiYWVzLWNi
YyIsIGl2OiBpdn0sIGtleSwgW3BsYWludGV4dF0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxl
LmVuY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwgaXY6IGl2fSwga2V5LCBwbGFpbnRleHQpOwogfSku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBlbmNyeXB0aW9uUmVzdWx0ID0gcmVzdWx0Owog
ICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KGVuY3J5cHRpb25S
ZXN1bHQpKSIsICInNzY0OWFiYWM4MTE5YjI0NmNlZTk4ZTliMTJlOTE5N2Q1MDg2Y2I5YjUwNzIx
OWVlOTVkYjExM2E5MTc2NzhiMjczYmVkNmI4ZTNjMTc0M2I3MTE2ZTY5ZTIyMjI5NTE2M2ZmMWNh
YTE2ODFmYWMwOTEyMGVjYTMwNzU4NmUxYTc4Y2I4MjgwNzIzMGUxMzIxZDNmYWUwMGQxOGNjMjAx
MiciKTsKIAogICAgIGRlYnVnKCJEZWNyeXB0aW5nIGl0IGJhY2suLi4iKTsKLSAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOiAiYWVzLWNiYyIsIGl2OiBpdn0sIGtleSwgW3Jl
c3VsdF0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRlY3J5cHQoe25hbWU6ICJhZXMtY2Jj
IiwgaXY6IGl2fSwga2V5LCByZXN1bHQpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAg
ICBkZWNyeXB0aW9uUmVzdWx0ID0gcmVzdWx0OwogICAgIHNob3VsZEJlKCJuZXcgVWludDhBcnJh
eShkZWNyeXB0aW9uUmVzdWx0KSIsICJwbGFpbnRleHQiKTsKIAogICAgIGRlYnVnKCJUZXN0aW5n
IGluaXRpYWxpemF0aW9uIHZlY3RvciBiaW5kaW5ncy4uLiIpOwotICAgIHNob3VsZFRocm93KCJj
cnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICdBRVMtQ0JDJywgaXY6IG51bGx9LCBrZXksIFtw
bGFpbnRleHRdKSIpOwotICAgIHNob3VsZFRocm93KCJjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25h
bWU6ICdBRVMtQ0JDJ30sIGtleSwgW3BsYWludGV4dF0pIik7Ci0gICAgc2hvdWxkVGhyb3coImNy
eXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogJ0FFUy1DQkMnLCBpdjogM30sIGtleSwgW3BsYWlu
dGV4dF0pIik7Ci0gICAgc2hvdWxkVGhyb3coImNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTog
J0FFUy1DQkMnLCBpdjogbmV3IFVpbnQ4QXJyYXkoWzBdKX0sIGtleSwgW3BsYWludGV4dF0pIik7
CisgICAgc2hvdWxkVGhyb3coImNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogJ0FFUy1DQkMn
LCBpdjogbnVsbH0sIGtleSwgcGxhaW50ZXh0KSIpOworICAgIHNob3VsZFRocm93KCJjcnlwdG8u
c3VidGxlLmVuY3J5cHQoe25hbWU6ICdBRVMtQ0JDJ30sIGtleSwgcGxhaW50ZXh0KSIpOworICAg
IHNob3VsZFRocm93KCJjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICdBRVMtQ0JDJywgaXY6
IDN9LCBrZXksIHBsYWludGV4dCkiKTsKKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLnN1YnRsZS5l
bmNyeXB0KHtuYW1lOiAnQUVTLUNCQycsIGl2OiBuZXcgVWludDhBcnJheShbMF0pfSwga2V5LCBw
bGFpbnRleHQpIik7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwpJbmRleDogTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2suaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWp3ay5odG1sCShyZXZpc2lv
biAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtaW1wb3J0LWp3
ay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNyeXB0by5zdWJ0bGUuaW1w
b3J0S2V5KCJqd2siLCBqd2tLZXlBc0EKICAgICBzaG91bGRCZSgia2V5LnVzYWdlcyIsICdbImVu
Y3J5cHQiXScpOwogCiAgICAgZGVidWcoIlxuVXNpbmcgdGhlIGtleSB0byBlbmNyeXB0IHBsYWlu
dGV4dC4uLiIpOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICJhZXMt
Y2JjIiwgaXY6IGl2fSwga2V5LCBbcGxhaW50ZXh0XSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZW5jcnlwdCh7bmFtZTogImFlcy1jYmMiLCBpdjogaXZ9LCBrZXksIHBsYWludGV4dCk7CiB9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGVuY3J5cHRpb25SZXN1bHQgPSByZXN1bHQ7
CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGlv
blJlc3VsdCkpIiwgIic0ZjAyMWRiMjQzYmM2MzNkNzE3ODE4M2E5ZmEwNzFlOGI0ZDlhZGE5YWQ3
ZGVkZjRlNWU3Mzg3NjNmNjkxNDVhNTcxYjI0MjAxMmZiN2FlMDdmYTliYWFjM2RmMTAyZTAwOGIw
ZTI3OTg4NTk4ODgxZDkyMGE5ZTY0ZjU2MTVjZDYxMmNjZDc5MjI0YjM1MDkzNWQ0NWRkNmE5OGY4
MTc2JyIpOwpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXdyb25nLWtl
eS1jbGFzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1
YnRsZS9hZXMtY2JjLXdyb25nLWtleS1jbGFzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1OTM3
NykKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy13cm9uZy1rZXktY2xhc3Mt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIEltcG9ydGluZyBhIHJhdyBITUFDIGtleSBm
cm9tIHN0cmluZyBsaXRlcmFsLi4uCiBVc2luZyB0aGUga2V5IHRvIGVuY3J5cHQgcGxhaW50ZXh0
Li4uCi1QQVNTIGNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTogImFlcy1jYmMiLCBpdjogaXZ9
LCBrZXksIFtwbGFpbnRleHRdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVy
cm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7bmFtZTog
ImFlcy1jYmMiLCBpdjogaXZ9LCBrZXksIHBsYWludGV4dCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8v
c3VidGxlL2Flcy1jYmMtd3Jvbmcta2V5LWNsYXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXdyb25nLWtleS1jbGFzcy5odG1sCShyZXZpc2lv
biAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtd3Jvbmcta2V5
LWNsYXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAgZGVidWcoIkltcG9y
dGluZyBhIHJhdyBITUFDIGtleSBmcm9tIHN0cgogY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIGhtYWNLZXksIHtuYW1lOiAnaG1hYycsIGhhc2g6IHtuYW1lOiAnc2hhLTEnfX0sIGV4dHJh
Y3RhYmxlLCBbInNpZ24iLCAidmVyaWZ5IiwgImVuY3J5cHQiLCAiZGVjcnlwdCJdKS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgewogICAgIGtleSA9IHJlc3VsdDsKICAgICBkZWJ1ZygiVXNpbmcgdGhl
IGtleSB0byBlbmNyeXB0IHBsYWludGV4dC4uLiIpOwotICAgIHNob3VsZFRocm93KCdjcnlwdG8u
c3VidGxlLmVuY3J5cHQoe25hbWU6ICJhZXMtY2JjIiwgaXY6IGl2fSwga2V5LCBbcGxhaW50ZXh0
XSknKQorICAgIHNob3VsZFRocm93KCdjcnlwdG8uc3VidGxlLmVuY3J5cHQoe25hbWU6ICJhZXMt
Y2JjIiwgaXY6IGl2fSwga2V5LCBwbGFpbnRleHQpJykKIAogICAgIGZpbmlzaEpTVGVzdCgpOwog
fSk7CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2FyZ3VtZW50LWNvbnZlcnNpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYXJn
dW1lbnQtY29udmVyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1OTM3NykKKysrIExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvYXJndW1lbnQtY29udmVyc2lvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw2IEBAIFRlc3QgY3J5cHRvLnN1YnRsZSBhcmd1bWVudCBj
b252ZXJzaW9uCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotU0hBMSBvZiBuZXcgVWlu
dDhBcnJheShbXSkpCi1QQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0
KSkgaXMgJ2RhMzlhM2VlNWU2YjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDknCiAKIFBhc3Np
bmcgYWxnb3JpdGhtIG5hbWUgYXMgYSBzdHJpbmcgb2JqZWN0Li4uCiBQQVNTIC4uLnN1Y2NlZWRl
ZApAQCAtMTcsMjMgKzE1LDIzIEBAIFBBU1MgLi4uc3VjY2VlZGVkCiAKIFBhc3NpbmcgaW52YWxp
ZCBkYXRhIHRvIGRpZ2VzdCgpCiBQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hh
LTEnfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1Q
QVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgbnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCi1QQVNTIGNyeXB0by5z
dWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgMTApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgotUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7
bmFtZTogJ3NoYS0xJ30sIFsxMF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9ubHkgQXJy
YXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXJ0IG9mIENyeXB0
b09wZXJhdGlvbkRhdGEgc2VxdWVuY2UuCi1QQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1l
OiAnc2hhLTEnfSwgbmV3IFVpbnQ4QXJyYXkoWzBdKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9iamVjdHMgY2FuIGJlIHBh
cnQgb2YgQ3J5cHRvT3BlcmF0aW9uRGF0YSBzZXF1ZW5jZS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5k
aWdlc3Qoe25hbWU6ICdzaGEtMSd9LCBudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBP
bmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2Vk
IGFzIENyeXB0b09wZXJhdGlvbkRhdGEuCitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1l
OiAnc2hhLTEnfSwgMTApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9ubHkgQXJyYXlCdWZm
ZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3Bl
cmF0aW9uRGF0YS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMSd9LCBb
MTBdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJh
eUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEu
CitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgW25ldyBVaW50OEFy
cmF5KFswXSldKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPbmx5IEFycmF5QnVmZmVyIGFu
ZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlv
bkRhdGEuCiAKIFBhc3NpbmcgaW52YWxpZCBhbGdvcml0aG1JZGVudGlmaWVycyB0byBkaWdlc3Qo
KQotUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7IHRvU3RyaW5nOmZ1bmN0aW9uKCkgeyByZXR1
cm4gJ3NoYS0xJyB9IH0sIFtkYXRhXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0
ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgotUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFt
ZTogJyd9LCBbZGF0YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6
IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IG51bGx9
LCBbZGF0YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBF
eGNlcHRpb24gOS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IHVuZGVmaW5lZH0s
IFtkYXRhXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4
Y2VwdGlvbiA5LgotUEFTUyBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYSd9LCBbZGF0
YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRp
b24gOS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IDF9LCBbZGF0YV0pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KLVBB
U1MgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJycsIFtkYXRhXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgotUEFTUyBjcnlwdG8uc3VidGxl
LmRpZ2VzdChudWxsLCBbZGF0YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVk
RXJyb3I6IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3QodW5kZWZp
bmVkLCBbZGF0YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERP
TSBFeGNlcHRpb24gOS4KLVBBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3QoMSwgW2RhdGFdKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCi1Q
QVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHt9LCBbZGF0YV0pIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3J5cHRvLnN1YnRs
ZS5kaWdlc3QoeyB0b1N0cmluZzpmdW5jdGlvbigpIHsgcmV0dXJuICdzaGEtMScgfSB9LCBkYXRh
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9u
IDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnJ30sIGRhdGEpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1Mg
Y3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IG51bGx9LCBkYXRhKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5z
dWJ0bGUuZGlnZXN0KHtuYW1lOiB1bmRlZmluZWR9LCBkYXRhKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0
bGUuZGlnZXN0KHtuYW1lOiAnc2hhJ30sIGRhdGEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5kaWdl
c3Qoe25hbWU6IDF9LCBkYXRhKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVy
cm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCcnLCBkYXRh
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9u
IDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZGlnZXN0KG51bGwsIGRhdGEpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3J5cHRv
LnN1YnRsZS5kaWdlc3QodW5kZWZpbmVkLCBkYXRhKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5v
dFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIGNyeXB0by5zdWJ0bGUuZGln
ZXN0KDEsIGRhdGEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERP
TSBFeGNlcHRpb24gOS4KK1BBU1MgY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe30sIGRhdGEpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hcmd1bWVudC1jb252ZXJzaW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hcmd1bWVudC1jb252ZXJzaW9uLmh0bWwJ
KHJldmlzaW9uIDE1OTM3NykKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYXJndW1lbnQt
Y29udmVyc2lvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwyNCArMTQsMTYgQEAgZGVzY3Jp
cHRpb24oIlRlc3QgY3J5cHRvLnN1YnRsZSBhcmd1bWVudAoganNUZXN0SXNBc3luYyA9IHRydWU7
CiAKIFByb21pc2UuZnVsZmlsbChudWxsKS50aGVuKGZ1bmN0aW9uKCkgewotICAgIC8vIFRoaXMg
bG9va3MgbGlrZSBpbnZhbGlkIGlucHV0LCBidXQgaXQgYWN0dWFsbHkgaXNuJ3QgLSBVaW50OEFy
cmF5IGlzIGEgc2VxdWVuY2UgdG9vLAotICAgIC8vIHNvIGl0J3MganVzdCBhbiBlbXB0eSBzZXF1
ZW5jZSwgc2FtZSBhcyBwYXNzaW5nIFtdLgotICAgIGRlYnVnKCJTSEExIG9mIG5ldyBVaW50OEFy
cmF5KFtdKSkiKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0xJywgbmV3
IFVpbnQ4QXJyYXkoW10pKTsKLX0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgZGlnZXN0
ID0gcmVzdWx0OwotICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5
KGRpZ2VzdCkpIiwgIidkYTM5YTNlZTVlNmI0YjBkMzI1NWJmZWY5NTYwMTg5MGFmZDgwNzA5JyIp
OwotCiAgICAgZGVidWcoIlxuUGFzc2luZyBhbGdvcml0aG0gbmFtZSBhcyBhIHN0cmluZyBvYmpl
Y3QuLi4iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QobmV3IFN0cmluZygnc2hh
LTEnKSwgW10pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdChuZXcgU3RyaW5nKCdz
aGEtMScpLCBuZXcgVWludDhBcnJheShbXSkpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
ICAgICB0ZXN0UGFzc2VkKCIuLi5zdWNjZWVkZWQiKTsKICAgICBkZWJ1ZygiXG5QYXNzaW5nIGFs
Z29yaXRobSBuYW1lIGFzIGEgc3RyaW5nIG9iamVjdCBpbiBhIGRpY3Rpb25hcnkuLi4iKTsKLSAg
ICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IG5ldyBTdHJpbmcoJ3NoYS0xJyl9
LCBbXSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiBuZXcgU3RyaW5n
KCdzaGEtMScpfSwgbmV3IFVpbnQ4QXJyYXkoW10pKTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0
KSB7CiAgICAgdGVzdFBhc3NlZCgiLi4uc3VjY2VlZGVkIik7CiAgICAgZGVidWcoIlxuUGFzc2lu
ZyBhbGdvcml0aG0gbmFtZSBhcyBhbiBvYmplY3Qgd2l0aCB0b1N0cmluZyIpOwotICAgIHJldHVy
biBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogeyB0b1N0cmluZzpmdW5jdGlvbigpIHsgcmV0
dXJuICdzaGEtMScgfSB9IH0sIFtdKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qo
e25hbWU6IHsgdG9TdHJpbmc6ZnVuY3Rpb24oKSB7IHJldHVybiAnc2hhLTEnIH0gfSB9LCBuZXcg
VWludDhBcnJheShbXSkpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICB0ZXN0UGFz
c2VkKCIuLi5zdWNjZWVkZWQiKTsKIApAQCAtNDAsMjEgKzMyLDIxIEBAIFByb21pc2UuZnVsZmls
bChudWxsKS50aGVuKGZ1bmN0aW9uKCkgewogICAgIHNob3VsZFRocm93KCJjcnlwdG8uc3VidGxl
LmRpZ2VzdCh7bmFtZTogJ3NoYS0xJ30sIG51bGwpIik7CiAgICAgc2hvdWxkVGhyb3coImNyeXB0
by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgMTApIik7CiAgICAgc2hvdWxkVGhyb3co
ImNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgWzEwXSkiKTsKLSAgICBzaG91
bGRUaHJvdygiY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMSd9LCBuZXcgVWludDhB
cnJheShbMF0pKSIpOworICAgIHNob3VsZFRocm93KCJjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFt
ZTogJ3NoYS0xJ30sIFtuZXcgVWludDhBcnJheShbMF0pXSkiKTsKIAogICAgIGRlYnVnKCJcblBh
c3NpbmcgaW52YWxpZCBhbGdvcml0aG1JZGVudGlmaWVycyB0byBkaWdlc3QoKSIpOwogICAgIGRh
dGEgPSBuZXcgVWludDhBcnJheShbMF0pOwotICAgIHNob3VsZFRocm93KCJjcnlwdG8uc3VidGxl
LmRpZ2VzdCh7IHRvU3RyaW5nOmZ1bmN0aW9uKCkgeyByZXR1cm4gJ3NoYS0xJyB9IH0sIFtkYXRh
XSkiKTsgLy8gQWxnb3JpdGhtIG5vcm1hbGl6YXRpb24gZG9lc24ndCBhdHRlbXB0IHRvIGNhbGwg
dG9TdHJpbmcuCi0gICAgc2hvdWxkVGhyb3coImNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAn
J30sIFtkYXRhXSkiKTsKLSAgICBzaG91bGRUaHJvdygiY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25h
bWU6IG51bGx9LCBbZGF0YV0pIik7Ci0gICAgc2hvdWxkVGhyb3coImNyeXB0by5zdWJ0bGUuZGln
ZXN0KHtuYW1lOiB1bmRlZmluZWR9LCBbZGF0YV0pIik7Ci0gICAgc2hvdWxkVGhyb3coImNyeXB0
by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhJ30sIFtkYXRhXSkiKTsKLSAgICBzaG91bGRUaHJv
dygiY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IDF9LCBbZGF0YV0pIik7Ci0gICAgc2hvdWxk
VGhyb3coImNyeXB0by5zdWJ0bGUuZGlnZXN0KCcnLCBbZGF0YV0pIik7Ci0gICAgc2hvdWxkVGhy
b3coImNyeXB0by5zdWJ0bGUuZGlnZXN0KG51bGwsIFtkYXRhXSkiKTsKLSAgICBzaG91bGRUaHJv
dygiY3J5cHRvLnN1YnRsZS5kaWdlc3QodW5kZWZpbmVkLCBbZGF0YV0pIik7Ci0gICAgc2hvdWxk
VGhyb3coImNyeXB0by5zdWJ0bGUuZGlnZXN0KDEsIFtkYXRhXSkiKTsKLSAgICBzaG91bGRUaHJv
dygiY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe30sIFtkYXRhXSkiKTsKKyAgICBzaG91bGRUaHJvdygi
Y3J5cHRvLnN1YnRsZS5kaWdlc3QoeyB0b1N0cmluZzpmdW5jdGlvbigpIHsgcmV0dXJuICdzaGEt
MScgfSB9LCBkYXRhKSIpOyAvLyBBbGdvcml0aG0gbm9ybWFsaXphdGlvbiBkb2Vzbid0IGF0dGVt
cHQgdG8gY2FsbCB0b1N0cmluZy4KKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLnN1YnRsZS5kaWdl
c3Qoe25hbWU6ICcnfSwgZGF0YSkiKTsKKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLnN1YnRsZS5k
aWdlc3Qoe25hbWU6IG51bGx9LCBkYXRhKSIpOworICAgIHNob3VsZFRocm93KCJjcnlwdG8uc3Vi
dGxlLmRpZ2VzdCh7bmFtZTogdW5kZWZpbmVkfSwgZGF0YSkiKTsKKyAgICBzaG91bGRUaHJvdygi
Y3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEnfSwgZGF0YSkiKTsKKyAgICBzaG91bGRU
aHJvdygiY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6IDF9LCBkYXRhKSIpOworICAgIHNob3Vs
ZFRocm93KCJjcnlwdG8uc3VidGxlLmRpZ2VzdCgnJywgZGF0YSkiKTsKKyAgICBzaG91bGRUaHJv
dygiY3J5cHRvLnN1YnRsZS5kaWdlc3QobnVsbCwgZGF0YSkiKTsKKyAgICBzaG91bGRUaHJvdygi
Y3J5cHRvLnN1YnRsZS5kaWdlc3QodW5kZWZpbmVkLCBkYXRhKSIpOworICAgIHNob3VsZFRocm93
KCJjcnlwdG8uc3VidGxlLmRpZ2VzdCgxLCBkYXRhKSIpOworICAgIHNob3VsZFRocm93KCJjcnlw
dG8uc3VidGxlLmRpZ2VzdCh7fSwgZGF0YSkiKTsKIH0pLnRoZW4oZmluaXNoSlNUZXN0KTsKIAog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LWp3
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvaG1hYy1pbXBv
cnQtandrLmh0bWwJKHJldmlzaW9uIDE1OTM3NykKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0
bGUvaG1hYy1pbXBvcnQtandrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxMyBA
QCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgaG1hY0tleUFzCiAgICAgc2hvdWxkQmUo
ImtleS51c2FnZXMiLCAnWyJzaWduIiwgInZlcmlmeSJdJyk7CiAKICAgICBkZWJ1ZygiXG5Vc2lu
ZyB0aGUga2V5IHRvIHNpZ24gbWVzc2FnZSAnZm9vJy4uLiIpOwotICAgIHJldHVybiBjcnlwdG8u
c3VidGxlLnNpZ24oa2V5LmFsZ29yaXRobSwga2V5LCBbYXNjaWlUb1VpbnQ4QXJyYXkoJ2Zvbycp
XSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuc2lnbihrZXkuYWxnb3JpdGhtLCBrZXksIGFz
Y2lpVG9VaW50OEFycmF5KCdmb28nKSk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAg
IHNpZ25hdHVyZSA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhuZXcg
VWludDhBcnJheShzaWduYXR1cmUpKSIsICInZTAzNzM2ZmUwOTg4OTJiMmEyZGE3NzgxMjQzMWY3
YzAxNGQzMmUyZmQ2OWYzYmNmZjg4M2FjOTIzYThmYTJkYSciKTsKIAogICAgIGRlYnVnKCJcblZl
cmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVy
aWZ5KGtleS5hbGdvcml0aG0sIGtleSwgcmVzdWx0LCBbYXNjaWlUb1VpbnQ4QXJyYXkoJ2Zvbycp
XSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KGtleS5hbGdvcml0aG0sIGtleSwg
cmVzdWx0LCBhc2NpaVRvVWludDhBcnJheSgnZm9vJykpOwogfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKICAgICB2ZXJpZmljYXRpb25SZXN1bHQgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoInZl
cmlmaWNhdGlvblJlc3VsdCIsICJ0cnVlIik7CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3Vi
dGxlL2htYWMtc2lnbi12ZXJpZnktZW1wdHkta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLXNpZ24tdmVyaWZ5LWVtcHR5LWtleS5odG1sCShyZXZp
c2lvbiAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtc2lnbi12ZXJp
ZnktZW1wdHkta2V5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMyBAQCBjcnlw
dG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgaG1hY0tleSwgCiAgICAgc2hvdWxkQmUoImtleS51
c2FnZXMiLCAiWydzaWduJywgJ3ZlcmlmeSddIik7CiAKICAgICBkZWJ1ZygiVXNpbmcgdGhlIGtl
eSB0byBzaWduICdmb28nLi4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuc2lnbihrZXku
YWxnb3JpdGhtLCBrZXksIFthc2NpaVRvVWludDhBcnJheSgnZm9vJyldKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5zaWduKGtleS5hbGdvcml0aG0sIGtleSwgYXNjaWlUb1VpbnQ4QXJyYXko
J2ZvbycpKTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgc2lnbmF0dXJlID0gcmVz
dWx0OwogICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KHNpZ25h
dHVyZSkpIiwgIidhM2NjNzcwZmMwMzNlMmNiNDE5ZDQyYjY0ZTAwODFhM2JkM2JlMzBlJyIpOwog
CiAgICAgZGVidWcoIlZlcmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uIik7Ci0gICAgcmV0dXJuIGNy
eXB0by5zdWJ0bGUudmVyaWZ5KGtleS5hbGdvcml0aG0sIGtleSwgcmVzdWx0LCBbYXNjaWlUb1Vp
bnQ4QXJyYXkoJ2ZvbycpXSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KGtleS5h
bGdvcml0aG0sIGtleSwgcmVzdWx0LCBhc2NpaVRvVWludDhBcnJheSgnZm9vJykpOwogfSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKICAgICB2ZXJpZmljYXRpb25SZXN1bHQgPSByZXN1bHQ7CiAg
ICAgc2hvdWxkQmUoInZlcmlmaWNhdGlvblJlc3VsdCIsICJ0cnVlIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtc2lnbi12ZXJpZnkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2htYWMtc2lnbi12ZXJpZnkuaHRtbAkocmV2aXNpb24g
MTU5Mzc3KQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9obWFjLXNpZ24tdmVyaWZ5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMyBAQCBjcnlwdG8uc3VidGxlLmltcG9y
dEtleSgicmF3IiwgaG1hY0tleSwgCiAgICAgc2hvdWxkQmUoImtleS51c2FnZXMiLCAiWydzaWdu
JywgJ3ZlcmlmeSddIik7CiAKICAgICBkZWJ1ZygiVXNpbmcgdGhlIGtleSB0byBzaWduICdmb28n
Li4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuc2lnbihrZXkuYWxnb3JpdGhtLCBrZXks
IFthc2NpaVRvVWludDhBcnJheSgnZm9vJyldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5z
aWduKGtleS5hbGdvcml0aG0sIGtleSwgYXNjaWlUb1VpbnQ4QXJyYXkoJ2ZvbycpKTsKIH0pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgc2lnbmF0dXJlID0gcmVzdWx0OwogICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpIiwgIidiZWJi
YzAyZTQ2YjBmODExODNmNDBjMjVkY2UyM2U1MDQ1ZDY1NTE5JyIpOwogCiAgICAgZGVidWcoIlZl
cmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVy
aWZ5KGtleS5hbGdvcml0aG0sIGtleSwgcmVzdWx0LCBbYXNjaWlUb1VpbnQ4QXJyYXkoJ2Zvbycp
XSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KGtleS5hbGdvcml0aG0sIGtleSwg
cmVzdWx0LCBhc2NpaVRvVWludDhBcnJheSgnZm9vJykpOwogfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKICAgICB2ZXJpZmljYXRpb25SZXN1bHQgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoInZl
cmlmaWNhdGlvblJlc3VsdCIsICJ0cnVlIik7CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3Vi
dGxlL3JzYXNzYS1wa2NzMS12MV81LXNpZ24tdmVyaWZ5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWduLXZlcmlmeS5odG1s
CShyZXZpc2lvbiAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYXNzYS1w
a2NzMS12MV81LXNpZ24tdmVyaWZ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwx
OCBAQCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb1VpCiB9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgewogICAgIHByaXZhdGVLZXkgPSByZXN1bHQ7CiAgICAgZGVidWcoIlxu
U2lnbmluZyBzb21lIHRleHQuLi4iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5zaWduKHsg
bmFtZTogIlJTQVNTQS1QS0NTMS12MV81IiwgaGFzaDogIlNIQS0yNTYiIH0sIHByaXZhdGVLZXks
IFtkYXRhXSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuc2lnbih7IG5hbWU6ICJSU0FTU0Et
UEtDUzEtdjFfNSIsIGhhc2g6ICJTSEEtMjU2IiB9LCBwcml2YXRlS2V5LCBkYXRhKTsKIH0pLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgc2lnbmF0dXJlID0gcmVzdWx0OwogICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpIiwgIicwZmQ5
YThhZWY0Y2MxODc2YzBiNzYyNTQ1MzM2YzZkMWZiMzE1YWUxNmFlNGI1ZTRiZjM0ZDM4NGQ4NTg1
ZWE3YTAxZTc2ZWEwOWVlN2Y3ZWU4ZDFjMTIyZTdkZDE1YjdjOTRhNTczYjJhYTA3MjAzZThkMTNi
YzZmZDE2MTU2Y2Q4ZTVmMGMxNWExNWRjY2I2MmQxNTIxMjdmY2EwOTg4MmZiNTNiYzNlNjBhYjU4
NmQxNWI5NWNmNDExZTNhYWI0YTFjMjMxYTdlOTFhYWIwOWVlM2Q0YjEzZDExZTk3NTA1ZGRmZjc3
NjgzNDcwZGE1MTBlZTc2ZThiZDUzMGM1NmE4NWY5MDE2MjZhNWE3MTBmNzE2ZjExM2RmZTljZjZj
NDczZWUxNmZhMjQ4YWVhMzQ4MGExMDMzYWJlMzBmNGMxMjQzMjg5YTY2MWU2NGQ3ODE4YjU1Njk4
MjgwNjg4MDk3MTM1OTY4YzZkNGIwMjk0OTZkODVjYWIyYTY3ZTQ2OTY3Mzc3ODFmNzBlNDM5MmM3
ZGY3MWJiZDZjOTI0NjU5NDdmMDI5YTFkZTQ4MTYwYWNlZDExYjU3MjFiMWNkMjUwMzlmZTJjMTZj
MmIzOGRlNzNkZjNiOWE4M2UzZWE3NTVmZDBjZmU1MWNhMDZiNjFmYWRmNmQ4NDY3N2Y5NSciKTsK
IAogICAgIGRlYnVnKCJcblZlcmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uIik7Ci0gICAgcmV0dXJu
IGNyeXB0by5zdWJ0bGUudmVyaWZ5KHsgbmFtZTogIlJTQVNTQS1QS0NTMS12MV81IiwgaGFzaDog
IlNIQS0yNTYiIH0sIHB1YmxpY0tleSwgc2lnbmF0dXJlLCBbZGF0YV0pOworICAgIHJldHVybiBj
cnlwdG8uc3VidGxlLnZlcmlmeSh7IG5hbWU6ICJSU0FTU0EtUEtDUzEtdjFfNSIsIGhhc2g6ICJT
SEEtMjU2IiB9LCBwdWJsaWNLZXksIHNpZ25hdHVyZSwgZGF0YSk7CiB9KS50aGVuKGZ1bmN0aW9u
KHJlc3VsdCkgewogICAgIHZlcmlmaWNhdGlvblJlc3VsdCA9IHJlc3VsdDsKICAgICBzaG91bGRC
ZSgidmVyaWZpY2F0aW9uUmVzdWx0IiwgInRydWUiKTsKICAgICBkZWJ1ZygiXG5WZXJpZnlpbmcg
YSBiYWQgc2lnbmF0dXJlLi4uIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KHsg
bmFtZTogIlJTQVNTQS1QS0NTMS12MV81IiwgaGFzaDogIlNIQS0yNTYiIH0sIHB1YmxpY0tleSwg
bmV3IFVpbnQ4QXJyYXkoMjU2KSwgW2RhdGFdKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS52
ZXJpZnkoeyBuYW1lOiAiUlNBU1NBLVBLQ1MxLXYxXzUiLCBoYXNoOiAiU0hBLTI1NiIgfSwgcHVi
bGljS2V5LCBuZXcgVWludDhBcnJheSgyNTYpLCBkYXRhKTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVz
dWx0KSB7CiAgICAgdmVyaWZpY2F0aW9uUmVzdWx0ID0gcmVzdWx0OwogICAgIHNob3VsZEJlKCJ2
ZXJpZmljYXRpb25SZXN1bHQiLCAiZmFsc2UiKTsKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9z
dWJ0bGUvc2hhLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0
by9zdWJ0bGUvc2hhLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTkzNzcpCisrKyBMYXlvdXRU
ZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OSw4ICs5LDYgQEAgU0hBMSBvZiBbMHgwXQogUEFTUyBieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50
OEFycmF5KGRpZ2VzdCkpIGlzICc1YmE5M2M5ZGIwY2ZmOTNmNTJiNTIxZDc0MjBlNDNmNmVkYTI3
ODRmJwogU0hBMSBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCiBQQVNTIGJ5
dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkgaXMgJzJjN2U3YzM4NGY3ODI5
Njk0MjgyYjFlM2E2MjE2ZGVmODA4MmQwNTUnCi1TSEExIG9mIFtuZXcgVWludDhBcnJheShbMCwg
MSwgMiwgMywgNF0pLCBuZXcgVWludDhBcnJheSg1LCA2LCA3LCA4LCA5LCAxMF0pXQotUEFTUyBi
eXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KGRpZ2VzdCkpIGlzICcyYzdlN2MzODRmNzgy
OTY5NDI4MmIxZTNhNjIxNmRlZjgwODJkMDU1JwogUEFTUyBjcnlwdG8uc3VidGxlLmdlbmVyYXRl
S2V5KCdzaGEtMScpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERP
TSBFeGNlcHRpb24gOS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDog
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hhLTEuaHRtbAkocmV2aXNpb24gMTU5Mzc3KQorKysgTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwy
OSArMTUsMjQgQEAganNUZXN0SXNBc3luYyA9IHRydWU7CiAKIFByb21pc2UuZnVsZmlsbChudWxs
KS50aGVuKGZ1bmN0aW9uKCkgewogICAgIGRlYnVnKCJTSEExIG9mIFtdIik7Ci0gICAgcmV0dXJu
IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdzaGEtMScsIFtuZXcgVWludDhBcnJheShbXSldKTsKKyAg
ICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0xJywgbmV3IFVpbnQ4QXJyYXkoW10p
KTsKIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgZGlnZXN0ID0gcmVzdWx0OwogICAg
IHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KGRpZ2VzdCkpIiwgIidk
YTM5YTNlZTVlNmI0YjBkMzI1NWJmZWY5NTYwMTg5MGFmZDgwNzA5JyIpOwogCiAgICAgZGVidWco
IlNIQTEgb2YgWzB4MF0iKQotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTog
J3NoYS0xJ30sIFtuZXcgVWludDhBcnJheShbMF0pXSk7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgbmV3IFVpbnQ4QXJyYXkoWzBdKSk7CiB9KS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgi
Ynl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSIsICInNWJhOTNjOWRiMGNm
ZjkzZjUyYjUyMWQ3NDIwZTQzZjZlZGEyNzg0ZiciKTsKIAogICAgIGRlYnVnKCJTSEExIG9mIFsw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0iKTsKICAgICB2YXIgZGF0YSA9IG5ldyBV
aW50OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOwotICAgIHJldHVy
biBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0xJ30sIFtkYXRhXSk7CisgICAgcmV0
dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTEnfSwgZGF0YSk7CiB9KS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgi
Ynl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSIsICInMmM3ZTdjMzg0Zjc4
Mjk2OTQyODJiMWUzYTYyMTZkZWY4MDgyZDA1NSciKTsKIAotICAgIGRlYnVnKCJTSEExIG9mIFtu
ZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNF0pLCBuZXcgVWludDhBcnJheSg1LCA2LCA3LCA4
LCA5LCAxMF0pXSIpOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3No
YS0xJ30sIFtuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNF0pLCBuZXcgVWludDhBcnJheShb
NSwgNiwgNywgOCwgOSwgMTBdKV0pOwotfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICBk
aWdlc3QgPSByZXN1bHQ7Ci0gICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4
QXJyYXkoZGlnZXN0KSkiLCAiJzJjN2U3YzM4NGY3ODI5Njk0MjgyYjFlM2E2MjE2ZGVmODA4MmQw
NTUnIik7CiAgICAgLy8gQWxsIFNIQS0xIGNhbiBkbyBpcyBkaWdlc3QuCiAgICAgc2hvdWxkVGhy
b3coImNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoJ3NoYS0xJykiKTsKICAgICBmaW5pc2hKU1Rl
c3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hhLTIyNC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU5Mzc3KQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9z
aGEtMjI0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDYgQEAgU0hBMjI0
IG9mIFsweDBdCiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkg
aXMgJ2ZmZjkyOTJiNDIwMTYxN2JkYzRkMzA1M2ZjZTAyNzM0MTY2YTY4M2Q3ZDg1OGE3ZjVmNTli
MDczJwogU0hBMjI0IG9mIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0KIFBBU1Mg
Ynl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSBpcyAnNzY3ZDBjZGMxMTA3
OWJhOGRjYTI3NmRmNWM0Yjg1NTA3ZGU2N2RjZTQ3ZWRhNGNkOTE5NmQzMTInCi1TSEEyMjQgb2Yg
W25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcs
IDgsIDksIDEwXSldCi1QQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0
KSkgaXMgJzc2N2QwY2RjMTEwNzliYThkY2EyNzZkZjVjNGI4NTUwN2RlNjdkY2U0N2VkYTRjZDkx
OTZkMzEyJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yMjQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yMjQuaHRtbAkocmV2aXNpb24gMTU5
Mzc3KQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE1LDI2ICsxNSwyMCBAQCBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogUHJvbWlz
ZS5mdWxmaWxsKG51bGwpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgZGVidWcoIlNIQTIyNCBvZiBb
XSIpOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnc2hhLTIyNCcsIFtuZXcgVWlu
dDhBcnJheShbXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0yMjQn
LCBuZXcgVWludDhBcnJheShbXSkpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBk
aWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4
QXJyYXkoZGlnZXN0KSkiLCAiJ2QxNGEwMjhjMmEzYTJiYzk0NzYxMDJiYjI4ODIzNGM0MTVhMmIw
MWY4MjhlYTYyYWM1YjNlNDJmJyIpOwogCiAgICAgZGVidWcoIlNIQTIyNCBvZiBbMHgwXSIpCi0g
ICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTIyNCd9LCBbbmV3IFVp
bnQ4QXJyYXkoWzBdKV0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTog
J3NoYS0yMjQnfSwgbmV3IFVpbnQ4QXJyYXkoWzBdKSk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3Vs
dCkgewogICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmlu
ZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSIsICInZmZmOTI5MmI0MjAxNjE3YmRjNGQzMDUzZmNl
MDI3MzQxNjZhNjgzZDdkODU4YTdmNWY1OWIwNzMnIik7CiAKICAgICBkZWJ1ZygiU0hBMjI0IG9m
IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0iKTsKICAgICB2YXIgZGF0YSA9IG5l
dyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0pOwotICAgIHJl
dHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0yMjQnfSwgW2RhdGFdKTsKLX0p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgZGlnZXN0ID0gcmVzdWx0OwotICAgIHNob3Vs
ZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KGRpZ2VzdCkpIiwgIic3NjdkMGNk
YzExMDc5YmE4ZGNhMjc2ZGY1YzRiODU1MDdkZTY3ZGNlNDdlZGE0Y2Q5MTk2ZDMxMiciKTsKLQot
ICAgIGRlYnVnKCJTSEEyMjQgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5l
dyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldIik7Ci0gICAgcmV0dXJuIGNyeXB0by5z
dWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTIyNCd9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIs
IDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKKyAgICByZXR1
cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMjI0J30sIGRhdGEpOwogfSkudGhl
bihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUo
ImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzc2N2QwY2RjMTEw
NzliYThkY2EyNzZkZjVjNGI4NTUwN2RlNjdkY2U0N2VkYTRjZDkxOTZkMzEyJyIpOwpJbmRleDog
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjU2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yNTYtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yNTYtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksNiBAQCBTSEEyNTYgb2YgWzB4MF0KIFBB
U1MgYnl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSBpcyAnNmUzNDBiOWNm
ZmIzN2E5ODljYTU0NGU2YmI3ODBhMmM3ODkwMWQzZmIzMzczODc2ODUxMWEzMDYxN2FmYTAxZCcK
IFNIQTI1NiBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCiBQQVNTIGJ5dGVz
VG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkgaXMgJzc4YTYyNzMxMDNkMTdjMzlh
MGI2MTI2ZTIyNmNlYzcwZTMzMzM3ZjRiYzZhMzgwNjc0MDFiNTRhMzNlNzhlYWQnCi1TSEEyNTYg
b2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYs
IDcsIDgsIDksIDEwXSldCi1QQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGln
ZXN0KSkgaXMgJzc4YTYyNzMxMDNkMTdjMzlhMGI2MTI2ZTIyNmNlYzcwZTMzMzM3ZjRiYzZhMzgw
Njc0MDFiNTRhMzNlNzhlYWQnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hhLTI1Ni5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hhLTI1Ni5odG1sCShy
ZXZpc2lvbiAxNTkzNzcpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yNTYuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTUsMjYgKzE1LDIwIEBAIGpzVGVzdElzQXN5bmMgPSB0cnVl
OwogCiBQcm9taXNlLmZ1bGZpbGwobnVsbCkudGhlbihmdW5jdGlvbigpIHsKICAgICBkZWJ1Zygi
U0hBMjU2IG9mIFtdIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdzaGEtMjU2
JywgW25ldyBVaW50OEFycmF5KFtdKV0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2Vz
dCgnc2hhLTI1NicsIG5ldyBVaW50OEFycmF5KFtdKSk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3Vs
dCkgewogICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmlu
ZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSIsICInZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2
ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSciKTsKIAogICAgIGRlYnVnKCJT
SEEyNTYgb2YgWzB4MF0iKQotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTog
J3NoYS0yNTYnfSwgW25ldyBVaW50OEFycmF5KFswXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMjU2J30sIG5ldyBVaW50OEFycmF5KFswXSkpOwogfSku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxk
QmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzZlMzQwYjlj
ZmZiMzdhOTg5Y2E1NDRlNmJiNzgwYTJjNzg5MDFkM2ZiMzM3Mzg3Njg1MTFhMzA2MTdhZmEwMWQn
Iik7CiAKICAgICBkZWJ1ZygiU0hBMjU2IG9mIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5
LCAxMF0iKTsKICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5LCAxMF0pOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFt
ZTogJ3NoYS0yNTYnfSwgW2RhdGFdKTsKLX0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAg
ZGlnZXN0ID0gcmVzdWx0OwotICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBVaW50
OEFycmF5KGRpZ2VzdCkpIiwgIic3OGE2MjczMTAzZDE3YzM5YTBiNjEyNmUyMjZjZWM3MGUzMzMz
N2Y0YmM2YTM4MDY3NDAxYjU0YTMzZTc4ZWFkJyIpOwotCi0gICAgZGVidWcoIlNIQTI1NiBvZiBb
bmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoNSwgNiwgNywg
OCwgOSwgMTBdKV0iKTsKLSAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdz
aGEtMjU2J30sIFtuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNF0pLCBuZXcgVWludDhBcnJh
eShbNSwgNiwgNywgOCwgOSwgMTBdKV0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2Vz
dCh7bmFtZTogJ3NoYS0yNTYnfSwgZGF0YSk7CiB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewog
ICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgiYnl0ZXNUb0hleFN0cmluZyhuZXcg
VWludDhBcnJheShkaWdlc3QpKSIsICInNzhhNjI3MzEwM2QxN2MzOWEwYjYxMjZlMjI2Y2VjNzBl
MzMzMzdmNGJjNmEzODA2NzQwMWI1NGEzM2U3OGVhZCciKTsKSW5kZXg6IExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvc2hhLTM4NC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU5Mzc3KQor
KysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw4ICs5LDYgQEAgU0hBMzg0IG9mIFsweDBdCiBQQVNTIGJ5dGVzVG9IZXhT
dHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkgaXMgJ2JlYzAyMWI0ZjM2OGUzMDY5MTM0ZTAx
MmMyYjQzMDcwODNkM2E5YmRkMjA2ZTI0ZTVmMGQ4NmUxM2Q2NjM2NjU1OTMzZWMyYjQxMzQ2NTk2
NjgxN2E5YzIwOGExMTcxNycKIFNIQTM4NCBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSwgMTBdCiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkgaXMg
Jzg5YmZjZjU2OWFlNGFmNzE4NTEwZGE3OGM2NzQxNDEwOWY1NzM5YmI1YzQwZDUxYzljOGM1MGUy
YjJjZWU4NmYyZjgwYzhiOWQ2OGY3YzAxMjAxYTA3MTQ1NzJmZTYwMicKLVNIQTM4NCBvZiBbbmV3
IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoNSwgNiwgNywgOCwg
OSwgMTBdKV0KLVBBU1MgYnl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSBp
cyAnODliZmNmNTY5YWU0YWY3MTg1MTBkYTc4YzY3NDE0MTA5ZjU3MzliYjVjNDBkNTFjOWM4YzUw
ZTJiMmNlZTg2ZjJmODBjOGI5ZDY4ZjdjMDEyMDFhMDcxNDU3MmZlNjAyJwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9j
cnlwdG8vc3VidGxlL3NoYS0zODQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL3NoYS0zODQuaHRtbAkocmV2aXNpb24gMTU5Mzc3KQorKysgTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9zaGEtMzg0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDI2ICsxNSwy
MCBAQCBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogUHJvbWlzZS5mdWxmaWxsKG51bGwpLnRoZW4o
ZnVuY3Rpb24oKSB7CiAgICAgZGVidWcoIlNIQTM4NCBvZiBbXSIpOwotICAgIHJldHVybiBjcnlw
dG8uc3VidGxlLmRpZ2VzdCgnc2hhLTM4NCcsIFtuZXcgVWludDhBcnJheShbXSldKTsKKyAgICBy
ZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0zODQnLCBuZXcgVWludDhBcnJheShbXSkp
OwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAg
c2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzM4
YjA2MGE3NTFhYzk2Mzg0Y2Q5MzI3ZWIxYjFlMzZhMjFmZGI3MTExNGJlMDc0MzRjMGNjN2JmNjNm
NmUxZGEyNzRlZGViZmU3NmY2NWZiZDUxYWQyZjE0ODk4Yjk1YiciKTsKIAogICAgIGRlYnVnKCJT
SEEzODQgb2YgWzB4MF0iKQotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTog
J3NoYS0zODQnfSwgW25ldyBVaW50OEFycmF5KFswXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMzg0J30sIG5ldyBVaW50OEFycmF5KFswXSkpOwogfSku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxk
QmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJ2JlYzAyMWI0
ZjM2OGUzMDY5MTM0ZTAxMmMyYjQzMDcwODNkM2E5YmRkMjA2ZTI0ZTVmMGQ4NmUxM2Q2NjM2NjU1
OTMzZWMyYjQxMzQ2NTk2NjgxN2E5YzIwOGExMTcxNyciKTsKIAogICAgIGRlYnVnKCJTSEEzODQg
b2YgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSIpOwogICAgIHZhciBkYXRhID0g
bmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7Ci0gICAg
cmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTM4NCd9LCBbZGF0YV0pOwot
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICBkaWdlc3QgPSByZXN1bHQ7Ci0gICAgc2hv
dWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzg5YmZj
ZjU2OWFlNGFmNzE4NTEwZGE3OGM2NzQxNDEwOWY1NzM5YmI1YzQwZDUxYzljOGM1MGUyYjJjZWU4
NmYyZjgwYzhiOWQ2OGY3YzAxMjAxYTA3MTQ1NzJmZTYwMiciKTsKLQotICAgIGRlYnVnKCJTSEEz
ODQgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUs
IDYsIDcsIDgsIDksIDEwXSldIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtu
YW1lOiAnc2hhLTM4NCd9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVp
bnQ4QXJyYXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRs
ZS5kaWdlc3Qoe25hbWU6ICdzaGEtMzg0J30sIGRhdGEpOwogfSkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJp
bmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzg5YmZjZjU2OWFlNGFmNzE4NTEwZGE3OGM2
NzQxNDEwOWY1NzM5YmI1YzQwZDUxYzljOGM1MGUyYjJjZWU4NmYyZjgwYzhiOWQ2OGY3YzAxMjAx
YTA3MTQ1NzJmZTYwMiciKTsKSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvc2hhLTUx
Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9z
aGEtNTEyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU5Mzc3KQorKysgTGF5b3V0VGVzdHMvY3J5
cHRvL3N1YnRsZS9zaGEtNTEyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDYgQEAgU0hBNTEyIG9mIFsweDBdCiBQQVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJy
YXkoZGlnZXN0KSkgaXMgJ2I4MjQ0ZDAyODk4MWQ2OTNhZjdiNDU2YWY4ZWZhNGNhZDYzZDI4MmUx
OWZmMTQ5NDJjMjQ2ZTUwZDkzNTFkMjI3MDRhODAyYTcxYzM1ODBiNjM3MGRlNGNlYjI5M2MzMjRh
ODQyMzM0MjU1N2Q0ZTVjMzg0MzhmMGUzNjkxMGVlJwogU0hBNTEyIG9mIFswLCAxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5LCAxMF0KIFBBU1MgYnl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJh
eShkaWdlc3QpKSBpcyAnOGZmYWVlMGNjY2MxNjI4NTFmYWYwNTFhZTM4NjY3ZWVmZDQyM2MwMTY0
YzUwMDU1ZjhhZGUwMGFmYzM3MDVlM2NkZWI5OTAwMDA0YjBlNDI2Y2E2NmFiNjNhYTNiOTliMDc1
MjczZjQ0ZmQzN2MyMmEzNTU1YzZmZDFmMzdjY2InCi1TSEE1MTIgb2YgW25ldyBVaW50OEFycmF5
KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldCi1Q
QVNTIGJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkgaXMgJzhmZmFlZTBj
Y2NjMTYyODUxZmFmMDUxYWUzODY2N2VlZmQ0MjNjMDE2NGM1MDA1NWY4YWRlMDBhZmMzNzA1ZTNj
ZGViOTkwMDAwNGIwZTQyNmNhNjZhYjYzYWEzYjk5YjA3NTI3M2Y0NGZkMzdjMjJhMzU1NWM2ZmQx
ZjM3Y2NiJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS01MTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS01MTIuaHRtbAkocmV2aXNpb24gMTU5
Mzc3KQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE1LDI2ICsxNSwyMCBAQCBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogUHJvbWlz
ZS5mdWxmaWxsKG51bGwpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgZGVidWcoIlNIQTUxMiBvZiBb
XSIpOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnc2hhLTUxMicsIFtuZXcgVWlu
dDhBcnJheShbXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS01MTIn
LCBuZXcgVWludDhBcnJheShbXSkpOwogfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKICAgICBk
aWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhTdHJpbmcobmV3IFVpbnQ4
QXJyYXkoZGlnZXN0KSkiLCAiJ2NmODNlMTM1N2VlZmI4YmRmMTU0Mjg1MGQ2NmQ4MDA3ZDYyMGU0
MDUwYjU3MTVkYzgzZjRhOTIxZDM2Y2U5Y2U0N2QwZDEzYzVkODVmMmIwZmY4MzE4ZDI4NzdlZWMy
ZjYzYjkzMWJkNDc0MTdhODFhNTM4MzI3YWY5MjdkYTNlJyIpOwogCiAgICAgZGVidWcoIlNIQTUx
MiBvZiBbMHgwXSIpCi0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hh
LTUxMid9LCBbbmV3IFVpbnQ4QXJyYXkoWzBdKV0pOworICAgIHJldHVybiBjcnlwdG8uc3VidGxl
LmRpZ2VzdCh7bmFtZTogJ3NoYS01MTInfSwgbmV3IFVpbnQ4QXJyYXkoWzBdKSk7CiB9KS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgewogICAgIGRpZ2VzdCA9IHJlc3VsdDsKICAgICBzaG91bGRCZSgi
Ynl0ZXNUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShkaWdlc3QpKSIsICInYjgyNDRkMDI4OTgx
ZDY5M2FmN2I0NTZhZjhlZmE0Y2FkNjNkMjgyZTE5ZmYxNDk0MmMyNDZlNTBkOTM1MWQyMjcwNGE4
MDJhNzFjMzU4MGI2MzcwZGU0Y2ViMjkzYzMyNGE4NDIzMzQyNTU3ZDRlNWMzODQzOGYwZTM2OTEw
ZWUnIik7CiAKICAgICBkZWJ1ZygiU0hBNTEyIG9mIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5LCAxMF0iKTsKICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0
LCA1LCA2LCA3LCA4LCA5LCAxMF0pOwotICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7
bmFtZTogJ3NoYS01MTInfSwgW2RhdGFdKTsKLX0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0g
ICAgZGlnZXN0ID0gcmVzdWx0OwotICAgIHNob3VsZEJlKCJieXRlc1RvSGV4U3RyaW5nKG5ldyBV
aW50OEFycmF5KGRpZ2VzdCkpIiwgIic4ZmZhZWUwY2NjYzE2Mjg1MWZhZjA1MWFlMzg2NjdlZWZk
NDIzYzAxNjRjNTAwNTVmOGFkZTAwYWZjMzcwNWUzY2RlYjk5MDAwMDRiMGU0MjZjYTY2YWI2M2Fh
M2I5OWIwNzUyNzNmNDRmZDM3YzIyYTM1NTVjNmZkMWYzN2NjYiciKTsKLQotICAgIGRlYnVnKCJT
SEE1MTIgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5
KDUsIDYsIDcsIDgsIDksIDEwXSldIik7Ci0gICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0
KHtuYW1lOiAnc2hhLTUxMid9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3
IFVpbnQ4QXJyYXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtNTEyJ30sIGRhdGEpOwogfSkudGhlbihmdW5jdGlvbihy
ZXN1bHQpIHsKICAgICBkaWdlc3QgPSByZXN1bHQ7CiAgICAgc2hvdWxkQmUoImJ5dGVzVG9IZXhT
dHJpbmcobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KSkiLCAiJzhmZmFlZTBjY2NjMTYyODUxZmFmMDUx
YWUzODY2N2VlZmQ0MjNjMDE2NGM1MDA1NWY4YWRlMDBhZmMzNzA1ZTNjZGViOTkwMDAwNGIwZTQy
NmNhNjZhYjYzYWEzYjk5YjA3NTI3M2Y0NGZkMzdjMjJhMzU1NWM2ZmQxZjM3Y2NiJyIpOwo=
</data>
<flag name="review"
          id="240205"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>