<?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>124335</bug_id>
          
          <creation_ts>2013-11-13 22:22:21 -0800</creation_ts>
          <short_desc>Implement RSASSA-PKCS1-v1_5 sign/verify</short_desc>
          <delta_ts>2013-11-14 10:59:06 -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>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950528</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-13 22:22:21 -0800</bug_when>
    <thetext>Implement RSASSA-PKCS1-v1_5 sign/verify</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950530</commentid>
    <comment_count>1</comment_count>
      <attachid>216901</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-13 22:37:31 -0800</bug_when>
    <thetext>Created attachment 216901
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950531</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-13 22:38:27 -0800</bug_when>
    <thetext>Attachment 216901 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/rsassa-pkcs1-v1_5-sign-verify-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-sign-verify.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoDigest.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA1Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoDigestMac.cpp&apos;]&quot; exit_code: 1
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:38:  Missing spaces around /  [whitespace/operators] [3]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:45:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:50:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:51:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:52:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:53:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:54:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:91:  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:124:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:130:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 17 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950532</commentid>
    <comment_count>3</comment_count>
      <attachid>216902</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-13 23:04:25 -0800</bug_when>
    <thetext>Created attachment 216902
with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950533</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-13 23:05:25 -0800</bug_when>
    <thetext>Attachment 216902 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/rsassa-pkcs1-v1_5-sign-verify-expected.txt&apos;, u&apos;LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-sign-verify.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp&apos;, u&apos;Source/WebCore/crypto/CryptoDigest.h&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp&apos;, u&apos;Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA1Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp&apos;, u&apos;Source/WebCore/crypto/mac/CryptoDigestMac.cpp&apos;]&quot; exit_code: 1
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:38:  Missing spaces around /  [whitespace/operators] [3]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/crypto/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:91:  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]
Total errors found: 10 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950746</commentid>
    <comment_count>5</comment_count>
      <attachid>216902</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-14 10:24:28 -0800</bug_when>
    <thetext>Comment on attachment 216902
with style fixes

Clearing flags on attachment: 216902

Committed r159292: &lt;http://trac.webkit.org/changeset/159292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950747</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-14 10:24:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950765</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-14 10:59:06 -0800</bug_when>
    <thetext>Build fix in &lt;http://trac.webkit.org/r159296&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216901</attachid>
            <date>2013-11-13 22:37:31 -0800</date>
            <delta_ts>2013-11-13 23:04:25 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>pkcsSignVerify.txt</filename>
            <type>text/plain</type>
            <size>59279</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTExLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSU0FTU0Et
UEtDUzEtdjFfNSBzaWduL3ZlcmlmeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0MzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWdu
LXZlcmlmeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZGVkIG5ldyBmaWxlcywgcmVtb3ZlZCBNYWMgU0hBIGFsZ29yaXRobSBmaWxlcy4KKwor
ICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlm
eSk6CisgICAgICAgIEltcGxlbWVudGVkLiBUaGVzZSB0YWtlIHR3byBzdGVwcywgZmlyc3QgYSBk
aWdlc3QgaXMgY29tcHV0ZWQsIGFuZCB0aGVuIGl0J3Mgc2lnbmVkLgorCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Rp
Z2VzdE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvRGlnZXN0OjpDcnlw
dG9EaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgIEFkZGVkIGEgY3Jvc3MtcGxhdGZvcm0gaW50
ZXJmYWNlIGFuZCBNYWMgaW1wbGVtZW50YXRpb24gdG8gY29tcHV0ZSBhIGRpZ2VzdC4gSXQKKyAg
ICAgICAgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBpdCBvdXRzaWRlIFdlYkN5cHRvIGlmIHdl
IG5lZWQgdG8gKHBlcmhhcHMgbWVyZ2Ugd2l0aCAKKyAgICAgICAgV1RGIFNIQS0xIGNsYXNzKS4K
KyAgICAgICAgVGhlIE1BYyBpbXBsZW1lbnRhdGlvbiBpcyBraW5kIG9mIHVnbHksIGJ1dCB0aGlz
IGVuY2Fwc3VsYXRlcyB0aGUgdWdsaW5lc3MuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcDogKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6
OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmNwcDogKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOiAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyLmNwcDogKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0
KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEzODRN
YWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyTWFjLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgVGhlc2UgYXJlIGFsbCBjcm9zcy1wbGF0Zm9y
bSBub3cuCisKIDIwMTMtMTEtMTMgIFZpY3RvciBDb3N0YW4gIDxjb3N0YW5AZ21haWwuY29tPgog
CiAgICAgICAgIEJsb2IgY29uc3RydWN0b3IgYWNjZXB0cyBhIHNlcXVlbmNlIChhcnJheS1saWtl
IG9iamVjdCkgYXMgZmlyc3QgYXJnLiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1OTI3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTUzMiw3ICs1NTMyLDYgQEAKIAkJRTEyNDc0ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1
dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTI0NzQ4MzEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGljYXRpb25DbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MTI1RjgyQjE4MjJDRkVDMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgyOTE4MjJDRkVD
MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgKi87IH07CiAJCUUxMjVGODJDMTgy
MkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgyQTE4MjJDRkVDMDBEODRDRDkgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMS5oICovOyB9OwotCQlFMTI1RjgyRTE4MjJDRkZGMDBEODRDRDkg
LyogQ3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgyRDE4MjJDRkZGMDBEODRDRDkgLyogQ3J5cHRvQWxn
b3JpdGhtU0hBMU1hYy5jcHAgKi87IH07CiAJCUUxMjVGODMxMTgyMkYxMUIwMEQ4NENEOSAvKiBD
cnlwdG9BbGdvcml0aG1ITUFDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxMjVGODJGMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1I
TUFDLmNwcCAqLzsgfTsKIAkJRTEyNUY4MzIxODIyRjExQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29y
aXRobUhNQUMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxMjVGODMwMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFDLmggKi87IH07
CiAJCUUxMjVGODM1MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODMzMTgyMkYxOEEw
MEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmNwcCAqLzsgfTsKQEAgLTU2MjYsMTAgKzU2MjUsNiBA
QAogCQlFMTg3MDU2MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODcwNTYyMTZFNTRBMEQw
MDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oICovOyB9OwogCQlFMTg3NzJGMTEyNkUyNjI5MDAz
REQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLzsg
fTsKIAkJRTE5NzI3MTYxODIwNTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTcyNzE1MTgyMDU0OUUw
MDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggKi87IH07Ci0JCUUxOUFDM0UyMTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAgKi87IH07Ci0JCUUxOUFDM0UzMTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzREYxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAgKi87IH07Ci0JCUUxOUFDM0U0MTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTAxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAgKi87IH07Ci0JCUUxOUFDM0U1MTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTExODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAgKi87IH07CiAJCUUxOUFDM0VFMTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTYxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTIyNC5jcHAgKi87IH07CiAJCUUxOUFDM0VGMTgyNERDNzkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOUFDM0U3MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyMjQuaCAqLzsgfTsKIAkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTlBQzNFODE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcCAqLzsgfTsKQEAgLTU3MjEsNiArNTcxNiw4IEBACiAJCUUxRjgwQjhBMTgzMTcyQTIwMDc4
ODVDMyAvKiBKU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCODkxODMxNzJBMjAwNzg4NUMzIC8qIEpTQ3J5
cHRvS2V5UGFpckN1c3RvbS5jcHAgKi87IH07CiAJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAv
KiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5j
cHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhD
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsKKwkJRTFGRTEzNjQx
ODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0TWFjLmNwcCAqLzsgfTsKKwkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9Owog
CQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTIwRjAxMjU1QjAw
ODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFk
R2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgKi87
IH07CiAJCUUxRkY4RjVGMTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNUQxODA3NDQy
MTAwMTMyNjc0IC8qIFN1YnRsZUNyeXB0by5jcHAgKi87IH07CkBAIC0xMjYyMiw3ICsxMjYxOSw2
IEBACiAJCUUxMjQ3NDgzMTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI1RjgyOTE4MjJDRkVDMDBEODRDRDkg
LyogQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEExLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTEyNUY4MkExODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1RjgyRDE4MjJDRkZGMDBEODRDRDkgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEExTWFjLmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdv
cml0aG1TSEExTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4MkYx
ODIyRjExQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUhNQUMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjVGODMwMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9B
bGdvcml0aG1ITUFDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobUhNQUMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4MzMxODIy
RjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ3J5cHRvS2V5SE1BQy5jcHA7IHBhdGggPSBrZXlzL0NyeXB0b0tleUhN
QUMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MjIsMTAgKzEyNzE4LDYg
QEAKIAkJRTE4NzA1NjIxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1haW5UaHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTcyNzE1MTgyMDU0OUUwMDU5MkQ1MSAvKiBD
cnlwdG9LZXlUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tl
eVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE5QUMzREUxODI0REM2OTAw
MzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwOyBwYXRoID0g
bWFjL0NyeXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUxOUFDM0RGMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZN
YWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2TWFjLmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTlBQzNFMDE4MjREQzY5MDAzNDk0MjYg
LyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTE5QUMzRTExODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEE1
MTJNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOUFDM0U2MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEEyMjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTE5QUMzRTcxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5QUMzRTgxODI0REM3OTAwMzQ5NDI2IC8q
IENyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTI4MjYsNiArMTI4MTgsOCBAQAogCQlFMUY4MEI4OTE4MzE3MkEyMDA3ODg1QzMg
LyogSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4NUMz
IC8qIEpTQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NyeXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFGRTEzNjIx
ODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9EaWdlc3RNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0
b0RpZ2VzdE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRkUxMzY2MTgz
NDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
RkY1N0EyMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR2xvYmFs
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY4RjVDMTgwNzM2NEIw
MDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN1YnRsZUNyeXB0by5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDM1NCwxNCArMjAzNDgsMTAgQEAKIAkJCQlFMTI1
Rjg0MzE4MjQyNUM5MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAgKi8s
CiAJCQkJRTEyNUY4MzcxODIyRjFFQjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUhNQUNNYWMu
Y3BwICovLAogCQkJCUUxQkI4NEFDMTgyMkNBNzQwMDUyNTA0MyAvKiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeU1hYy5jcHAgKi8sCi0JCQkJRTEyNUY4MkQxODIyQ0ZGRjAwRDg0Q0Q5IC8qIENyeXB0
b0FsZ29yaXRobVNIQTFNYWMuY3BwICovLAogCQkJCUUxQzI2NkQ2MTgzMTdBQjQwMDNGOEIzMyAv
KiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgKi8sCi0JCQkJRTE5QUMz
REUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAgKi8sCi0J
CQkJRTE5QUMzREYxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5j
cHAgKi8sCi0JCQkJRTE5QUMzRTAxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNI
QTM4NE1hYy5jcHAgKi8sCi0JCQkJRTE5QUMzRTExODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTUxMk1hYy5jcHAgKi8sCiAJCQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8q
IENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJRTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENy
eXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdE1hYy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDU0NSw2ICsyMDUzNSw3IEBACiAJCQkJRTFDNjU3MjYxODE2
RjlGRTAwMjU2Q0REIC8qIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCAqLywKIAkJCQlFMUZG
OEY2QTE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovLAog
CQkJCUUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5o
ICovLAorCQkJCUUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLywK
IAkJCQlFMTU3QThEQzE4MTcyQzJDMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmlkbCAqLywKIAkJCQlF
MTU3QThFMjE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCAqLywKIAkJCQlFMTU3QThF
MzE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmggKi8sCkBAIC0yMjg3OSw2ICsyMjg3MCw3
IEBACiAJCQkJMkVERjM2OUYxMjJDOTRDODAwMkY3RDRFIC8qIEZpbGVFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMDk5RDA5MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRB
cnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODhBOTA1MTc1NTNDRDcwMDBD
NzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFGRTEzNjcxODM0
M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNE
QkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3NkQ2Qzg2MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTY5NSw3ICsyNTY4Nyw2IEBACiAJCQkJMzdDMjM2MTAxMDk3RUU3NzAwRUY5Rjcy
IC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0MyMzgy
MjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZGRTExNTBFNkUxREE3MDBCRjYwODggLyogQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxOUFDM0UzMTgyNERDNjkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlE
REMwOTlFNjQ5MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDhFMTJCMDI2RjcwMEMxQTM1OSAvKiBDb25lLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjYzOTAsNyArMjYzODEsNiBAQAogCQkJCUQ2NjgxN0ZBMTY2
RkU2RDcwMEZBMDdCNCAvKiBIVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MTM2OUQ3MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTlCQzZDMjFDMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTI1RjgyRTE4MjJDRkZG
MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODcxREMyOTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFRpdGxlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzdCMzg3NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA3NTY4QjE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRy
YWNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjY5LDcgKzI3MjU5LDYgQEAKIAkJ
CQlGREIxNzAwNTE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg1MDMxQjQ5MEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM2RjA5MDBFMTQzMjdCNjEwMDY4NTg0OSAvKiBN
dXRhdGlvbk9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxOUFDM0U1MTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDZFNTI4QTMxNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFDM0Y5MTgyNTY2RjcwMDM0OTQyNiAvKiBD
cnlwdG9LZXlNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQy
ODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNzY0MCw3ICsyNzYyOSw2IEBACiAJCQkJOTc2RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNl
Y3VyaXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0QwRTBGQTBFOTcyQzM1MDAy
NjVERUEgLyogU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJEQTQx
NDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUUxOUFDM0UyMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxRjRGRkQwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRl
ZEZvbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTJFMEQwMDZDMUQwMEVGNkYy
NiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0QjRCQjMxNDE2
NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4
MTUwLDYgKzI4MTM4LDcgQEAKIAkJCQkzMTI4OEU3NDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0
Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjcxOUM0MDE3MjM4Q0FF
MDAyMkRFMzQgLyogV2ViS2l0Q1NTTWF0RnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzhFMDkxMTE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDVm9pZFJlcXVlc3RJbXBsLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3RNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8q
IFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjRCRjc3QzE1Q0MzQkFG
MDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QUE2MUNGRjE0NEQ1OTVCMDBGMzczNTAgLyogV2ViS2l0Q1NTUmVnaW9uUnVsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI4MjIwLDcgKzI4MjA5LDYgQEAKIAkJCQk1OUMyODA0NTEzOERD
MjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzQ2
MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzhEMDdDRTE0NUExMDM3MDA5NjkwOEQgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTE5QUMzRTQxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTM4NE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTM2QTAwQzExMzREQkQy
MDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNERkQ0OEYwRTMwNTI5MDAwOUQxMEFEIC8qIFhNTEh0dHBSZXF1ZXN0
VXBsb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAv
KiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFj
LmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTgg
KzI4LDEzOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKyNp
bmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpCisjaWYg
X19oYXNfaW5jbHVkZSg8Q29tbW9uQ3J5cHRvL0NvbW1vblJTQUNyeXB0b3IuaD4pCisjaW5jbHVk
ZSA8Q29tbW9uQ3J5cHRvL0NvbW1vblJTQUNyeXB0b3IuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNp
Zm5kZWYgX0NDX1JTQUNSWVBUT1JfSF8KK2VudW0geworCWNjUEtDUzFQYWRkaW5nCQk9IDEwMDEK
K307Cit0eXBlZGVmIHVpbnQzMl90IENDQXN5bW1ldHJpY1BhZGRpbmc7CisKK2VudW0geworCWtD
Q0RpZ2VzdFNIQTEJCQkJPSA4LAorCWtDQ0RpZ2VzdFNIQTIyNAkJCQk9IDksCisJa0NDRGlnZXN0
U0hBMjU2CQkJCT0gMTAsCisJa0NDRGlnZXN0U0hBMzg0CQkJCT0gMTEsCisJa0NDRGlnZXN0U0hB
NTEyCQkJCT0gMTIsCit9OwordHlwZWRlZiB1aW50MzJfdCBDQ0RpZ2VzdEFsZ29yaXRobTsKKwor
ZW51bSB7CisgICAga0NDTm90VmVyaWZpZWQgICAgPSAtNDMwNgorfTsKKyNlbmRpZgorCitleHRl
cm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JTaWduKENDUlNBQ3J5cHRvclJlZiBw
cml2YXRlS2V5LCBDQ0FzeW1tZXRyaWNQYWRkaW5nIHBhZGRpbmcsIGNvbnN0IHZvaWQgKmhhc2hU
b1NpZ24sIHNpemVfdCBoYXNoU2lnbkxlbiwgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0VHlwZSwg
c2l6ZV90IHNhbHRMZW4sIHZvaWQgKnNpZ25lZERhdGEsIHNpemVfdCAqc2lnbmVkRGF0YUxlbik7
CitleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JWZXJpZnkoQ0NSU0FDcnlw
dG9yUmVmIHB1YmxpY0tleSwgQ0NBc3ltbWV0cmljUGFkZGluZyBwYWRkaW5nLCBjb25zdCB2b2lk
ICpoYXNoLCBzaXplX3QgaGFzaExlbiwgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0VHlwZSwgc2l6
ZV90IHNhbHRMZW4sIGNvbnN0IHZvaWQgKnNpZ25lZERhdGEsIHNpemVfdCBzaWduZWREYXRhTGVu
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mLCBzdGQ6OnVuaXF1
ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykKK3N0YXRpYyBib29sIGdl
dENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhh
c2hGdW5jdGlvbiwgQ0NEaWdlc3RBbGdvcml0aG0mIGFsZ29yaXRobSkKK3sKKyAgICBzd2l0Y2gg
KGhhc2hGdW5jdGlvbikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzE6CisgICAgICAgIGFsZ29yaXRobSA9IGtDQ0RpZ2VzdFNIQTE7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAg
ICAgYWxnb3JpdGhtID0ga0NDRGlnZXN0U0hBMjI0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgIGFsZ29y
aXRobSA9IGtDQ0RpZ2VzdFNIQTI1NjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICBhbGdvcml0aG0gPSBr
Q0NEaWdlc3RTSEEzODQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgYWxnb3JpdGhtID0ga0NDRGlnZXN0
U0hBNTEyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRh
dGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FTc2FQYXJhbXMmIHJzYVNTQVBhcmFtZXRlcnMgPSB0b0NyeXB0b0FsZ29yaXRo
bVJzYVNzYVBhcmFtcyhwYXJhbWV0ZXJzKTsKKworICAgIGlmICghaXNDcnlwdG9LZXlSU0Eoa2V5
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNvbnN0IENyeXB0b0tleVJTQSYgcnNhS2V5ID0gdG9DcnlwdG9LZXlSU0Eoa2V5
KTsKKworICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKKyAgICBpZiAoIWdl
dENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShyc2FTU0FQYXJhbWV0ZXJzLmhhc2gsIGRpZ2Vz
dEFsZ29yaXRobSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHJzYVNTQVBhcmFtZXRlcnMuaGFzaCk7CisgICAgaWYg
KCFkaWdlc3QpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGRhdGEuc2l6ZSgpOyAr
K2kpCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNv
bmQpOworCisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGRpZ2VzdERhdGEgPSBkaWdlc3QtPmNv
bXB1dGVIYXNoKCk7CisKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gc2lnbmF0dXJlKDUxMik7
CisgICAgc2l6ZV90IHNpZ25hdHVyZVNpemUgPSBzaWduYXR1cmUuc2l6ZSgpOworCisgICAgQ0ND
cnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5
KCksIGNjUEtDUzFQYWRkaW5nLCBkaWdlc3REYXRhLmRhdGEoKSwgZGlnZXN0RGF0YS5zaXplKCks
IGRpZ2VzdEFsZ29yaXRobSwgMCwgc2lnbmF0dXJlLmRhdGEoKSwgJnNpZ25hdHVyZVNpemUpOwor
ICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KG51bGxwdHIpOworICAg
IH0KKworICAgIHNpZ25hdHVyZS5yZXNpemUoc2lnbmF0dXJlU2l6ZSk7CisgICAgcHJvbWlzZS0+
ZnVsZmlsbChzaWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENy
eXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIC8qc2lnbmF0dXJlKi8sIGNvbnN0
IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgLypkYXRhKi8sIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9taXNlV3JhcHBlcj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwg
c3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIGNvbnN0IENyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtcyYgcnNhU1NBUGFyYW1ldGVycyA9IHRvQ3J5cHRvQWxnb3JpdGhtUnNh
U3NhUGFyYW1zKHBhcmFtZXRlcnMpOworCisgICAgaWYgKCFpc0NyeXB0b0tleVJTQShrZXkpKSB7
CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY29uc3QgQ3J5cHRvS2V5UlNBJiByc2FLZXkgPSB0b0NyeXB0b0tleVJTQShrZXkpOwor
CisgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOworICAgIGlmICghZ2V0Q29t
bW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHJzYVNTQVBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxn
b3JpdGhtKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUocnNhU1NBUGFyYW1ldGVycy5oYXNoKTsKKyAgICBpZiAoIWRp
Z2VzdCkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gZGF0YS5zaXplKCk7ICsraSkK
KyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7
CisKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZGlnZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0
ZUhhc2goKTsKKworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JWZXJp
ZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkaWdlc3REYXRhLmRhdGEo
KSwgZGlnZXN0RGF0YS5zaXplKCksIGRpZ2VzdEFsZ29yaXRobSwgMCwgc2lnbmF0dXJlLmZpcnN0
LCBzaWduYXR1cmUuc2Vjb25kKTsKKyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcHJvbWlzZS0+
ZnVsZmlsbCh0cnVlKTsKKyAgICBlbHNlIGlmIChzdGF0dXMgPT0ga0NDTm90VmVyaWZpZWQgfHwg
a0NDRGVjb2RlRXJyb3IpIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ2NDk4Mj4gQ0NSU0FDcnlwdG9y
VmVyaWZ5IHJldHVybnMga0NDRGVjb2RlRXJyb3IgaW5zdGVhZCBvZiBrQ0NOb3RWZXJpZmllZCBz
b21ldGltZXMKKyAgICAgICAgcHJvbWlzZS0+ZnVsZmlsbChmYWxzZSk7CisgICAgZWxzZQorICAg
ICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9EaWdlc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3J5cHRvRGlnZXN0X2gKKyNkZWZp
bmUgQ3J5cHRvRGlnZXN0X2gKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9EaWdlc3QpOworcHVibGljOgorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcik7CisgICAgfkNyeXB0b0RpZ2VzdCgpOworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2
b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGNv
bXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6CisgICAgQ3J5cHRvRGlnZXN0KCk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCisjZW5k
aWYgLy8gQ3J5cHRvRGlnZXN0X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9DcnlwdG9EaWdlc3QuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAi
Q3J5cHRvRGlnZXN0LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6c19uYW1l
ID0gInNoYS0xIjsKQEAgLTUwLDYgKzUzLDE5IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
Q3J5cHRvQWxnb3JpdGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCit2b2lkIENyeXB0
b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8
UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKTsKKyAgICBpZiAoIWRpZ2VzdCkgeworICAgICAg
ICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisK
KyAgICBwcm9taXNlLT5mdWxmaWxsKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3Bw
CShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNv
bnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6c19uYW1lID0gInNoYS0yMjQi
OwpAQCAtNTAsNiArNTMsMTkgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZl
Y3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VX
cmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMjI0KTsKKyAgICBpZiAoIWRpZ2VzdCkgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ZGlnZXN0LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBw
cm9taXNlLT5mdWxmaWxsKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCShyZXZp
c2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyNTYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNo
YXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6c19uYW1lID0gInNoYS0yNTYiOwpAQCAt
NTAsNiArNTMsMTkgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAog
ICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxD
cnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVy
PiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMjU2KTsKKyAgICBpZiAoIWRpZ2VzdCkgeworICAgICAgICBwcm9taXNlLT5y
ZWplY3QobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZGlnZXN0
LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBwcm9taXNl
LT5mdWxmaWxsKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCShyZXZpc2lvbiAx
NTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEzODQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBFTkFC
TEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIGNv
bnN0IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6c19uYW1lID0gInNoYS0zODQiOwpAQCAtNTAsNiAr
NTMsMTkgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJl
dHVybiBzX2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdl
c3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9P
cGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9t
aXNlLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMzg0KTsKKyAgICBpZiAoIWRpZ2VzdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3Qo
bnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZGlnZXN0LT5hZGRC
eXRlcyhkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBwcm9taXNlLT5mdWxm
aWxsKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCShyZXZpc2lvbiAxNTkyNzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1
MTIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IENy
eXB0b0FsZ29yaXRobVNIQTUxMjo6c19uYW1lID0gInNoYS01MTIiOwpAQCAtNTAsNiArNTMsMTkg
QEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJldHVybiBz
X2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRp
b25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
NTEyKTsKKyAgICBpZiAoIWRpZ2VzdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhk
YXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKGRp
Z2VzdC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1T
SEExTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVNIQTFNYWMuY3BwCShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMS5oIgotCi0jaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCi0K
LSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9u
Q3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3Rv
cjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFw
cGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hh
cj4gcmVzdWx0KENDX1NIQTFfRElHRVNUX0xFTkdUSCk7Ci0KLSAgICBDQ19TSEExX0NUWCBjb250
ZXh0OwotICAgIENDX1NIQTFfSW5pdCgmY29udGV4dCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
MCwgc2l6ZSA9IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBDQ19TSEExX1Vw
ZGF0ZSgmY29udGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCi0gICAgQ0Nf
U0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCAmY29udGV4dCk7Ci0KLSAgICBwcm9taXNlLT5mdWxm
aWxsKHJlc3VsdCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0TWFjLmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgiCi0KLSNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQot
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25D
cnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0
b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3Jh
cHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IHJlc3VsdChDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7Ci0KLSAgICBDQ19TSEEyNTZfQ1RY
IGNvbnRleHQ7IC8vIFNhbWUgY29udGV4dCBzdHJ1Y3QgaXMgdXNlZCBmb3IgU0hBMjI0IGFuZCBT
SEEyNTYuCi0gICAgQ0NfU0hBMjI0X0luaXQoJmNvbnRleHQpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgQ0NfU0hB
MjI0X1VwZGF0ZSgmY29udGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCi0g
ICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksICZjb250ZXh0KTsKLQotICAgIHByb21p
c2UtPmZ1bGZpbGwocmVzdWx0KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9D
UllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNI
QTI1Nk1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwCShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCIKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQotCi0jaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFBy
b21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBWZWN0b3I8dW5z
aWduZWQgY2hhcj4gcmVzdWx0KENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKLQotICAgIENDX1NI
QTI1Nl9DVFggY29udGV4dDsKLSAgICBDQ19TSEEyNTZfSW5pdCgmY29udGV4dCk7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBDQ19TSEEyNTZfVXBkYXRlKCZjb250ZXh0LCBkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNl
Y29uZCk7Ci0KLSAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgJmNvbnRleHQpOwot
Ci0gICAgcHJvbWlzZS0+ZnVsZmlsbChyZXN1bHQpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAJKHJldmlzaW9uIDE1OTI3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTM4NC5oIgotCi0jaWYgRU5BQkxF
KFNVQlRMRV9DUllQVE8pCi0KLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKLSNpbmNsdWRlIDxD
b21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6OnVu
aXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQotewotICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiByZXN1bHQoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwot
Ci0gICAgQ0NfU0hBNTEyX0NUWCBjb250ZXh0OyAvLyBTYW1lIGNvbnRleHQgc3RydWN0IGlzIHVz
ZWQgZm9yIFNIQTM4NCBhbmQgU0hBNTEyLgotICAgIENDX1NIQTM4NF9Jbml0KCZjb250ZXh0KTsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIENDX1NIQTM4NF9VcGRhdGUoJmNvbnRleHQsIGRhdGFbaV0uZmlyc3QsIGRh
dGFbaV0uc2Vjb25kKTsKLQotICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCAmY29u
dGV4dCk7Ci0KLSAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdCk7Ci19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcAkocmV2aXNpb24gMTU5
Mjc0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEE1MTJN
YWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgiCi0KLSNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2lu
Y2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEs
IHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYp
Ci17Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHJlc3VsdChDQ19TSEE1MTJfRElHRVNUX0xF
TkdUSCk7Ci0KLSAgICBDQ19TSEE1MTJfQ1RYIGNvbnRleHQ7Ci0gICAgQ0NfU0hBNTEyX0luaXQo
JmNvbnRleHQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSgmY29udGV4dCwgZGF0YVtp
XS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCi0gICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5k
YXRhKCksICZjb250ZXh0KTsKLQotICAgIHByb21pc2UtPmZ1bGZpbGwocmVzdWx0KTsKLX0KLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RNYWMuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RNYWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNp
bmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgYWxnb3JpdGhtOworICAgIHZvaWQqIGNjQ29udGV4dDsKK307CisKK2lubGluZSBD
Q19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQor
eworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citp
bmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hB
MjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCog
dG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNT
RVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
Mzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNj
Q29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0
b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRo
bSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0
b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0
Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBz
d2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgorICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8zODQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENy
eXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtKQor
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGln
ZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisg
ICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8xOiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFf
Q1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAg
ICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAg
IH0KKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6IHsKKyAgICAg
ICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0
X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZf
Q1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250
ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQg
PSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4
dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1
MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsK
KyAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7
CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30K
Kwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3Qg
bGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0
ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0Ogor
ICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
LCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1
NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAg
IENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0
LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4
dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworVmVj
dG9yPHVuc2lnbmVkIGNoYXI+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29y
aXRobSkgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
MV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
MjQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAg
ICAgICBDQ19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VT
VF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEy
NTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUo
Q0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAg
IHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1
MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdE1hYy5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Mjc1KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MTEtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFJTQVNTQS1QS0NTMS12MV81IHNpZ24vdmVyaWZ5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3Mx
LXYxXzUtc2lnbi12ZXJpZnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8v
c3VidGxlL3JzYXNzYS1wa2NzMS12MV81LXNpZ24tdmVyaWZ5Lmh0bWw6IEFkZGVkLgorCiAyMDEz
LTExLTEzICBWaWN0b3IgQ29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBCbG9i
IGNvbnN0cnVjdG9yIGFjY2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZp
cnN0IGFyZy4KSW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYx
XzUtc2lnbi12ZXJpZnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJpZnktZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFf
NS1zaWduLXZlcmlmeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBA
QAorVGVzdCBpbXBvcnRpbmcgYW4gUlNBIGtleSBmb3IgUlNBU1NBLVBLQ1MxLXYxXzUuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbXBvcnRpbmcgYSBwdWJsaWMga2V5Li4uCisK
K0ltcG9ydGluZyBhIHByaXZhdGUga2V5Li4uCisKK1NpZ25pbmcgc29tZSB0ZXh0Li4uCitQQVNT
IGJ5dGVBcnJheVRvSGV4U3RyaW5nKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpIGlzICdbMGYg
ZDkgYTggYWUgZjQgY2MgMTggNzYgYzAgYjcgNjIgNTQgNTMgMzYgYzYgZDEgZmIgMzEgNWEgZTEg
NmEgZTQgYjUgZTQgYmYgMzQgZDMgODQgZDggNTggNWUgYTcgYTAgMWUgNzYgZWEgMDkgZWUgN2Yg
N2UgZTggZDEgYzEgMjIgZTcgZGQgMTUgYjcgYzkgNGEgNTcgM2IgMmEgYTAgNzIgMDMgZTggZDEg
M2IgYzYgZmQgMTYgMTUgNmMgZDggZTUgZjAgYzEgNWEgMTUgZGMgY2IgNjIgZDEgNTIgMTIgN2Yg
Y2EgMDkgODggMmYgYjUgM2IgYzMgZTYgMGEgYjUgODYgZDEgNWIgOTUgY2YgNDEgMWUgM2EgYWIg
NGEgMWMgMjMgMWEgN2UgOTEgYWEgYjAgOWUgZTMgZDQgYjEgM2QgMTEgZTkgNzUgMDUgZGQgZmYg
NzcgNjggMzQgNzAgZGEgNTEgMGUgZTcgNmUgOGIgZDUgMzAgYzUgNmEgODUgZjkgMDEgNjIgNmEg
NWEgNzEgMGYgNzEgNmYgMTEgM2QgZmUgOWMgZjYgYzQgNzMgZWUgMTYgZmEgMjQgOGEgZWEgMzQg
ODAgYTEgMDMgM2EgYmUgMzAgZjQgYzEgMjQgMzIgODkgYTYgNjEgZTYgNGQgNzggMTggYjUgNTYg
OTggMjggMDYgODggMDkgNzEgMzUgOTYgOGMgNmQgNGIgMDIgOTQgOTYgZDggNWMgYWIgMmEgNjcg
ZTQgNjkgNjcgMzcgNzggMWYgNzAgZTQgMzkgMmMgN2QgZjcgMWIgYmQgNmMgOTIgNDYgNTkgNDcg
ZjAgMjkgYTEgZGUgNDggMTYgMGEgY2UgZDEgMWIgNTcgMjEgYjEgY2QgMjUgMDMgOWYgZTIgYzEg
NmMgMmIgMzggZGUgNzMgZGYgM2IgOWEgODMgZTMgZWEgNzUgNWYgZDAgY2YgZTUgMWMgYTAgNmIg
NjEgZmEgZGYgNmQgODQgNjcgN2YgOTVdJworCitWZXJpZnlpbmcgdGhlIHNpZ25hdHVyZS4uLgor
UEFTUyB2ZXJpZmljYXRpb25SZXN1bHQgaXMgdHJ1ZQorCitWZXJpZnlpbmcgYSBiYWQgc2lnbmF0
dXJlLi4uCitQQVNTIHZlcmlmaWNhdGlvblJlc3VsdCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJpZnkt
ZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAj
IwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81
LXNpZ24tdmVyaWZ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWduLXZlcmlmeS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWduLXZlcmlmeS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgaW1wb3J0aW5nIGFuIFJTQSBr
ZXkgZm9yIFJTQVNTQS1QS0NTMS12MV81LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
aWYgKCF3aW5kb3cuc3VidGxlKQorICAgIHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNy
eXB0by53ZWJraXRTdWJ0bGU7CisKK3ZhciBleHRyYWN0YWJsZSA9IHRydWU7CisKK3ZhciBwdWJs
aWNLZXlKU09OID0geworICAgIGt0eTogIlJTQSIsCisgICAgYWxnOiAiUlMyNTYiLAorICAgIG46
IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4VG9BcnJheUJ1ZmZlcigiQURDMDk0MEFGRUNFNzM1MUQ1
NkE2RDQzMjIxMEIzQUE0OUQzODU2NkIwM0E5RjEwMkU0RjE5OEIyREE5RDc0MDcyOEQwMTQyNkEz
QTA1OEIyQjgwNUE1RjkxRDU2NUQ5NjlGRTMxOEFEMkQxQURBNzEzRjVBODI5Q0M4Q0RDRjhDNkNC
NDg3MjA2ODE2NDA2M0I2RDY1MUEyMjI2Q0I5N0VENjdFMEZDNkM3MDJBNDczREIyRDc5QTczMEY4
NzM4MDg0QTJFRUQ3NDkyMkMzQTExOUQxRDEwMUI5MzJDMEUxMEZBQjM2ODE1RjY2QzA3OTJCQjY0
MEIxQjRDNTlEMDYyRkJCRURBQjNDQzA2OUE1MzUxOTVENzBFNEEwNjQzMkNBRjE0OUMyNEEwMDM1
M0EwQjk5RjdDRjVCMTcyNzNDQjRFMzg0MjFCRDMxNTEyN0NGNEIzRENCM0QyMEE3Qzk4Q0ZBRjFB
MEUzOThBNTVFMzQ3RkEyODNDRTdCMzkyNzMyNTlCMUIyMTMyREMxOEIwRUI4QUFFOUY3OEVFNTI1
MzU2QjA5REYzOUUwOTBFNzZENzk4NUIyQjcxRTUwQUY4NUNBMzZDRTkxRjhDQ0IyQUJCRDhBNTI5
RDM2OTg5MEQ5OEEyQ0EyODI1QzRDMkZGOEI3RkJGMDlFNzlDMEIiKSksCisgICAgZTogQmFzZTY0
VVJMLnN0cmluZ2lmeShoZXhUb0FycmF5QnVmZmVyKCIwMTAwMDEiKSksCit9OworCit2YXIgcHJp
dmF0ZUtleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSUzI1NiIsCisgICAg
bjogQmFzZTY0VVJMLnN0cmluZ2lmeShoZXhUb0FycmF5QnVmZmVyKCJBREMwOTQwQUZFQ0U3MzUx
RDU2QTZENDMyMjEwQjNBQTQ5RDM4NTY2QjAzQTlGMTAyRTRGMTk4QjJEQTlENzQwNzI4RDAxNDI2
QTNBMDU4QjJCODA1QTVGOTFENTY1RDk2OUZFMzE4QUQyRDFBREE3MTNGNUE4MjlDQzhDRENGOEM2
Q0I0ODcyMDY4MTY0MDYzQjZENjUxQTIyMjZDQjk3RUQ2N0UwRkM2QzcwMkE0NzNEQjJENzlBNzMw
Rjg3MzgwODRBMkVFRDc0OTIyQzNBMTE5RDFEMTAxQjkzMkMwRTEwRkFCMzY4MTVGNjZDMDc5MkJC
NjQwQjFCNEM1OUQwNjJGQkJFREFCM0NDMDY5QTUzNTE5NUQ3MEU0QTA2NDMyQ0FGMTQ5QzI0QTAw
MzUzQTBCOTlGN0NGNUIxNzI3M0NCNEUzODQyMUJEMzE1MTI3Q0Y0QjNEQ0IzRDIwQTdDOThDRkFG
MUEwRTM5OEE1NUUzNDdGQTI4M0NFN0IzOTI3MzI1OUIxQjIxMzJEQzE4QjBFQjhBQUU5Rjc4RUU1
MjUzNTZCMDlERjM5RTA5MEU3NkQ3OTg1QjJCNzFFNTBBRjg1Q0EzNkNFOTFGOENDQjJBQkJEOEE1
MjlEMzY5ODkwRDk4QTJDQTI4MjVDNEMyRkY4QjdGQkYwOUU3OUMwQiIpKSwKKyAgICBlOiBCYXNl
NjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZmZXIoIjAxMDAwMSIpKSwKKyAgICBkOiBCYXNl
NjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZmZXIoIjc4RDJEMkRGQjY4MkNGQjQ1NzQ4RDND
M0ZDM0I0QjA0OUVBM0U1M0YxQzRCMTc3MzQ0MTBBMzNEQTIzQTU5QzFBQTI2OUQ3QTk2QURENDRG
MEJBODBDQjAyQTk0MEY2ODE5ODlCNkRGQzc2QzIxNkE2RUI5QzNGRjk1MEI1QjU5RUZCQjRBOUM2
ODIzQUZFRjk5ODE5RkVEODU1NDFFRkQ3RTBDNUY2QTg4RTk5MkFDQzk5REM0QzlENTNCMzYxNzYz
QzQ1QTRGQUI2MTNFMzlGRjI3OTcxRjJENURCMTIzRjJGMEIyQjMyRDlBOTc1MkM4RDk2MDVGNENE
MzUyMUMyREI5QTg2MDAwQTMwNDBBMTYyMzFGNjEyNzhDNzc0N0MzQUIxOERCRUMwMEE1RDcxMDIz
QjUwQjEzNEEyOEU1MUNEQjQxOUE2NkJBMTcwREY2MTg4MTczNDJGNzg2MTE3NEFBOEU3NDk5Qjk3
NERCRkVCOUZDNjQzQjBFOTU2NDVDMUM0RDgxMTA0QkNFNTNEQTZFNkNGMzFCNkEwMDg1Rjc5RjJF
MDYyNjQ4MkQ2OEE1QTBBNDVDNEVBRjQ1NjQwRDU4RDJGOEU1MTY0RDY0NTYwQ0RFRUEwOTgyMTM4
Q0E4NjdBODcwQ0QwMUE2Mzc0Mjg0N0FDRjNBNTE2RjQ5IikpLAorICAgIHA6IEJhc2U2NFVSTC5z
dHJpbmdpZnkoaGV4VG9BcnJheUJ1ZmZlcigiRTI2ODkzQjgwOENBMzFFMUY5Qjg5RTRBMDc3RjdC
NDE0QzIxNkU0NjA0ODEyNkRDMDM2OUEyN0U2NEE0QkM0REI0RDdDODFCRTc5QUE0MDQ3MkI1Nzk1
QUYyN0Y1RkU2RTM3MkNEOTVDRThFRkRBOTNBODFGQ0RENjQ4NjZGNEI5MzQyMUEzM0U1RDJBRDNE
QTY1NTI5QkJDQTg1MzkyQjI5MDcwMDNBRUVBMTg3RUZBOTQ1OTU5MkU3RkRERTMyODI1NEJCQzFG
MkVCQkI4RkY5NjJDRjJBMkNCQjNFMEVBNTRCQkUyQzI5QTJDM0E3Q0IyNUFBQzBDRTQwNUU5RCIp
KSwKKyAgICBxOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZmZXIoIkM0NzYyQkNF
NDhBRkI2NjlGM0ZFQzE5Qzg2NzU4NjczNEFCRUE0MzNBNDJBMjcyOUI1MUE2RkRBOTMwNTIwODVG
MTlDNTVGOTY4Qzc4NDVDODY2MzU2RThEN0I3MDUzMkQ1NDk0NTIwREQ4NjY0OTRBRkNCOTI4OUVG
RDlBRUZEN0M4RDlDNTFDQ0NERTc0N0Y4MERERTdCN0JCQzg3NTUxNEFEOTE3RUJENEJCNUZERUUx
NEZGMUVCQjM0REQ1RDc5RENENDQ4QUNBNzM3QkE0NTk3NzNBNEI5Mjg0QzA1NjE5NUY5Q0MzMzM4
Rjc1QzU0MDdENUI5OTk3MTUwQzciKSksCisgICAgZHA6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4
VG9BcnJheUJ1ZmZlcigiN0MxQ0MzQ0Q4MEQ0MDY2MDUwMUE4QTdCMUU3RDFEQkRGRkQzREJCNTdB
NDZBQTVDQjU2QTM0RUY4MDkwNjVDMTVCM0Y2NkFEMTU1QjRBNEEzREVGODk2NEY3QzYyNzc2NTQ3
Q0RDODIyMEM3NzVGQTRDREU3MTE1OTQ0M0I1QzMwMjI4OUM2MDkyQkREOEM2MTBFNjYyODg1NTRF
OEVCNjQwMzk1QzQwRjIwQjhFOEYyQzg1QkVBNkQ3OTFFRDNBNTcwM0M4MjE1QkRGMjlFNDk0REIz
QkExNkNGRkZGRDZEQjdBMTdGN0YxQTMwRTBBNkY2QzY4OUM2NEY0MTg2OSIpKSwKKyAgICBkcTog
QmFzZTY0VVJMLnN0cmluZ2lmeShoZXhUb0FycmF5QnVmZmVyKCI4RTYxMzYwRTIyMEY3NjFDMDM4
MEI1QzA0MjkyMUEwNkE0M0NENUIzQjc1REY1NTNGQ0I0NTQyQzBDMzBDMzA5NEZCOTA1NzVFM0Mx
RjRFMzM5NjFGNTMyN0E2MzYxOTkxRDhBMjQ1NzU1MzQ3OEUwNjkyNzE3RTQ2RkI3NEI2MkRBNDlB
NkU4ODE4RDE3RjhDODg1MDRBMDY5NjQ5MDhGRDA5NDk5QzU0ODVBRkU2MjMxOTE3NUYzNDdBOTYw
NjRDNjU0OEM2NEJFRkJEMTFGNjYyMDA0RTc3NDY5MDdFRjNFNzFGQUJGNEFDMDE2NDUwQjgxNDIx
QjY4NjBGRjMxIikpLAorICAgIHFpOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZm
ZXIoIjYwMjVGRkE0QkMxQjMwMTAzNTRFMTU0N0QxNjczMDlBN0NBREE4RDcyQjMwMjEzMDRFNkVD
MUM4MEQ5RTUzQTlENjZEMEFENDJFRjdGQjlCREZFNENERjJENDcyM0IyN0E0MDU2NTA1MDFCOTI0
QzVDQ0NCNDRBQUUyOUI3MDZGMkMyQzZCOUY4NkYwQTAwRTM4RTQ3NjJGN0JGODg0MkY4NENBQ0Y1
RkI2MDE0Q0ZGNzhCNEEzOEQxRTc5MDFGODZGNzg1QTNEQjlFREFDODc4QzgzQzIzMzk0RUI5NTYw
QTdGREZCNjQyRTI4M0ExNjc5MTc1REVDREIxREM1MzkiKSkKK307CisKK3ZhciBkYXRhID0gYXNj
aWlUb0FycmF5QnVmZmVyKCJIZWxsbywgd29ybGQhIik7CisKK2RlYnVnKCJJbXBvcnRpbmcgYSBw
dWJsaWMga2V5Li4uIik7CitjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0Fy
cmF5QnVmZmVyKEpTT04uc3RyaW5naWZ5KHB1YmxpY0tleUpTT04pKSwgbnVsbCwgZXh0cmFjdGFi
bGUsIFsic2lnbiIsICJ2ZXJpZnkiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBwdWJs
aWNLZXkgPSByZXN1bHQ7CisgICAgZGVidWcoIlxuSW1wb3J0aW5nIGEgcHJpdmF0ZSBrZXkuLi4i
KTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJh
eUJ1ZmZlcihKU09OLnN0cmluZ2lmeShwcml2YXRlS2V5SlNPTikpLCBudWxsLCBleHRyYWN0YWJs
ZSwgWyJzaWduIiwgInZlcmlmeSJdKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAg
cHJpdmF0ZUtleSA9IHJlc3VsdDsKKyAgICBkZWJ1ZygiXG5TaWduaW5nIHNvbWUgdGV4dC4uLiIp
OworICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnNpZ24oeyBuYW1lOiAiUlNBU1NBLVBLQ1MxLXYx
XzUiLCBoYXNoOiAiU0hBLTI1NiIgfSwgcHJpdmF0ZUtleSwgW2RhdGFdKTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgc2lnbmF0dXJlID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJi
eXRlQXJyYXlUb0hleFN0cmluZyhuZXcgVWludDhBcnJheShzaWduYXR1cmUpKSIsICInWzBmIGQ5
IGE4IGFlIGY0IGNjIDE4IDc2IGMwIGI3IDYyIDU0IDUzIDM2IGM2IGQxIGZiIDMxIDVhIGUxIDZh
IGU0IGI1IGU0IGJmIDM0IGQzIDg0IGQ4IDU4IDVlIGE3IGEwIDFlIDc2IGVhIDA5IGVlIDdmIDdl
IGU4IGQxIGMxIDIyIGU3IGRkIDE1IGI3IGM5IDRhIDU3IDNiIDJhIGEwIDcyIDAzIGU4IGQxIDNi
IGM2IGZkIDE2IDE1IDZjIGQ4IGU1IGYwIGMxIDVhIDE1IGRjIGNiIDYyIGQxIDUyIDEyIDdmIGNh
IDA5IDg4IDJmIGI1IDNiIGMzIGU2IDBhIGI1IDg2IGQxIDViIDk1IGNmIDQxIDFlIDNhIGFiIDRh
IDFjIDIzIDFhIDdlIDkxIGFhIGIwIDllIGUzIGQ0IGIxIDNkIDExIGU5IDc1IDA1IGRkIGZmIDc3
IDY4IDM0IDcwIGRhIDUxIDBlIGU3IDZlIDhiIGQ1IDMwIGM1IDZhIDg1IGY5IDAxIDYyIDZhIDVh
IDcxIDBmIDcxIDZmIDExIDNkIGZlIDljIGY2IGM0IDczIGVlIDE2IGZhIDI0IDhhIGVhIDM0IDgw
IGExIDAzIDNhIGJlIDMwIGY0IGMxIDI0IDMyIDg5IGE2IDYxIGU2IDRkIDc4IDE4IGI1IDU2IDk4
IDI4IDA2IDg4IDA5IDcxIDM1IDk2IDhjIDZkIDRiIDAyIDk0IDk2IGQ4IDVjIGFiIDJhIDY3IGU0
IDY5IDY3IDM3IDc4IDFmIDcwIGU0IDM5IDJjIDdkIGY3IDFiIGJkIDZjIDkyIDQ2IDU5IDQ3IGYw
IDI5IGExIGRlIDQ4IDE2IDBhIGNlIGQxIDFiIDU3IDIxIGIxIGNkIDI1IDAzIDlmIGUyIGMxIDZj
IDJiIDM4IGRlIDczIGRmIDNiIDlhIDgzIGUzIGVhIDc1IDVmIGQwIGNmIGU1IDFjIGEwIDZiIDYx
IGZhIGRmIDZkIDg0IDY3IDdmIDk1XSciKTsKKworICAgIGRlYnVnKCJcblZlcmlmeWluZyB0aGUg
c2lnbmF0dXJlLi4uIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KHsgbmFtZTog
IlJTQVNTQS1QS0NTMS12MV81IiwgaGFzaDogIlNIQS0yNTYiIH0sIHB1YmxpY0tleSwgc2lnbmF0
dXJlLCBbZGF0YV0pOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB2ZXJpZmljYXRp
b25SZXN1bHQgPSByZXN1bHQ7CisgICAgc2hvdWxkQmUoInZlcmlmaWNhdGlvblJlc3VsdCIsICJ0
cnVlIik7CisgICAgZGVidWcoIlxuVmVyaWZ5aW5nIGEgYmFkIHNpZ25hdHVyZS4uLiIpOworICAg
IHJldHVybiBjcnlwdG8uc3VidGxlLnZlcmlmeSh7IG5hbWU6ICJSU0FTU0EtUEtDUzEtdjFfNSIs
IGhhc2g6ICJTSEEtMjU2IiB9LCBwdWJsaWNLZXksIG5ldyBVaW50OEFycmF5KDI1NiksIFtkYXRh
XSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHZlcmlmaWNhdGlvblJlc3VsdCA9
IHJlc3VsdDsKKyAgICBzaG91bGRCZSgidmVyaWZpY2F0aW9uUmVzdWx0IiwgImZhbHNlIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYXNzYS1wa2Nz
MS12MV81LXNpZ24tdmVyaWZ5Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216902</attachid>
            <date>2013-11-13 23:04:25 -0800</date>
            <delta_ts>2013-11-14 10:24:28 -0800</delta_ts>
            <desc>with style fixes</desc>
            <filename>pkcsSignVerify.txt</filename>
            <type>text/plain</type>
            <size>59321</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTI3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTExLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBSU0FTU0Et
UEtDUzEtdjFfNSBzaWduL3ZlcmlmeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0MzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWdu
LXZlcmlmeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZGVkIG5ldyBmaWxlcywgcmVtb3ZlZCBNYWMgU0hBIGFsZ29yaXRobSBmaWxlcy4KKwor
ICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlm
eSk6CisgICAgICAgIEltcGxlbWVudGVkLiBUaGVzZSB0YWtlIHR3byBzdGVwcywgZmlyc3QgYSBk
aWdlc3QgaXMgY29tcHV0ZWQsIGFuZCB0aGVuIGl0J3Mgc2lnbmVkLgorCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Rp
Z2VzdE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvRGlnZXN0OjpDcnlw
dG9EaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgIEFkZGVkIGEgY3Jvc3MtcGxhdGZvcm0gaW50
ZXJmYWNlIGFuZCBNYWMgaW1wbGVtZW50YXRpb24gdG8gY29tcHV0ZSBhIGRpZ2VzdC4gSXQKKyAg
ICAgICAgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBpdCBvdXRzaWRlIFdlYkNyeXB0byBpZiB3
ZSBuZWVkIHRvIChwZXJoYXBzIGV2ZW4gbWVyZ2UKKyAgICAgICAgd2l0aCAgV1RGIFNIQS0xIGNs
YXNzKS4KKyAgICAgICAgVGhlIE1hYyBpbXBsZW1lbnRhdGlvbiBpcyBraW5kIG9mIHVnbHksIGJ1
dCBhdCBsZWFzdCBpdCBlbmNhcHN1bGF0ZXMgdGhlIHVnbGluZXNzLgorCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTIyNC5jcHA6IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcDogKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOiAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEx
TWFjLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNI
QTIyNE1hYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1TSEEyNTZNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0TWFjLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVNIQTUxMk1hYy5jcHA6IFJlbW92ZWQuCisgICAgICAgIFRoZXNlIGFyZSBhbGwg
Y3Jvc3MtcGxhdGZvcm0gbm93LgorCiAyMDEzLTExLTEzICBWaWN0b3IgQ29zdGFuICA8Y29zdGFu
QGdtYWlsLmNvbT4KIAogICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFjY2VwdHMgYSBzZXF1ZW5j
ZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4gCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTky
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTU1MzIsNyArNTUzMiw2IEBACiAJCUUxMjQ3NDg0MTBBQTE2MUQw
MEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNDc0ODMxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhl
bnRpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTEyNUY4MkIxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNI
QTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEy
NUY4MjkxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuY3BwICovOyB9Owog
CQlFMTI1RjgyQzE4MjJDRkVDMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4MkExODIyQ0ZF
QzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuaCAqLzsgfTsKLQkJRTEyNUY4MkUxODIy
Q0ZGRjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4MkQxODIyQ0ZGRjAwRDg0Q0Q5
IC8qIENyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwICovOyB9OwogCQlFMTI1RjgzMTE4MjJGMTFC
MDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1RjgyRjE4MjJGMTFCMDBEODRDRDkgLyogQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHAgKi87IH07CiAJCUUxMjVGODMyMTgyMkYxMUIwMEQ4NENEOSAv
KiBDcnlwdG9BbGdvcml0aG1ITUFDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTI1RjgzMDE4MjJGMTFCMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGht
SE1BQy5oICovOyB9OwogCQlFMTI1RjgzNTE4MjJGMThBMDBEODRDRDkgLyogQ3J5cHRvS2V5SE1B
Qy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1
RjgzMzE4MjJGMThBMDBEODRDRDkgLyogQ3J5cHRvS2V5SE1BQy5jcHAgKi87IH07CkBAIC01NjI2
LDEwICs1NjI1LDYgQEAKIAkJRTE4NzA1NjMxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRU
YXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTg3
MDU2MjE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCAqLzsgfTsKIAkJRTE4Nzcy
RjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5n
dWFnZS5jcHAgKi87IH07CiAJCUUxOTcyNzE2MTgyMDU0OUUwMDU5MkQ1MSAvKiBDcnlwdG9LZXlU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk3
MjcxNTE4MjA1NDlFMDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oICovOyB9OwotCQlFMTlBQzNF
MjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0RFMTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwICovOyB9OwotCQlFMTlBQzNF
MzE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2TWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0RGMTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwICovOyB9OwotCQlFMTlBQzNF
NDE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0UwMTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwICovOyB9OwotCQlFMTlBQzNF
NTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0UxMTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwICovOyB9OwogCQlFMTlBQzNF
RTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0U2MTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwICovOyB9OwogCQlFMTlBQzNFRjE4MjRE
Qzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlBQzNFNzE4MjREQzc5MDAzNDk0MjYgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0LmggKi87IH07CiAJCUUxOUFDM0YwMTgyNERDNzkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTgxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgKi87IH07CkBAIC01NzIxLDYgKzU3MTYsOCBAQAogCQlFMUY4MEI4
QTE4MzE3MkEyMDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjg5MTgzMTcyQTIwMDc4
ODVDMyAvKiBKU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwICovOyB9OwogCQlFMUY4MEI4RDE4MzE3
MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0Ny
eXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4RTE4MzE3MkI1MDA3ODg1QzMgLyogSlND
cnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggKi87IH07
CisJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjIxODM0MzUx
MTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdE1hYy5jcHAgKi87IH07CisJCUUxRkUxMzY3MTgzNDNB
MTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3QuaCAqLzsgfTsKIAkJRTFGRjU3QTMwRjAxMjU1QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY1
N0EyMEYwMTI1NUIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFGRjU3QTYwRjAxMjU2QjAwODkx
RUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2Jh
bERhdGEuY3BwICovOyB9OwogCQlFMUZGOEY1RjE4MDc0NDIxMDAxMzI2NzQgLyogU3VidGxlQ3J5
cHRvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
RkY4RjVEMTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uY3BwICovOyB9OwpAQCAtMTI2
MjIsNyArMTI2MTksNiBAQAogCQlFMTI0NzQ4MzEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGlj
YXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGlj
YXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4MjkxODIy
Q0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxMjVGODJBMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1TSEExLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29y
aXRobVNIQTEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEyNUY4MkQxODIyQ0ZG
RjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHA7IHBhdGggPSBt
YWMvQ3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxMjVGODJGMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFDLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobUhNQUMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI1RjgzMDE4MjJGMTFCMDBEODRD
RDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcnlwdG9BbGdvcml0aG1ITUFDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxMjVGODMzMTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b0tleUhNQUMuY3BwOyBwYXRoID0ga2V5
cy9DcnlwdG9LZXlITUFDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzIy
LDEwICsxMjcxOCw2IEBACiAJCUUxODcwNTYyMTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFk
VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJGMDEyNkUyNjI5MDAzREQ1ODYg
LyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFu
Z3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk3MjcxNTE4MjA1NDlF
MDA1OTJENTEgLyogQ3J5cHRvS2V5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcnlwdG9LZXlUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxOUFD
M0RFMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFj
LmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlFMTlBQzNERjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5cHRvQWxnb3JpdGht
U0hBMjU2TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTE5QUMzRTAxODI0
REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwOyBw
YXRoID0gbWFjL0NyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUxOUFDM0UxMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1T
SEE1MTJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyTWFjLmNwcDsgcGF0aCA9IG1hYy9DcnlwdG9BbGdvcml0aG1TSEE1MTJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlBQzNFNjE4MjREQzc5MDAz
NDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxOUFDM0U3MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyMjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOUFDM0U4MTgyNERD
NzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyODI2LDYgKzEyODE4LDggQEAKIAkJRTFGODBCODkxODMx
NzJBMjAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0tleVBhaXJDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUY4MEI4QjE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlw
dG9LZXlQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5
cHRvS2V5UGFpci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhDMTgz
MTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvRGlnZXN0TWFjLmNwcDsgcGF0
aCA9IG1hYy9DcnlwdG9EaWdlc3RNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUZGNTdBMjBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRHbG9iYWxEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkY1N0E1MEYwMTI1NkIwMDg5MUVCQiAvKiBU
aHJlYWRHbG9iYWxEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRocmVhZEdsb2JhbERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZG
OEY1QzE4MDczNjRCMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdWJ0bGVDcnlw
dG8uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNTQsMTQgKzIwMzQ4LDEw
IEBACiAJCQkJRTEyNUY4NDMxODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19D
QkNNYWMuY3BwICovLAogCQkJCUUxMjVGODM3MTgyMkYxRUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdv
cml0aG1ITUFDTWFjLmNwcCAqLywKIAkJCQlFMUJCODRBQzE4MjJDQTc0MDA1MjUwNDMgLyogQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwICovLAotCQkJCUUxMjVGODJEMTgyMkNGRkYwMEQ4
NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEExTWFjLmNwcCAqLywKIAkJCQlFMUMyNjZENjE4MzE3
QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwICov
LAotCQkJCUUxOUFDM0RFMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRN
YWMuY3BwICovLAotCQkJCUUxOUFDM0RGMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyNTZNYWMuY3BwICovLAotCQkJCUUxOUFDM0UwMTgyNERDNjkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEEzODRNYWMuY3BwICovLAotCQkJCUUxOUFDM0UxMTgyNERDNjkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwICovLAogCQkJCUUxOUFDM0Y4MTgyNTY2
RjcwMDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovLAogCQkJCUUxNjRGQUE0MTgzMTVFMUEw
MERCNEU2MSAvKiBDcnlwdG9LZXlSU0FNYWMuY3BwICovLAorCQkJCUUxRkUxMzYyMTgzNDM1MTEw
MDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RNYWMuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtYWM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA1NDUsNiArMjA1MzUsNyBAQAogCQkJ
CUUxQzY1NzI2MTgxNkY5RkUwMDI1NkNERCAvKiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgg
Ki8sCiAJCQkJRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmNwcCAqLywKIAkJCQlFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCAqLywKKwkJCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0LmggKi8sCiAJCQkJRTE1N0E4REMxODE3MkMyQzAwOUY4MjFEIC8qIENyeXB0b0tleS5p
ZGwgKi8sCiAJCQkJRTE1N0E4RTIxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5jcHAgKi8s
CiAJCQkJRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oICovLApAQCAtMjI4
NzksNiArMjI4NzAsNyBAQAogCQkJCTJFREYzNjlGMTIyQzk0QzgwMDJGN0Q0RSAvKiBGaWxlRXhj
ZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA5OUQwOTE3Qjk2OEExMDBGRjg0QjkgLyog
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg4QTkw
NTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzZENkM4NjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU2OTUsNyArMjU2ODcsNiBAQAogCQkJCTM3QzIzNjEwMTA5
N0VFNzcwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzdDMjM4MjIxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlckNv
cmVUZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTUwRTZFMURBNzAwQkY2MDg4IC8q
IENvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTlBQzNFMzE4MjRE
QzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2TWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA5RERDMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9z
aXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA4RTEyQjAyNkY3MDBDMUEz
NTkgLyogQ29uZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MzkwLDcgKzI2MzgxLDYgQEAKIAkJ
CQlENjY4MTdGQTE2NkZFNkQ3MDBGQTA3QjQgLyogSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODEzNjlENzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QkM2QzIxQzEzQ0NDOTdCMDA4RTAzMzcg
LyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTEy
NUY4MkUxODIyQ0ZGRjAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg3MURDMjkwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxUaXRsZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NzcxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNzU2OEIxNDIyNjJENjAwNDE0
MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI2OSw3ICsy
NzI1OSw2IEBACiAJCQkJRkRCMTcwMDUxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJl
c2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI0OTBBNDRFRkM3MDBGOTkyRTAg
LyogTXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNkYwOTAwRTE0MzI3QjYx
MDA2ODU4NDkgLyogTXV0YXRpb25PYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMTlB
QzNFNTE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUQ2RTUyOEEzMTQ5QTkyNkQwMEVGRTFGMyAvKiBNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGOTE4MjU2NkY3
MDAzNDk0MjYgLyogQ3J5cHRvS2V5TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2RTI3NkFG
MTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjc2NDAsNyArMjc2MjksNiBAQAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUw
MDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMEUw
RkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3NEQyREE0MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlFMTlBQzNFMjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGht
U0hBMjI0TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUY0RkZEMEQyNUU3RjMwMEVDRTBE
NSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyRTBE
MDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0NEI0QkIzMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODE1MCw2ICsyODEzOCw3IEBACiAJCQkJMzEyODhFNzQwRTMwMDVENjAwMzYx
OUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI3
MTlDNDAxNzIzOENBRTAwMjJERTM0IC8qIFdlYktpdENTU01hdEZ1bmN0aW9uVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MTExN0QxNENFRTAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1
ZXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMg
LyogQ3J5cHRvRGlnZXN0TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5ODM5MTU4MEYxRTc3
NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI0
QkY3N0MxNUNDM0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOEFBNjFDRkYxNDRENTk1QjAwRjM3MzUwIC8qIFdlYktpdENTU1Jl
Z2lvblJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODIyMCw3ICsyODIwOSw2IEBACiAJCQkJ
NTlDMjgwNDUxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzc3MkM0NjBDNEVCMkM2MDA4MzI4NUYgLyogWE1MSHR0cFJlcXVlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc4RDA3Q0UxNDVBMTAzNzAwOTY5MDhEIC8qIFhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxOUFDM0U0MTgyNERDNjkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEz
NkEwMEMxMTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90
dGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDREZENDhGMEUzMDUyOTAwMDlEMTBBRCAvKiBY
TUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNG
MjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU1hYy5jcHAJKHJldmlzaW9uIDE1OTI3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE4ICsyOCwxNDAgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRv
RGlnZXN0LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorCisjaWYgZGVmaW5lZChfX2hhc19p
bmNsdWRlKQorI2lmIF9faGFzX2luY2x1ZGUoPENvbW1vbkNyeXB0by9Db21tb25SU0FDcnlwdG9y
Lmg+KQorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25SU0FDcnlwdG9yLmg+CisjZW5kaWYK
KyNlbmRpZgorCisjaWZuZGVmIF9DQ19SU0FDUllQVE9SX0hfCitlbnVtIHsKKyAgICBjY1BLQ1Mx
UGFkZGluZyA9IDEwMDEKK307Cit0eXBlZGVmIHVpbnQzMl90IENDQXN5bW1ldHJpY1BhZGRpbmc7
CisKK2VudW0geworICAgIGtDQ0RpZ2VzdFNIQTEgPSA4LAorICAgIGtDQ0RpZ2VzdFNIQTIyNCA9
IDksCisgICAga0NDRGlnZXN0U0hBMjU2ID0gMTAsCisgICAga0NDRGlnZXN0U0hBMzg0ID0gMTEs
CisgICAga0NDRGlnZXN0U0hBNTEyID0gMTIsCit9OwordHlwZWRlZiB1aW50MzJfdCBDQ0RpZ2Vz
dEFsZ29yaXRobTsKKworZW51bSB7CisgICAga0NDTm90VmVyaWZpZWQgICAgPSAtNDMwNgorfTsK
KyNlbmRpZgorCitleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JTaWduKEND
UlNBQ3J5cHRvclJlZiBwcml2YXRlS2V5LCBDQ0FzeW1tZXRyaWNQYWRkaW5nIHBhZGRpbmcsIGNv
bnN0IHZvaWQgKmhhc2hUb1NpZ24sIHNpemVfdCBoYXNoU2lnbkxlbiwgQ0NEaWdlc3RBbGdvcml0
aG0gZGlnZXN0VHlwZSwgc2l6ZV90IHNhbHRMZW4sIHZvaWQgKnNpZ25lZERhdGEsIHNpemVfdCAq
c2lnbmVkRGF0YUxlbik7CitleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JW
ZXJpZnkoQ0NSU0FDcnlwdG9yUmVmIHB1YmxpY0tleSwgQ0NBc3ltbWV0cmljUGFkZGluZyBwYWRk
aW5nLCBjb25zdCB2b2lkICpoYXNoLCBzaXplX3QgaGFzaExlbiwgQ0NEaWdlc3RBbGdvcml0aG0g
ZGlnZXN0VHlwZSwgc2l6ZV90IHNhbHRMZW4sIGNvbnN0IHZvaWQgKnNpZ25lZERhdGEsIHNpemVf
dCBzaWduZWREYXRhTGVuKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0
YT4mLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+LCBFeGNlcHRpb25Db2RlJiBlYykK
K3N0YXRpYyBib29sIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbiwgQ0NEaWdlc3RBbGdvcml0aG0mIGFsZ29yaXRobSkK
K3sKKyAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIGFsZ29yaXRobSA9IGtDQ0RpZ2VzdFNIQTE7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzIyNDoKKyAgICAgICAgYWxnb3JpdGhtID0ga0NDRGlnZXN0U0hBMjI0OworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6
CisgICAgICAgIGFsZ29yaXRobSA9IGtDQ0RpZ2VzdFNIQTI1NjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAg
ICBhbGdvcml0aG0gPSBrQ0NEaWdlc3RTSEEzODQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgYWxnb3Jp
dGhtID0ga0NDRGlnZXN0U0hBNTEyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3Bl
cmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMmIHJzYVNTQVBhcmFtZXRlcnMgPSB0
b0NyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtcyhwYXJhbWV0ZXJzKTsKKworICAgIGlmICghaXND
cnlwdG9LZXlSU0Eoa2V5KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IENyeXB0b0tleVJTQSYgcnNhS2V5ID0gdG9D
cnlwdG9LZXlSU0Eoa2V5KTsKKworICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRo
bTsKKyAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShyc2FTU0FQYXJhbWV0
ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHJzYVNTQVBhcmFtZXRlcnMu
aGFzaCk7CisgICAgaWYgKCFkaWdlc3QpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9
IGRhdGEuc2l6ZSgpOyArK2kpCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YVtpXS5maXJz
dCwgZGF0YVtpXS5zZWNvbmQpOworCisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGRpZ2VzdERh
dGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4g
c2lnbmF0dXJlKDUxMik7CisgICAgc2l6ZV90IHNpZ25hdHVyZVNpemUgPSBzaWduYXR1cmUuc2l6
ZSgpOworCisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclNpZ24ocnNh
S2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkaWdlc3REYXRhLmRhdGEoKSwgZGln
ZXN0RGF0YS5zaXplKCksIGRpZ2VzdEFsZ29yaXRobSwgMCwgc2lnbmF0dXJlLmRhdGEoKSwgJnNp
Z25hdHVyZVNpemUpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2lnbmF0dXJlLnJlc2l6
ZShzaWduYXR1cmVTaXplKTsKKyAgICBwcm9taXNlLT5mdWxmaWxsKHNpZ25hdHVyZSk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgLypzaWduYXR1cmUqLywgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRh
dGE+JiAvKmRhdGEqLywgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgVmVj
dG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdy
YXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zJiByc2FTU0FQ
YXJhbWV0ZXJzID0gdG9DcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMocGFyYW1ldGVycyk7CisK
KyAgICBpZiAoIWlzQ3J5cHRvS2V5UlNBKGtleSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCBDcnlwdG9LZXlSU0Em
IHJzYUtleSA9IHRvQ3J5cHRvS2V5UlNBKGtleSk7CisKKyAgICBDQ0RpZ2VzdEFsZ29yaXRobSBk
aWdlc3RBbGdvcml0aG07CisgICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0o
cnNhU1NBUGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7CisgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShyc2FT
U0FQYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmICghZGlnZXN0KSB7CisgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSBkYXRhLnNpemUoKTsgKytpKQorICAgICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsKKworICAgIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiBkaWdlc3REYXRhID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworCisgICAgQ0NDcnlwdG9y
U3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvclZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwg
Y2NQS0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0YSgpLCBkaWdlc3REYXRhLnNpemUoKSwgZGln
ZXN0QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zZWNvbmQpOworICAg
IGlmICghc3RhdHVzKQorICAgICAgICBwcm9taXNlLT5mdWxmaWxsKHRydWUpOworICAgIGVsc2Ug
aWYgKHN0YXR1cyA9PSBrQ0NOb3RWZXJpZmllZCB8fCBrQ0NEZWNvZGVFcnJvcikgLy8gPHJkYXI6
Ly9wcm9ibGVtLzE1NDY0OTgyPiBDQ1JTQUNyeXB0b3JWZXJpZnkgcmV0dXJucyBrQ0NEZWNvZGVF
cnJvciBpbnN0ZWFkIG9mIGtDQ05vdFZlcmlmaWVkIHNvbWV0aW1lcworICAgICAgICBwcm9taXNl
LT5mdWxmaWxsKGZhbHNlKTsKKyAgICBlbHNlCisgICAgICAgIHByb21pc2UtPnJlamVjdChudWxs
cHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0RpZ2VzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9EaWdlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9EaWdlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDcnlwdG9EaWdlc3RfaAorI2RlZmluZSBDcnlwdG9EaWdlc3RfaAorCisjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0
OworCitjbGFzcyBDcnlwdG9EaWdlc3QgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0
b0RpZ2VzdCk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IGNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICB+Q3J5cHRvRGlnZXN0
KCk7CisKKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gY29tcHV0ZUhhc2goKTsKKworcHJpdmF0ZToK
KyAgICBDcnlwdG9EaWdlc3QoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RD
b250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCShyZXZpc2lv
biAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBj
b25zdCBDcnlwdG9BbGdvcml0aG1TSEExOjpzX25hbWUgPSAic2hhLTEiOwpAQCAtNTAsNiArNTMs
MjAgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJldHVy
biBzX2lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0
aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzEpOworICAgIGlmICghZGlnZXN0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChudWxscHRy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMo
ZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOworCisgICAgcHJvbWlzZS0+ZnVsZmlsbChk
aWdlc3QtPmNvbXB1dGVIYXNoKCkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExF
X0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTIyNC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBjb25zdCBDcnlwdG9B
bGdvcml0aG1TSEEyMjQ6OnNfbmFtZSA9ICJzaGEtMjI0IjsKQEAgLTUwLDYgKzUzLDIwIEBAIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGgKICAgICByZXR1cm4gc19pZGVu
dGlmaWVyOwogfQogCit2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0
YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0
aW9uQ29kZSYpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNCk7
CisgICAgaWYgKCFkaWdlc3QpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KG51bGxwdHIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBk
YXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRh
W2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKGRpZ2Vz
dC0+Y29tcHV0ZUhhc2goKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBU
TykKIAorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29y
aXRobVNIQTI1Njo6c19uYW1lID0gInNoYS0yNTYiOwpAQCAtNTAsNiArNTMsMjAgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aAogICAgIHJldHVybiBzX2lkZW50aWZp
ZXI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYg
ZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25D
b2RlJikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2KTsKKyAg
ICBpZiAoIWRpZ2VzdCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QobnVsbHB0cik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRhdGEu
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGFbaV0u
Zmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsKKworICAgIHByb21pc2UtPmZ1bGZpbGwoZGlnZXN0LT5j
b21wdXRlSGFzaCgpKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAJKHJldmlzaW9uIDE1OTI3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQog
CisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpzX25hbWUgPSAic2hhLTM4NCI7CkBAIC01MCw2ICs1MywyMCBAQCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRoCiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsK
IH0KIAordm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRh
LCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUm
KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQpOworICAgIGlm
ICghZGlnZXN0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChudWxscHRyKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZGF0YS5zaXpl
KCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YVtpXS5maXJz
dCwgZGF0YVtpXS5zZWNvbmQpOworCisgICAgcHJvbWlzZS0+ZnVsZmlsbChkaWdlc3QtPmNvbXB1
dGVIYXNoKCkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUx
Mi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdvcml0aG1TSEE1
MTI6OnNfbmFtZSA9ICJzaGEtNTEyIjsKQEAgLTUwLDYgKzUzLDIwIEBAIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGgKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQog
Cit2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEsIHN0
ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCit7
CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMik7CisgICAgaWYgKCFk
aWdlc3QpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhW2ldLmZpcnN0LCBk
YXRhW2ldLnNlY29uZCk7CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKGRpZ2VzdC0+Y29tcHV0ZUhh
c2goKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEExTWFjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTFN
YWMuY3BwCShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobVNIQTFNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5oIgotCi0jaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCi0KLSNpbmNsdWRlICJKU0RP
TVByb21pc2UuaCIKLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRp
b25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBF
eGNlcHRpb25Db2RlJikKLXsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVzdWx0KENDX1NI
QTFfRElHRVNUX0xFTkdUSCk7Ci0KLSAgICBDQ19TSEExX0NUWCBjb250ZXh0OwotICAgIENDX1NI
QTFfSW5pdCgmY29udGV4dCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRhdGEu
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBDQ19TSEExX1VwZGF0ZSgmY29udGV4dCwg
ZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCi0gICAgQ0NfU0hBMV9GaW5hbChyZXN1
bHQuZGF0YSgpLCAmY29udGV4dCk7Ci0KLSAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdCk7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNw
cAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1TSEEyMjRNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmgiCi0KLSNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0
aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHJlc3VsdChDQ19T
SEEyMjRfRElHRVNUX0xFTkdUSCk7Ci0KLSAgICBDQ19TSEEyNTZfQ1RYIGNvbnRleHQ7IC8vIFNh
bWUgY29udGV4dCBzdHJ1Y3QgaXMgdXNlZCBmb3IgU0hBMjI0IGFuZCBTSEEyNTYuCi0gICAgQ0Nf
U0hBMjI0X0luaXQoJmNvbnRleHQpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBk
YXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSgmY29u
dGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOwotCi0gICAgQ0NfU0hBMjI0X0Zp
bmFsKHJlc3VsdC5kYXRhKCksICZjb250ZXh0KTsKLQotICAgIHByb21pc2UtPmZ1bGZpbGwocmVz
dWx0KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEy
NTZNYWMuY3BwCShyZXZpc2lvbiAxNTkyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1TSEEyNTYuaCIKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotCi0jaW5jbHVk
ZSAiSlNET01Qcm9taXNlLmgiCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Ojpk
aWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlw
dG9PcGVyYXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBw
cm9taXNlLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVz
dWx0KENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKLQotICAgIENDX1NIQTI1Nl9DVFggY29udGV4
dDsKLSAgICBDQ19TSEEyNTZfSW5pdCgmY29udGV4dCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
MCwgc2l6ZSA9IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBDQ19TSEEyNTZf
VXBkYXRlKCZjb250ZXh0LCBkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7Ci0KLSAgICBD
Q19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgJmNvbnRleHQpOwotCi0gICAgcHJvbWlzZS0+
ZnVsZmlsbChyZXN1bHQpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBU
TykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
TWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVNIQTM4NE1hYy5jcHAJKHJldmlzaW9uIDE1OTI3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTM4NC5oIgotCi0jaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
Ci0KLSNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29t
bW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3Qg
VmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlz
ZVdyYXBwZXI+IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKQotewotICAgIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiByZXN1bHQoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotCi0gICAgQ0NfU0hBNTEy
X0NUWCBjb250ZXh0OyAvLyBTYW1lIGNvbnRleHQgc3RydWN0IGlzIHVzZWQgZm9yIFNIQTM4NCBh
bmQgU0hBNTEyLgotICAgIENDX1NIQTM4NF9Jbml0KCZjb250ZXh0KTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gZGF0YS5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIEND
X1NIQTM4NF9VcGRhdGUoJmNvbnRleHQsIGRhdGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsK
LQotICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCAmY29udGV4dCk7Ci0KLSAgICBw
cm9taXNlLT5mdWxmaWxsKHJlc3VsdCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVUJU
TEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1TSEE1MTJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcAkocmV2aXNpb24gMTU5Mjc0KQorKysgU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgiCi0KLSNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKLQotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgPENvbW1vbkNy
eXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENyeXB0
b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9uRGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0
cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+IHJlc3VsdChDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7Ci0KLSAgICBD
Q19TSEE1MTJfQ1RYIGNvbnRleHQ7Ci0gICAgQ0NfU0hBNTEyX0luaXQoJmNvbnRleHQpOwotCi0g
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBkYXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSgmY29udGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtp
XS5zZWNvbmQpOwotCi0gICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksICZjb250ZXh0
KTsKLQotICAgIHByb21pc2UtPmZ1bGZpbGwocmVzdWx0KTsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0RpZ2VzdE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9EaWdlc3RNYWMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9EaWdlc3RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNsdWRlIDxDb21tb25D
cnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENy
eXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3Jp
dGhtOworICAgIHZvaWQqIGNjQ29udGV4dDsKK307CisKK2lubGluZSBDQ19TSEExX0NUWCogdG9T
SEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChj
b250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7
Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENv
bnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2
X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citp
bmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hB
NTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRv
RGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30K
KworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4
dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoK
KyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2Ogor
ICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Cisg
ICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAg
ICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdl
c3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOiB7Cisg
ICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOworICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMV9J
bml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NU
WCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4
dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7
CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0g
bmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQg
PSBjb250ZXh0OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0
dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEy
X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0Owor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6IHsKKyAg
ICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hB
NTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKwordm9pZCBDcnlwdG9E
aWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAg
IHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250ZXh0
KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICBDQ19TSEEy
MjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3Ro
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250
ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIENDX1NIQTM4NF9VcGRh
dGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEy
OgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0
KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQu
ZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgICAgIHJl
c3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyMjRf
RmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
NTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAg
ICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VT
VF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEz
ODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUo
Q0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdE1hYy5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Mjc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTMgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFJTQVNTQS1Q
S0NTMS12MV81IHNpZ24vdmVyaWZ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGNyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJp
ZnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3JzYXNzYS1w
a2NzMS12MV81LXNpZ24tdmVyaWZ5Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTExLTEzICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBCbG9iIGNvbnN0cnVjdG9yIGFj
Y2VwdHMgYSBzZXF1ZW5jZSAoYXJyYXktbGlrZSBvYmplY3QpIGFzIGZpcnN0IGFyZy4KSW5kZXg6
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJpZnkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvcnNh
c3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJpZnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWduLXZlcmlmeS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorVGVzdCBpbXBvcnRp
bmcgYW4gUlNBIGtleSBmb3IgUlNBU1NBLVBLQ1MxLXYxXzUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitJbXBvcnRpbmcgYSBwdWJsaWMga2V5Li4uCisKK0ltcG9ydGluZyBhIHBy
aXZhdGUga2V5Li4uCisKK1NpZ25pbmcgc29tZSB0ZXh0Li4uCitQQVNTIGJ5dGVBcnJheVRvSGV4
U3RyaW5nKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpIGlzICdbMGYgZDkgYTggYWUgZjQgY2Mg
MTggNzYgYzAgYjcgNjIgNTQgNTMgMzYgYzYgZDEgZmIgMzEgNWEgZTEgNmEgZTQgYjUgZTQgYmYg
MzQgZDMgODQgZDggNTggNWUgYTcgYTAgMWUgNzYgZWEgMDkgZWUgN2YgN2UgZTggZDEgYzEgMjIg
ZTcgZGQgMTUgYjcgYzkgNGEgNTcgM2IgMmEgYTAgNzIgMDMgZTggZDEgM2IgYzYgZmQgMTYgMTUg
NmMgZDggZTUgZjAgYzEgNWEgMTUgZGMgY2IgNjIgZDEgNTIgMTIgN2YgY2EgMDkgODggMmYgYjUg
M2IgYzMgZTYgMGEgYjUgODYgZDEgNWIgOTUgY2YgNDEgMWUgM2EgYWIgNGEgMWMgMjMgMWEgN2Ug
OTEgYWEgYjAgOWUgZTMgZDQgYjEgM2QgMTEgZTkgNzUgMDUgZGQgZmYgNzcgNjggMzQgNzAgZGEg
NTEgMGUgZTcgNmUgOGIgZDUgMzAgYzUgNmEgODUgZjkgMDEgNjIgNmEgNWEgNzEgMGYgNzEgNmYg
MTEgM2QgZmUgOWMgZjYgYzQgNzMgZWUgMTYgZmEgMjQgOGEgZWEgMzQgODAgYTEgMDMgM2EgYmUg
MzAgZjQgYzEgMjQgMzIgODkgYTYgNjEgZTYgNGQgNzggMTggYjUgNTYgOTggMjggMDYgODggMDkg
NzEgMzUgOTYgOGMgNmQgNGIgMDIgOTQgOTYgZDggNWMgYWIgMmEgNjcgZTQgNjkgNjcgMzcgNzgg
MWYgNzAgZTQgMzkgMmMgN2QgZjcgMWIgYmQgNmMgOTIgNDYgNTkgNDcgZjAgMjkgYTEgZGUgNDgg
MTYgMGEgY2UgZDEgMWIgNTcgMjEgYjEgY2QgMjUgMDMgOWYgZTIgYzEgNmMgMmIgMzggZGUgNzMg
ZGYgM2IgOWEgODMgZTMgZWEgNzUgNWYgZDAgY2YgZTUgMWMgYTAgNmIgNjEgZmEgZGYgNmQgODQg
NjcgN2YgOTVdJworCitWZXJpZnlpbmcgdGhlIHNpZ25hdHVyZS4uLgorUEFTUyB2ZXJpZmljYXRp
b25SZXN1bHQgaXMgdHJ1ZQorCitWZXJpZnlpbmcgYSBiYWQgc2lnbmF0dXJlLi4uCitQQVNTIHZl
cmlmaWNhdGlvblJlc3VsdCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Ny
eXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtc2lnbi12ZXJpZnktZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBM
YXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LXNpZ24tdmVyaWZ5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEt
djFfNS1zaWduLXZlcmlmeS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRv
L3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1zaWduLXZlcmlmeS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3QgaW1wb3J0aW5nIGFuIFJTQSBrZXkgZm9yIFJTQVNTQS1Q
S0NTMS12MV81LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3Vi
dGxlKQorICAgIHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0
bGU7CisKK3ZhciBleHRyYWN0YWJsZSA9IHRydWU7CisKK3ZhciBwdWJsaWNLZXlKU09OID0gewor
ICAgIGt0eTogIlJTQSIsCisgICAgYWxnOiAiUlMyNTYiLAorICAgIG46IEJhc2U2NFVSTC5zdHJp
bmdpZnkoaGV4VG9BcnJheUJ1ZmZlcigiQURDMDk0MEFGRUNFNzM1MUQ1NkE2RDQzMjIxMEIzQUE0
OUQzODU2NkIwM0E5RjEwMkU0RjE5OEIyREE5RDc0MDcyOEQwMTQyNkEzQTA1OEIyQjgwNUE1Rjkx
RDU2NUQ5NjlGRTMxOEFEMkQxQURBNzEzRjVBODI5Q0M4Q0RDRjhDNkNCNDg3MjA2ODE2NDA2M0I2
RDY1MUEyMjI2Q0I5N0VENjdFMEZDNkM3MDJBNDczREIyRDc5QTczMEY4NzM4MDg0QTJFRUQ3NDky
MkMzQTExOUQxRDEwMUI5MzJDMEUxMEZBQjM2ODE1RjY2QzA3OTJCQjY0MEIxQjRDNTlEMDYyRkJC
RURBQjNDQzA2OUE1MzUxOTVENzBFNEEwNjQzMkNBRjE0OUMyNEEwMDM1M0EwQjk5RjdDRjVCMTcy
NzNDQjRFMzg0MjFCRDMxNTEyN0NGNEIzRENCM0QyMEE3Qzk4Q0ZBRjFBMEUzOThBNTVFMzQ3RkEy
ODNDRTdCMzkyNzMyNTlCMUIyMTMyREMxOEIwRUI4QUFFOUY3OEVFNTI1MzU2QjA5REYzOUUwOTBF
NzZENzk4NUIyQjcxRTUwQUY4NUNBMzZDRTkxRjhDQ0IyQUJCRDhBNTI5RDM2OTg5MEQ5OEEyQ0Ey
ODI1QzRDMkZGOEI3RkJGMDlFNzlDMEIiKSksCisgICAgZTogQmFzZTY0VVJMLnN0cmluZ2lmeSho
ZXhUb0FycmF5QnVmZmVyKCIwMTAwMDEiKSksCit9OworCit2YXIgcHJpdmF0ZUtleUpTT04gPSB7
CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSUzI1NiIsCisgICAgbjogQmFzZTY0VVJMLnN0
cmluZ2lmeShoZXhUb0FycmF5QnVmZmVyKCJBREMwOTQwQUZFQ0U3MzUxRDU2QTZENDMyMjEwQjNB
QTQ5RDM4NTY2QjAzQTlGMTAyRTRGMTk4QjJEQTlENzQwNzI4RDAxNDI2QTNBMDU4QjJCODA1QTVG
OTFENTY1RDk2OUZFMzE4QUQyRDFBREE3MTNGNUE4MjlDQzhDRENGOEM2Q0I0ODcyMDY4MTY0MDYz
QjZENjUxQTIyMjZDQjk3RUQ2N0UwRkM2QzcwMkE0NzNEQjJENzlBNzMwRjg3MzgwODRBMkVFRDc0
OTIyQzNBMTE5RDFEMTAxQjkzMkMwRTEwRkFCMzY4MTVGNjZDMDc5MkJCNjQwQjFCNEM1OUQwNjJG
QkJFREFCM0NDMDY5QTUzNTE5NUQ3MEU0QTA2NDMyQ0FGMTQ5QzI0QTAwMzUzQTBCOTlGN0NGNUIx
NzI3M0NCNEUzODQyMUJEMzE1MTI3Q0Y0QjNEQ0IzRDIwQTdDOThDRkFGMUEwRTM5OEE1NUUzNDdG
QTI4M0NFN0IzOTI3MzI1OUIxQjIxMzJEQzE4QjBFQjhBQUU5Rjc4RUU1MjUzNTZCMDlERjM5RTA5
MEU3NkQ3OTg1QjJCNzFFNTBBRjg1Q0EzNkNFOTFGOENDQjJBQkJEOEE1MjlEMzY5ODkwRDk4QTJD
QTI4MjVDNEMyRkY4QjdGQkYwOUU3OUMwQiIpKSwKKyAgICBlOiBCYXNlNjRVUkwuc3RyaW5naWZ5
KGhleFRvQXJyYXlCdWZmZXIoIjAxMDAwMSIpKSwKKyAgICBkOiBCYXNlNjRVUkwuc3RyaW5naWZ5
KGhleFRvQXJyYXlCdWZmZXIoIjc4RDJEMkRGQjY4MkNGQjQ1NzQ4RDNDM0ZDM0I0QjA0OUVBM0U1
M0YxQzRCMTc3MzQ0MTBBMzNEQTIzQTU5QzFBQTI2OUQ3QTk2QURENDRGMEJBODBDQjAyQTk0MEY2
ODE5ODlCNkRGQzc2QzIxNkE2RUI5QzNGRjk1MEI1QjU5RUZCQjRBOUM2ODIzQUZFRjk5ODE5RkVE
ODU1NDFFRkQ3RTBDNUY2QTg4RTk5MkFDQzk5REM0QzlENTNCMzYxNzYzQzQ1QTRGQUI2MTNFMzlG
RjI3OTcxRjJENURCMTIzRjJGMEIyQjMyRDlBOTc1MkM4RDk2MDVGNENEMzUyMUMyREI5QTg2MDAw
QTMwNDBBMTYyMzFGNjEyNzhDNzc0N0MzQUIxOERCRUMwMEE1RDcxMDIzQjUwQjEzNEEyOEU1MUNE
QjQxOUE2NkJBMTcwREY2MTg4MTczNDJGNzg2MTE3NEFBOEU3NDk5Qjk3NERCRkVCOUZDNjQzQjBF
OTU2NDVDMUM0RDgxMTA0QkNFNTNEQTZFNkNGMzFCNkEwMDg1Rjc5RjJFMDYyNjQ4MkQ2OEE1QTBB
NDVDNEVBRjQ1NjQwRDU4RDJGOEU1MTY0RDY0NTYwQ0RFRUEwOTgyMTM4Q0E4NjdBODcwQ0QwMUE2
Mzc0Mjg0N0FDRjNBNTE2RjQ5IikpLAorICAgIHA6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4VG9B
cnJheUJ1ZmZlcigiRTI2ODkzQjgwOENBMzFFMUY5Qjg5RTRBMDc3RjdCNDE0QzIxNkU0NjA0ODEy
NkRDMDM2OUEyN0U2NEE0QkM0REI0RDdDODFCRTc5QUE0MDQ3MkI1Nzk1QUYyN0Y1RkU2RTM3MkNE
OTVDRThFRkRBOTNBODFGQ0RENjQ4NjZGNEI5MzQyMUEzM0U1RDJBRDNEQTY1NTI5QkJDQTg1Mzky
QjI5MDcwMDNBRUVBMTg3RUZBOTQ1OTU5MkU3RkRERTMyODI1NEJCQzFGMkVCQkI4RkY5NjJDRjJB
MkNCQjNFMEVBNTRCQkUyQzI5QTJDM0E3Q0IyNUFBQzBDRTQwNUU5RCIpKSwKKyAgICBxOiBCYXNl
NjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZmZXIoIkM0NzYyQkNFNDhBRkI2NjlGM0ZFQzE5
Qzg2NzU4NjczNEFCRUE0MzNBNDJBMjcyOUI1MUE2RkRBOTMwNTIwODVGMTlDNTVGOTY4Qzc4NDVD
ODY2MzU2RThEN0I3MDUzMkQ1NDk0NTIwREQ4NjY0OTRBRkNCOTI4OUVGRDlBRUZEN0M4RDlDNTFD
Q0NERTc0N0Y4MERERTdCN0JCQzg3NTUxNEFEOTE3RUJENEJCNUZERUUxNEZGMUVCQjM0REQ1RDc5
RENENDQ4QUNBNzM3QkE0NTk3NzNBNEI5Mjg0QzA1NjE5NUY5Q0MzMzM4Rjc1QzU0MDdENUI5OTk3
MTUwQzciKSksCisgICAgZHA6IEJhc2U2NFVSTC5zdHJpbmdpZnkoaGV4VG9BcnJheUJ1ZmZlcigi
N0MxQ0MzQ0Q4MEQ0MDY2MDUwMUE4QTdCMUU3RDFEQkRGRkQzREJCNTdBNDZBQTVDQjU2QTM0RUY4
MDkwNjVDMTVCM0Y2NkFEMTU1QjRBNEEzREVGODk2NEY3QzYyNzc2NTQ3Q0RDODIyMEM3NzVGQTRD
REU3MTE1OTQ0M0I1QzMwMjI4OUM2MDkyQkREOEM2MTBFNjYyODg1NTRFOEVCNjQwMzk1QzQwRjIw
QjhFOEYyQzg1QkVBNkQ3OTFFRDNBNTcwM0M4MjE1QkRGMjlFNDk0REIzQkExNkNGRkZGRDZEQjdB
MTdGN0YxQTMwRTBBNkY2QzY4OUM2NEY0MTg2OSIpKSwKKyAgICBkcTogQmFzZTY0VVJMLnN0cmlu
Z2lmeShoZXhUb0FycmF5QnVmZmVyKCI4RTYxMzYwRTIyMEY3NjFDMDM4MEI1QzA0MjkyMUEwNkE0
M0NENUIzQjc1REY1NTNGQ0I0NTQyQzBDMzBDMzA5NEZCOTA1NzVFM0MxRjRFMzM5NjFGNTMyN0E2
MzYxOTkxRDhBMjQ1NzU1MzQ3OEUwNjkyNzE3RTQ2RkI3NEI2MkRBNDlBNkU4ODE4RDE3RjhDODg1
MDRBMDY5NjQ5MDhGRDA5NDk5QzU0ODVBRkU2MjMxOTE3NUYzNDdBOTYwNjRDNjU0OEM2NEJFRkJE
MTFGNjYyMDA0RTc3NDY5MDdFRjNFNzFGQUJGNEFDMDE2NDUwQjgxNDIxQjY4NjBGRjMxIikpLAor
ICAgIHFpOiBCYXNlNjRVUkwuc3RyaW5naWZ5KGhleFRvQXJyYXlCdWZmZXIoIjYwMjVGRkE0QkMx
QjMwMTAzNTRFMTU0N0QxNjczMDlBN0NBREE4RDcyQjMwMjEzMDRFNkVDMUM4MEQ5RTUzQTlENjZE
MEFENDJFRjdGQjlCREZFNENERjJENDcyM0IyN0E0MDU2NTA1MDFCOTI0QzVDQ0NCNDRBQUUyOUI3
MDZGMkMyQzZCOUY4NkYwQTAwRTM4RTQ3NjJGN0JGODg0MkY4NENBQ0Y1RkI2MDE0Q0ZGNzhCNEEz
OEQxRTc5MDFGODZGNzg1QTNEQjlFREFDODc4QzgzQzIzMzk0RUI5NTYwQTdGREZCNjQyRTI4M0Ex
Njc5MTc1REVDREIxREM1MzkiKSkKK307CisKK3ZhciBkYXRhID0gYXNjaWlUb0FycmF5QnVmZmVy
KCJIZWxsbywgd29ybGQhIik7CisKK2RlYnVnKCJJbXBvcnRpbmcgYSBwdWJsaWMga2V5Li4uIik7
CitjcnlwdG8uc3VidGxlLmltcG9ydEtleSgiandrIiwgYXNjaWlUb0FycmF5QnVmZmVyKEpTT04u
c3RyaW5naWZ5KHB1YmxpY0tleUpTT04pKSwgbnVsbCwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2
ZXJpZnkiXSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICBwdWJsaWNLZXkgPSByZXN1bHQ7
CisgICAgZGVidWcoIlxuSW1wb3J0aW5nIGEgcHJpdmF0ZSBrZXkuLi4iKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIGFzY2lpVG9BcnJheUJ1ZmZlcihKU09OLnN0
cmluZ2lmeShwcml2YXRlS2V5SlNPTikpLCBudWxsLCBleHRyYWN0YWJsZSwgWyJzaWduIiwgInZl
cmlmeSJdKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpdmF0ZUtleSA9IHJl
c3VsdDsKKyAgICBkZWJ1ZygiXG5TaWduaW5nIHNvbWUgdGV4dC4uLiIpOworICAgIHJldHVybiBj
cnlwdG8uc3VidGxlLnNpZ24oeyBuYW1lOiAiUlNBU1NBLVBLQ1MxLXYxXzUiLCBoYXNoOiAiU0hB
LTI1NiIgfSwgcHJpdmF0ZUtleSwgW2RhdGFdKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgc2lnbmF0dXJlID0gcmVzdWx0OworICAgIHNob3VsZEJlKCJieXRlQXJyYXlUb0hleFN0
cmluZyhuZXcgVWludDhBcnJheShzaWduYXR1cmUpKSIsICInWzBmIGQ5IGE4IGFlIGY0IGNjIDE4
IDc2IGMwIGI3IDYyIDU0IDUzIDM2IGM2IGQxIGZiIDMxIDVhIGUxIDZhIGU0IGI1IGU0IGJmIDM0
IGQzIDg0IGQ4IDU4IDVlIGE3IGEwIDFlIDc2IGVhIDA5IGVlIDdmIDdlIGU4IGQxIGMxIDIyIGU3
IGRkIDE1IGI3IGM5IDRhIDU3IDNiIDJhIGEwIDcyIDAzIGU4IGQxIDNiIGM2IGZkIDE2IDE1IDZj
IGQ4IGU1IGYwIGMxIDVhIDE1IGRjIGNiIDYyIGQxIDUyIDEyIDdmIGNhIDA5IDg4IDJmIGI1IDNi
IGMzIGU2IDBhIGI1IDg2IGQxIDViIDk1IGNmIDQxIDFlIDNhIGFiIDRhIDFjIDIzIDFhIDdlIDkx
IGFhIGIwIDllIGUzIGQ0IGIxIDNkIDExIGU5IDc1IDA1IGRkIGZmIDc3IDY4IDM0IDcwIGRhIDUx
IDBlIGU3IDZlIDhiIGQ1IDMwIGM1IDZhIDg1IGY5IDAxIDYyIDZhIDVhIDcxIDBmIDcxIDZmIDEx
IDNkIGZlIDljIGY2IGM0IDczIGVlIDE2IGZhIDI0IDhhIGVhIDM0IDgwIGExIDAzIDNhIGJlIDMw
IGY0IGMxIDI0IDMyIDg5IGE2IDYxIGU2IDRkIDc4IDE4IGI1IDU2IDk4IDI4IDA2IDg4IDA5IDcx
IDM1IDk2IDhjIDZkIDRiIDAyIDk0IDk2IGQ4IDVjIGFiIDJhIDY3IGU0IDY5IDY3IDM3IDc4IDFm
IDcwIGU0IDM5IDJjIDdkIGY3IDFiIGJkIDZjIDkyIDQ2IDU5IDQ3IGYwIDI5IGExIGRlIDQ4IDE2
IDBhIGNlIGQxIDFiIDU3IDIxIGIxIGNkIDI1IDAzIDlmIGUyIGMxIDZjIDJiIDM4IGRlIDczIGRm
IDNiIDlhIDgzIGUzIGVhIDc1IDVmIGQwIGNmIGU1IDFjIGEwIDZiIDYxIGZhIGRmIDZkIDg0IDY3
IDdmIDk1XSciKTsKKworICAgIGRlYnVnKCJcblZlcmlmeWluZyB0aGUgc2lnbmF0dXJlLi4uIik7
CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KHsgbmFtZTogIlJTQVNTQS1QS0NTMS12
MV81IiwgaGFzaDogIlNIQS0yNTYiIH0sIHB1YmxpY0tleSwgc2lnbmF0dXJlLCBbZGF0YV0pOwor
fSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgICB2ZXJpZmljYXRpb25SZXN1bHQgPSByZXN1
bHQ7CisgICAgc2hvdWxkQmUoInZlcmlmaWNhdGlvblJlc3VsdCIsICJ0cnVlIik7CisgICAgZGVi
dWcoIlxuVmVyaWZ5aW5nIGEgYmFkIHNpZ25hdHVyZS4uLiIpOworICAgIHJldHVybiBjcnlwdG8u
c3VidGxlLnZlcmlmeSh7IG5hbWU6ICJSU0FTU0EtUEtDUzEtdjFfNSIsIGhhc2g6ICJTSEEtMjU2
IiB9LCBwdWJsaWNLZXksIG5ldyBVaW50OEFycmF5KDI1NiksIFtkYXRhXSk7Cit9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgIHZlcmlmaWNhdGlvblJlc3VsdCA9IHJlc3VsdDsKKyAgICBz
aG91bGRCZSgidmVyaWZpY2F0aW9uUmVzdWx0IiwgImZhbHNlIik7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LXNpZ24tdmVy
aWZ5Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0
ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>